tag:blogger.com,1999:blog-77937810442895463612024-03-05T21:21:45.740-08:00Business Systems AnalysisA blog that tells how to write requirements, develop Android apps & games, work with business intelligence data, work with medical data, develop software, write test cases for user story scenarios, develop SharePoint apps, develop with the Unity Game engine, create plugins for social networking apps, build apps on a cloud platform, etc.Anonymoushttp://www.blogger.com/profile/11770164970801071498noreply@blogger.comBlogger43125tag:blogger.com,1999:blog-7793781044289546361.post-41068279845664522502018-01-10T14:44:00.001-08:002018-01-10T14:44:24.068-08:00SDLC for Kids Lesson 2: Requirements Analysis<div dir="ltr" style="text-align: left;" trbidi="on">
<h1 style="text-align: left;">
<span style="font-family: "verdana" , sans-serif;"><span style="color: red;">SDLC for Kids<br />Lesson 2: Requirements Analysis</span></span></h1>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2gDUHbwgGq4OzSqPb-i7E_RKW8ikKQOW4qjL11HaWQJEzC59phQSETiHk7JLEPceytLnVGZYGi50CnzM2khlVMMD3AKpqfiHiGzbnenbh6nXRyzrmloDKt7xiLbie8S_m_SBdCMysLhA/s1600/SDLC_for_kids_sm.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="527" data-original-width="414" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2gDUHbwgGq4OzSqPb-i7E_RKW8ikKQOW4qjL11HaWQJEzC59phQSETiHk7JLEPceytLnVGZYGi50CnzM2khlVMMD3AKpqfiHiGzbnenbh6nXRyzrmloDKt7xiLbie8S_m_SBdCMysLhA/s640/SDLC_for_kids_sm.jpg" width="500" /></a></div>
<br />
<table border="0" cellpadding="0" cellspacing="0"><tbody>
<tr><td style="padding: 0in 5.4pt; width: 104.1pt;" valign="top" width="139"><b><span style="color: #6aa84f;"><span style="font-size: large;">Learning Objectives (Partial)
</span></span></b></td><td style="padding: 0in 5.4pt; width: 374.7pt;" valign="top" width="500"><div>
<span style="font-size: large;">What is a Use Case</span></div>
<div>
<span style="font-size: large;">Who Creates Use Cases </span></div>
<div>
<span style="font-size: large;">What is a Computer</span></div>
<div>
<span style="font-size: large;">What a Computer Chip Does</span></div>
<div>
<span style="font-size: large;">What is Software</span></div>
<div>
<span style="font-size: large;">How is Software Created</span></div>
</td>
</tr>
<tr><td style="padding: 0in 5.4pt; width: 104.1pt;" valign="top" width="139"><h2>
<span style="color: #6aa84f; font-size: large;">Vocabulary Words (Partial)
</span></h2>
</td>
<td style="padding: 0in 5.4pt; width: 374.7pt;" valign="top" width="500"><div>
<span style="font-size: large;">Document</span></div>
<div>
<span style="font-size: large;">Use Case</span></div>
<div>
<span style="font-size: large;">User</span></div>
<div>
<span style="font-size: large;">Business Analyst</span></div>
<div>
<span style="font-size: large;">Software</span></div>
<div>
<span style="font-size: large;">Computer Chip</span></div>
</td>
</tr>
</tbody>
</table>
<br />
<h1>
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><span style="color: red;">Lab 1: Tutorial - Anna Creates Use Cases</span></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeMglRMAyJEIqKRJ3Kq2gY8FuH4ZNULw-JOGamDMWbEX_G9pEnAcXD0If2bWYiL-9MKkFcsO6o9Cd1AxSB878AFV_isGFM2oeohuyPt0EsNHk-RMePXTSJh6GRAMSfDSbkPP2dJtb258w/s1600/Ana_thinking.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="350" data-original-width="538" height="208" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeMglRMAyJEIqKRJ3Kq2gY8FuH4ZNULw-JOGamDMWbEX_G9pEnAcXD0If2bWYiL-9MKkFcsO6o9Cd1AxSB878AFV_isGFM2oeohuyPt0EsNHk-RMePXTSJh6GRAMSfDSbkPP2dJtb258w/s320/Ana_thinking.png" width="320" /></a></div>
<span style="font-size: large;">This is a computer. A computer has a brain.</span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUZNN4MITG02v0u4ubxm2AoFbRR4mBEgtGrT-u6DavSbxu5JCyCqKn4ZA435Z4m_eQrv3jZngrgYtX19AjG2IfgyubSe-_MQxMRgQTmQH5RLLegj5uBZfqKCXhZpPewfSWDA_bQRK7DvU/s1600/computer.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="383" data-original-width="386" height="317" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUZNN4MITG02v0u4ubxm2AoFbRR4mBEgtGrT-u6DavSbxu5JCyCqKn4ZA435Z4m_eQrv3jZngrgYtX19AjG2IfgyubSe-_MQxMRgQTmQH5RLLegj5uBZfqKCXhZpPewfSWDA_bQRK7DvU/s320/computer.png" width="320" /></a></div>
<span style="font-size: large;">
The computer’s brain is called a chip. A computer chip can think <br /> some.</span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIXRnYDoHGiHerJSt_OOsjf9Y21FC3bTEwniKsSJ0n9j5zi94oGM6P8c4Ygpp7hgreIc0pM-Pn0geEiPrM_RM-ycD3GlcY6G8a0oU72jFb5JVQ7me3kcJrnp0OgD-8rTrtf6Ur0HyLjyk/s1600/computerchip.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="359" data-original-width="364" height="315" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIXRnYDoHGiHerJSt_OOsjf9Y21FC3bTEwniKsSJ0n9j5zi94oGM6P8c4Ygpp7hgreIc0pM-Pn0geEiPrM_RM-ycD3GlcY6G8a0oU72jFb5JVQ7me3kcJrnp0OgD-8rTrtf6Ur0HyLjyk/s320/computerchip.png" width="320" /></a></div>
<span style="font-size: large;">
But a computer’s chip is not as smart as people.</span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFfcSlbUU9h6QYyQleMuGj237WYB4-6lqh5gKysTGXSEa3WWcup33ECxY6dcgyNbq-r41zsTrHSXh2slRKlN6jy-ng3AYmgF8mESStzaKhbF-0-kJdZOIdNFB2mXiH-uz3Axi9-CGdy94/s1600/boythinking.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="396" data-original-width="287" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFfcSlbUU9h6QYyQleMuGj237WYB4-6lqh5gKysTGXSEa3WWcup33ECxY6dcgyNbq-r41zsTrHSXh2slRKlN6jy-ng3AYmgF8mESStzaKhbF-0-kJdZOIdNFB2mXiH-uz3Axi9-CGdy94/s320/boythinking.png" width="231" /></a></div>
<span style="font-size: large;">
Sometimes mom or dad tells you what to do.</span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgz_P_uAuf59ktadDzr09vG_vWYQX-ZbkpmN21R4TNKzhgXGlfrx8XgQaiMMde8rPetxcnQEmgcJ4gLCrQWnbu3TVrsIyQQFAj0-K7ScNCZvKG54xpsKZR_y-9XQCefDHjQr9uZ14a4nGI/s1600/fatherson.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="367" data-original-width="413" height="284" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgz_P_uAuf59ktadDzr09vG_vWYQX-ZbkpmN21R4TNKzhgXGlfrx8XgQaiMMde8rPetxcnQEmgcJ4gLCrQWnbu3TVrsIyQQFAj0-K7ScNCZvKG54xpsKZR_y-9XQCefDHjQr9uZ14a4nGI/s320/fatherson.png" width="320" /></a></div>
<span style="font-size: large;">
Sometimes you think of things to do.</span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBsceGV_yGKwmXyuwnUMUryoZ8t7AqPEaY4bXtJpHBvI5-PlZk13CVKqqFljvN2CyyDypLoFGtMgD43x8gcZntaF4kATbH33Zygo6eMnck9MvvGzxcx_tUu19Bg4zJ88ko0ul3C2S42cY/s1600/thinking.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="407" data-original-width="384" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBsceGV_yGKwmXyuwnUMUryoZ8t7AqPEaY4bXtJpHBvI5-PlZk13CVKqqFljvN2CyyDypLoFGtMgD43x8gcZntaF4kATbH33Zygo6eMnck9MvvGzxcx_tUu19Bg4zJ88ko0ul3C2S42cY/s320/thinking.png" width="301" /></a></div>
<span style="font-size: large;">
A computer cannot think of things to do without instructions. Instructions tell the computer what to do. </span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEhSlic3tHskvcAKauNxLpDeTUjU9c-VMLab0FqetJlHLOELMDRjRO1IOo4WtvbSMfRZJCv4aGcoBiuqHjtPB0kYqbo_bME2X9rJik0nnxPWglKLv6YjElxVX4zgNh17BnFFUFsyXYvwA/s1600/computerthinking.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="483" data-original-width="296" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEhSlic3tHskvcAKauNxLpDeTUjU9c-VMLab0FqetJlHLOELMDRjRO1IOo4WtvbSMfRZJCv4aGcoBiuqHjtPB0kYqbo_bME2X9rJik0nnxPWglKLv6YjElxVX4zgNh17BnFFUFsyXYvwA/s320/computerthinking.png" width="196" /></a></div>
<span style="font-size: large;">Ana knows how to create a special document. </span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJb7WCJ4m3o9Ma9Pan77RyPzYhyr1nC_lHwmiMhzCYBg8gY4yrGKgmFEJT2D3uY7d3v3mpYabW7sdd2jXiW0EhFP4Wc1SteZXuyqjHlzdQsXad_DqTdZKE0sL1xlvsjM2-1m8LAacBSE4/s1600/ana.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="395" data-original-width="385" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJb7WCJ4m3o9Ma9Pan77RyPzYhyr1nC_lHwmiMhzCYBg8gY4yrGKgmFEJT2D3uY7d3v3mpYabW7sdd2jXiW0EhFP4Wc1SteZXuyqjHlzdQsXad_DqTdZKE0sL1xlvsjM2-1m8LAacBSE4/s320/ana.png" width="311" /></a></div>
<span style="font-size: large;">The special document includes a group of action words. The group of action words tells what actions a computer should perform. </span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivL9XeQGfjsPWi2Vw6dT-HD3R3KlqWN42_Tl2YzmuAOKDNt6w3LmWDN5oziGEhQLD2A__hOicUqBix4rzM-tcy5Fzm8pKbf9rBeRNJdrJmsK8IydQPywNTqlyE9al6GFGjrnSdF6RRdvc/s1600/document.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="509" data-original-width="378" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivL9XeQGfjsPWi2Vw6dT-HD3R3KlqWN42_Tl2YzmuAOKDNt6w3LmWDN5oziGEhQLD2A__hOicUqBix4rzM-tcy5Fzm8pKbf9rBeRNJdrJmsK8IydQPywNTqlyE9al6GFGjrnSdF6RRdvc/s320/document.png" width="237" /></a></div>
<span style="font-size: large;">
At work Ana is a Business Analyst.</span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJb7WCJ4m3o9Ma9Pan77RyPzYhyr1nC_lHwmiMhzCYBg8gY4yrGKgmFEJT2D3uY7d3v3mpYabW7sdd2jXiW0EhFP4Wc1SteZXuyqjHlzdQsXad_DqTdZKE0sL1xlvsjM2-1m8LAacBSE4/s1600/ana.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="395" data-original-width="385" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJb7WCJ4m3o9Ma9Pan77RyPzYhyr1nC_lHwmiMhzCYBg8gY4yrGKgmFEJT2D3uY7d3v3mpYabW7sdd2jXiW0EhFP4Wc1SteZXuyqjHlzdQsXad_DqTdZKE0sL1xlvsjM2-1m8LAacBSE4/s320/ana.png" width="311" /></a></div>
<span style="font-size: large;">
Ana calls the group of action words a use case.</span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOyqBY5De45tg13pNyuBbNTlBI_e-EqJWdFfbYreQ7lQU0RXC2CRfQzG0dqQp6IlVk5WkEo32KvlcUAzqCWxCT3tHbsCMCWOfbT-2WaIe3gnmMYjGPAOlE-dzOlAC3IIzKG92SUD6uwgs/s1600/usecasediagram.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="272" data-original-width="248" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOyqBY5De45tg13pNyuBbNTlBI_e-EqJWdFfbYreQ7lQU0RXC2CRfQzG0dqQp6IlVk5WkEo32KvlcUAzqCWxCT3tHbsCMCWOfbT-2WaIe3gnmMYjGPAOlE-dzOlAC3IIzKG92SUD6uwgs/s1600/usecasediagram.png" /></a></div>
<span style="font-size: large;">
Ana writes a use case if she wants the computer to play a game. The use case looks like this: <b style="mso-bidi-font-weight: normal;">UC1. Play a Game.</b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJFWD0cn6-O0pQazDvWlxqdzcHA77UylNr14uUpMw4p-vIiE1wolVz0crsY3U7x_oMp7p-Y5_mmdQ2r8OzTeapMoEOxc8jEILA507h6xNsWFzwOIHZcRiX2VcYxZdDDkGatQtdfSQy7QQ/s1600/playchess.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="351" data-original-width="450" height="249" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJFWD0cn6-O0pQazDvWlxqdzcHA77UylNr14uUpMw4p-vIiE1wolVz0crsY3U7x_oMp7p-Y5_mmdQ2r8OzTeapMoEOxc8jEILA507h6xNsWFzwOIHZcRiX2VcYxZdDDkGatQtdfSQy7QQ/s320/playchess.png" width="320" /></a></div>
<span style="font-size: large;">
Ana writes a use case if she wants the computer to play a movie. The use case looks like this: <b style="mso-bidi-font-weight: normal;">UC2. Play a movie.</b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYFEr-Ruq0rqclLX06EjO4CpGx_Ld0oR3EPQcmIqa2gxoqf99CLmhRfnhwiMkgoztwy5xR2PPxUk9y2V-xAd5evLQNX3J517UG3aLTOgvNqZPtaJJhOcHMNTcZEv9_xxIlNKhngOO5zcs/s1600/watchmovie.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="363" data-original-width="320" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYFEr-Ruq0rqclLX06EjO4CpGx_Ld0oR3EPQcmIqa2gxoqf99CLmhRfnhwiMkgoztwy5xR2PPxUk9y2V-xAd5evLQNX3J517UG3aLTOgvNqZPtaJJhOcHMNTcZEv9_xxIlNKhngOO5zcs/s320/watchmovie.png" width="282" /></a></div>
<span style="font-size: large;">Ana writes a use case if she wants the computer to play music. The use case looks like this: <b>UC3. Play music</b>.</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJb7WCJ4m3o9Ma9Pan77RyPzYhyr1nC_lHwmiMhzCYBg8gY4yrGKgmFEJT2D3uY7d3v3mpYabW7sdd2jXiW0EhFP4Wc1SteZXuyqjHlzdQsXad_DqTdZKE0sL1xlvsjM2-1m8LAacBSE4/s1600/ana.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="395" data-original-width="385" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJb7WCJ4m3o9Ma9Pan77RyPzYhyr1nC_lHwmiMhzCYBg8gY4yrGKgmFEJT2D3uY7d3v3mpYabW7sdd2jXiW0EhFP4Wc1SteZXuyqjHlzdQsXad_DqTdZKE0sL1xlvsjM2-1m8LAacBSE4/s320/ana.png" width="311" /></a></div>
<span style="font-size: large;">After Ana writes the use cases she needs Lenny’s help. Lenny knows special code.</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhayPgegzD-KpMVzDdQ9CjTs8eJ-X5SomvRS0JEZfHGFaSLmj9EqmxgBfCvyLx37YsudeSWy7nINwk67rrNwvfF8EmUWZIHwRSFQrTlJltW9OkS3T7dV3R6e3eiuwsnSV0r1UR6EgFd-F0/s1600/lenny.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="319" data-original-width="518" height="246" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhayPgegzD-KpMVzDdQ9CjTs8eJ-X5SomvRS0JEZfHGFaSLmj9EqmxgBfCvyLx37YsudeSWy7nINwk67rrNwvfF8EmUWZIHwRSFQrTlJltW9OkS3T7dV3R6e3eiuwsnSV0r1UR6EgFd-F0/s400/lenny.png" width="400" /></a></div>
<br />
<span style="font-size: large;">Lenny can use special code and his tool to turn use cases into software. The computer can read software like you read books.</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCSDICCZYIRdobZBNYlQcAKgeXDUt91UomIGnRmIfNylVgcdYty-fTM8zkL8jkXY3D8YHPD7ZFMIwzpqD9i86sizNiyfKkgrvWekOJU1TO2COr1XEOtyHA8BbZtqcqRj9hi2pQKPX-9qM/s1600/readbook.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="333" data-original-width="358" height="297" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCSDICCZYIRdobZBNYlQcAKgeXDUt91UomIGnRmIfNylVgcdYty-fTM8zkL8jkXY3D8YHPD7ZFMIwzpqD9i86sizNiyfKkgrvWekOJU1TO2COr1XEOtyHA8BbZtqcqRj9hi2pQKPX-9qM/s320/readbook.png" width="320" /></a></div>
<br />
<span style="font-size: large;">Software tells the computer what to do. Software can tell the computer to play a game.</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJFWD0cn6-O0pQazDvWlxqdzcHA77UylNr14uUpMw4p-vIiE1wolVz0crsY3U7x_oMp7p-Y5_mmdQ2r8OzTeapMoEOxc8jEILA507h6xNsWFzwOIHZcRiX2VcYxZdDDkGatQtdfSQy7QQ/s1600/playchess.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="351" data-original-width="450" height="249" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJFWD0cn6-O0pQazDvWlxqdzcHA77UylNr14uUpMw4p-vIiE1wolVz0crsY3U7x_oMp7p-Y5_mmdQ2r8OzTeapMoEOxc8jEILA507h6xNsWFzwOIHZcRiX2VcYxZdDDkGatQtdfSQy7QQ/s320/playchess.png" width="320" /></a></div>
<br />
<table>
</table>
<span style="font-size: large;">Software can tell the computer to play a movie.</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUu-IKgfyJ-1GJFW6PcmaD-FliddzgnQqnnfXIClQ_gz4gowAjJZrhaiel1fvJsH_SuJCKfAfWTd_VsxPwAOrpb-O_CYYmv_i8IWuD_nTECQiqtwtxQKRq6JqyYfEqA_HO_xubH5fGix4/s1600/watching_movie.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="325" data-original-width="325" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUu-IKgfyJ-1GJFW6PcmaD-FliddzgnQqnnfXIClQ_gz4gowAjJZrhaiel1fvJsH_SuJCKfAfWTd_VsxPwAOrpb-O_CYYmv_i8IWuD_nTECQiqtwtxQKRq6JqyYfEqA_HO_xubH5fGix4/s320/watching_movie.png" width="320" /></a></div>
<span style="font-size: large;">Software can tell the computer to play music.</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6BOyTeVazewV04CizSKWL5Uu5BQIb2seoyB7UH9TpLEVJU-qGtQUREpfye8WlWQ_k7yfwtres7nek7dbTxhvuJ1IUKjdK90umaEicBDDCKDzvWEmRN7aqHB6aVMKBv5gb8SIwwXnmEIE/s1600/playing_music.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="325" data-original-width="325" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6BOyTeVazewV04CizSKWL5Uu5BQIb2seoyB7UH9TpLEVJU-qGtQUREpfye8WlWQ_k7yfwtres7nek7dbTxhvuJ1IUKjdK90umaEicBDDCKDzvWEmRN7aqHB6aVMKBv5gb8SIwwXnmEIE/s320/playing_music.png" width="320" /></a></div>
<span style="font-size: large;">Software can tell computers to do a lot of things. Just remember, Ana writes action words.</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeMglRMAyJEIqKRJ3Kq2gY8FuH4ZNULw-JOGamDMWbEX_G9pEnAcXD0If2bWYiL-9MKkFcsO6o9Cd1AxSB878AFV_isGFM2oeohuyPt0EsNHk-RMePXTSJh6GRAMSfDSbkPP2dJtb258w/s1600/Ana_thinking.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="350" data-original-width="538" height="208" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeMglRMAyJEIqKRJ3Kq2gY8FuH4ZNULw-JOGamDMWbEX_G9pEnAcXD0If2bWYiL-9MKkFcsO6o9Cd1AxSB878AFV_isGFM2oeohuyPt0EsNHk-RMePXTSJh6GRAMSfDSbkPP2dJtb258w/s320/Ana_thinking.png" width="320" /></a></div>
<span style="font-size: large;">The action words are use cases.</span>
<span style="font-size: large;">The use cases tell what a computer should do.</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5JO7LTRxf_8SVCKMNzTS2FC2VBSgGigIeCanT-qV78nmUB1a1QfEcrQMXuUxJFB-fhiaoQaREfEu9Fkb2J9cXM9-Qgc21ifdd5-ASIh87cpArZyaLuQHPiivIocfR_EXDKvYr9jJoe7M/s1600/lenny.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="346" data-original-width="619" height="355" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5JO7LTRxf_8SVCKMNzTS2FC2VBSgGigIeCanT-qV78nmUB1a1QfEcrQMXuUxJFB-fhiaoQaREfEu9Fkb2J9cXM9-Qgc21ifdd5-ASIh87cpArZyaLuQHPiivIocfR_EXDKvYr9jJoe7M/s640/lenny.png" width="640" /></a></div>
<span style="font-size: large;">In this example, Ana gave the use cases to Lenny. </span><br />
<span style="font-size: large;">Lenny used a special tool to turn the use cases into software. </span><br />
<br />
<span style="color: black; font-size: large;">The computer uses a computer chip to read the software</span><span style="font-size: large; mso-bidi-font-family: "Times New Roman"; mso-bidi-font-size: 11.0pt; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin;">. </span><br />
<br />
<span style="font-size: large; mso-bidi-font-family: "Times New Roman"; mso-bidi-font-size: 11.0pt; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin;">The </span><span style="color: black; font-size: large;">software includes instructions the computer chip understands.</span><br />
<br />
<table border="0" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border-image: none; border: currentColor; mso-border-insideh: none; mso-border-insidev: none; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 1184;"><tbody>
<tr style="height: 49.5pt; mso-yfti-firstrow: yes; mso-yfti-irow: 0;"><td colspan="2" style="height: 49.5pt; padding: 0in 5.4pt; width: 6.65in;" valign="top" width="638"><span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><span style="color: red;">Lab 1: Review</span></span>
</td></tr>
<tr style="height: 8.5pt; mso-yfti-irow: 1;"><td style="height: 8.5pt; padding: 0in 5.4pt; width: 0.45in;" valign="top" width="43"><div class="NoSpace">
<span style="font-size: large;">1.</span></div>
</td><td style="height: 8.5pt; padding: 0in 5.4pt; width: 6.2in;" valign="bottom" width="595"><div class="NoSpace">
<span style="font-size: large;">A computer has a brain.</span></div>
<div class="NoSpace">
<span style="font-size: large;"><br /></span></div>
</td></tr>
<tr style="mso-yfti-irow: 2;"><td style="padding: 0in 5.4pt; width: 0.45in;" valign="top" width="43"><div class="NoSpace">
<span style="font-size: large;">2.</span></div>
</td><td style="padding: 0in 5.4pt; width: 6.2in;" valign="bottom" width="595"><div class="NoSpace">
<span style="font-size: large;">The computer’s brain is called a chip</span></div>
<div class="NoSpace">
<span style="font-size: large;"><br /></span></div>
</td></tr>
<tr style="mso-yfti-irow: 3;"><td style="padding: 0in 5.4pt; width: 0.45in;" valign="top" width="43"><div class="NoSpace">
<span style="font-size: large;">3.</span></div>
</td><td style="padding: 0in 5.4pt; width: 6.2in;" valign="bottom" width="595"><div class="NoSpace">
<span style="font-size: large;">A computer cannot think of things to do without instructions. </span></div>
<div class="NoSpace">
<span style="font-size: large;"><br /></span></div>
</td></tr>
<tr style="mso-yfti-irow: 4;"><td style="padding: 0in 5.4pt; width: 0.45in;" valign="top" width="43"><div class="NoSpace">
<span style="font-size: large;">4.</span></div>
</td><td style="padding: 0in 5.4pt; width: 6.2in;" valign="bottom" width="595"><div class="NoSpace">
<span style="font-size: large;">The instructions tell the computer what to do.</span></div>
<div class="NoSpace">
<span style="font-size: large;"><br /></span></div>
</td></tr>
<tr style="mso-yfti-irow: 5;"><td style="padding: 0in 5.4pt; width: 0.45in;" valign="top" width="43"><div class="NoSpace">
<span style="font-size: large;">5.</span></div>
</td><td style="padding: 0in 5.4pt; width: 6.2in;" valign="bottom" width="595"><div class="NoSpace">
<span style="font-size: large;">Ana knows how to create a special document.</span></div>
<div class="NoSpace">
<span style="font-size: large;"><br /></span></div>
</td></tr>
<tr style="mso-yfti-irow: 6;"><td style="padding: 0in 5.4pt; width: 0.45in;" valign="top" width="43"><div class="NoSpace">
<span class="MsoLineNumber" style="font-size: large;"><span style="mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;">6.</span></span></div>
</td><td style="padding: 0in 5.4pt; width: 6.2in;" valign="bottom" width="595"><div class="NoSpace">
<span style="font-size: large;">The special document includes a group of action words. The group of action words tells what actions a computer should perform.</span></div>
<div class="NoSpace">
<span style="font-size: large;"><br /></span></div>
</td></tr>
<tr style="mso-yfti-irow: 7;"><td style="padding: 0in 5.4pt; width: 0.45in;" valign="top" width="43"><div class="NoSpace">
<span class="MsoLineNumber" style="font-size: large;"><span style="mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;">7.</span></span></div>
</td><td style="padding: 0in 5.4pt; width: 6.2in;" valign="bottom" width="595"><div class="NoSpace">
<span style="font-size: large;">At work Ana is a Business Analyst.</span></div>
<div class="NoSpace">
<span style="font-size: large;"><br /></span></div>
</td></tr>
<tr style="mso-yfti-irow: 8;"><td style="padding: 0in 5.4pt; width: 0.45in;" valign="top" width="43"><div class="NoSpace">
<span style="font-size: large;">8.</span></div>
</td><td style="padding: 0in 5.4pt; width: 6.2in;" valign="bottom" width="595"><div class="NoSpace">
<span style="font-size: large;">Ana calls the group of action words a use case.</span></div>
<div class="NoSpace">
<span style="font-size: large;"><br /></span></div>
</td></tr>
<tr style="mso-yfti-irow: 9;"><td style="padding: 0in 5.4pt; width: 0.45in;" valign="top" width="43"><div class="NoSpace">
<span style="font-size: large;">9.</span></div>
</td><td style="padding: 0in 5.4pt; width: 6.2in;" valign="bottom" width="595"><div class="NoSpace">
<span style="font-size: large;">Ana wrote 3 use cases.</span></div>
<div class="NoSpace">
<span style="font-size: large;"><br /></span></div>
</td></tr>
<tr style="mso-yfti-irow: 10;"><td style="padding: 0in 5.4pt; width: 0.45in;" valign="top" width="43"><div class="NoSpace">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 6.2in;" valign="bottom" width="595"><div class="NoSpace">
<span style="font-size: large;">UC1. Play a Game. This use case says the computer should play a game.</span></div>
<div class="NoSpace">
<span style="font-size: large;"><br /></span></div>
<div class="NoSpace">
<span style="font-size: large;">UC2. Play a Movie. This use case says the computer should play a movie.</span></div>
<div class="NoSpace">
<span style="font-size: large;"><br /></span></div>
<div class="NoSpace">
<span style="font-size: large;">UC3. Play Music. This use case says the computer should play music.</span></div>
<div class="NoSpace">
<span style="font-size: large;"><br /></span></div>
</td></tr>
<tr style="mso-yfti-irow: 11;"><td style="padding: 0in 5.4pt; width: 0.45in;" valign="top" width="43"><div class="NoSpace">
<span style="font-size: large;">10.</span></div>
</td><td style="padding: 0in 5.4pt; width: 6.2in;" valign="bottom" width="595"><div class="NoSpace">
<span style="font-size: large;">Lenny knows special code. Lenny also has a special tool. Lenny uses his special tool to turn use cases into software.</span></div>
<div class="NoSpace">
<span style="font-size: large;"><br /></span></div>
</td></tr>
<tr style="mso-yfti-irow: 12; mso-yfti-lastrow: yes;"><td style="padding: 0in 5.4pt; width: 0.45in;" valign="top" width="43"><div class="NoSpace">
<span style="font-size: large;">11.</span></div>
</td><td style="padding: 0in 5.4pt; width: 6.2in;" valign="bottom" width="595"><div class="NoSpace">
<span style="font-size: large;">The computer can read software. Software tells the computer what to do.</span></div>
<div class="NoSpace">
<span style="font-size: large;"><br /></span></div>
</td></tr>
</tbody></table>
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><span style="color: red;">Lab 1: Assessment</span></span>
<table border="0" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border-image: none; border: currentColor; mso-border-insideh: none; mso-border-insidev: none; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 1184; width: 649px;"><tbody>
<tr style="height: 14.85pt; mso-yfti-firstrow: yes; mso-yfti-irow: 0;"><td style="height: 14.85pt; padding: 0in 5.4pt; width: 459pt;" valign="top" width="612"><div class="MsoListNumberCxSpLast" style="margin-left: 0in; mso-add-space: auto; mso-list: none; tab-stops: .5in; text-indent: 0in;">
<span style="font-size: large;">1. A computer has a _____________________. </span></div>
</td></tr>
<tr style="height: 62.1pt; mso-yfti-irow: 1;"><td style="height: 62.1pt; padding: 0in 5.4pt; width: 459pt;" valign="top" width="612"><div class="CircleAnswerBelow">
<span style="font-size: large;">(Circle the correct answer below)</span></div>
<table border="0" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: medium none currentcolor;"><tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0; mso-yfti-lastrow: yes;"><td style="padding: 0in 5.4pt; width: 54.45pt;" valign="top" width="73"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<span style="font-size: large;">a.</span></div>
</td><td style="padding: 0in 5.4pt; width: 58.95pt;" valign="top" width="79"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<span style="font-size: large;">arm</span></div>
</td><td style="padding: 0in 5.4pt; width: 51.3pt;" valign="top" width="68"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<span style="font-size: large;"><br /></span></div>
</td><td style="padding: 0in 5.4pt; width: 54.45pt;" valign="top" width="73"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<span style="font-size: large;">b.</span></div>
</td><td style="padding: 0in 5.4pt; width: 59.6pt;" valign="top" width="79"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<span style="font-size: large;">brain</span></div>
</td><td style="padding: 0in 5.4pt; width: 51.3pt;" valign="top" width="68"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<span style="font-size: large;"><br /></span></div>
</td><td style="padding: 0in 5.4pt; width: 54.45pt;" valign="top" width="73"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<span style="font-size: large;">c.</span></div>
</td><td style="padding: 0in 5.4pt; width: 58.3pt;" valign="top" width="78"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<span style="font-size: large;">leg</span></div>
</td></tr>
</tbody></table>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<span style="color: #c00000; font-size: large;"></span></div>
</td></tr>
<tr style="height: 27pt; mso-yfti-irow: 2;"><td style="height: 27pt; padding: 0in 5.4pt; width: 459pt;" valign="top" width="612"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<span style="font-size: large;">2. The computer’s brain is called a computer ______:</span></div>
</td></tr>
<tr style="height: 64.35pt; mso-yfti-irow: 3;"><td style="height: 64.35pt; padding: 0in 5.4pt; width: 27.9pt;" valign="top" width="37"><div class="CircleAnswerBelow">
<span style="font-size: large;">(Circle the correct answer below)</span></div>
<table border="0" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: medium none currentcolor;"><tbody>
<tr><td style="padding: 0in 5.4pt; width: 54.45pt;" valign="top" width="73"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<span style="font-size: large;">a.</span></div>
</td><td style="padding: 0in 5.4pt; width: 58.95pt;" valign="top" width="79"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<span style="font-size: large;">potato</span></div>
</td><td style="padding: 0in 5.4pt; width: 51.3pt;" valign="top" width="68"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 54.45pt;" valign="top" width="73"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<span style="font-size: large;">b.</span></div>
</td><td style="padding: 0in 5.4pt; width: 59.6pt;" valign="top" width="79"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<span style="font-size: large;">brick</span></div>
</td><td style="padding: 0in 5.4pt; width: 51.3pt;" valign="top" width="68"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 54.45pt;" valign="top" width="73"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<span style="font-size: large;">c.</span></div>
</td><td style="padding: 0in 5.4pt; width: 58.3pt;" valign="top" width="78"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<span style="font-size: large;">chip</span></div>
</td></tr>
</tbody></table>
</td><td style="height: 64.35pt; padding: 0in 5.4pt; width: 459pt;" valign="top" width="612"><div class="CircleAnswerBelow">
<br /></div>
<table border="0" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: medium none currentcolor;"><tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0; mso-yfti-lastrow: yes;"><td style="padding: 0in 5.4pt; width: 54.45pt;" valign="top" width="73"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 58.95pt;" valign="top" width="79"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 51.3pt;" valign="top" width="68"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<span style="font-size: large;"><br /></span></div>
</td><td style="padding: 0in 5.4pt; width: 54.45pt;" valign="top" width="73"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 59.6pt;" valign="top" width="79"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 51.3pt;" valign="top" width="68"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<span style="font-size: large;"><br /></span></div>
</td><td style="padding: 0in 5.4pt; width: 54.45pt;" valign="top" width="73"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 58.3pt;" valign="top" width="78"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<br /></div>
</td></tr>
</tbody></table>
</td></tr>
<tr style="height: 27.9pt; mso-yfti-irow: 4;"><td style="height: 27.9pt; padding: 0in 5.4pt; width: 459pt;" valign="top" width="612"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<span style="font-size: large;">3. A computer cannot think of things to do. Instead a computer needs instructions.</span></div>
</td></tr>
<tr style="height: 65.25pt; mso-yfti-irow: 5;"><td style="height: 65.25pt; padding: 0in 5.4pt; width: 27.9pt;" valign="top" width="37"><div class="CircleAnswerBelow">
<span style="font-size: large;">(Circle the correct answer below)</span></div>
<table border="0" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: medium none currentcolor;"><tbody>
<tr><td style="padding: 0in 5.4pt; width: 54.45pt;" valign="top" width="73"><div class="CircleBestAnswerCxSpFirst">
<span style="font-size: large;">a.</span></div>
</td><td style="padding: 0in 5.4pt; width: 58.95pt;" valign="top" width="79"><div class="CircleBestAnswerCxSpMiddle">
<span style="font-size: large;">True</span></div>
</td><td style="padding: 0in 5.4pt; width: 51.3pt;" valign="top" width="68"><div class="CircleBestAnswerCxSpMiddle">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 54.45pt;" valign="top" width="73"><div class="CircleBestAnswerCxSpMiddle">
<span style="font-size: large;">b.</span></div>
</td><td style="padding: 0in 5.4pt; width: 59.6pt;" valign="top" width="79"><div class="CircleBestAnswerCxSpLast">
<span style="font-size: large;">False</span></div>
</td></tr>
</tbody></table>
</td><td style="height: 65.25pt; padding: 0in 5.4pt; width: 459pt;" valign="top" width="612"><div class="CircleAnswerBelow">
<br /></div>
<table border="0" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: medium none currentcolor;"><tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0; mso-yfti-lastrow: yes;"><td style="padding: 0in 5.4pt; width: 54.45pt;" valign="top" width="73"><div class="CircleBestAnswerCxSpFirst">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 58.95pt;" valign="top" width="79"><div class="CircleBestAnswerCxSpMiddle">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 51.3pt;" valign="top" width="68"><div class="CircleBestAnswerCxSpMiddle">
<span style="font-size: large;"><br /></span></div>
</td><td style="padding: 0in 5.4pt; width: 54.45pt;" valign="top" width="73"><div class="CircleBestAnswerCxSpMiddle">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 59.6pt;" valign="top" width="79"><div class="CircleBestAnswerCxSpLast">
<br /></div>
</td></tr>
</tbody></table>
</td></tr>
<tr style="height: 31.5pt; mso-yfti-irow: 6;"><td style="height: 31.5pt; padding: 0in 5.4pt; width: 459pt;" valign="top" width="612"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<span style="font-size: large;">4. The instructions tell the computer what to do.</span></div>
</td></tr>
<tr style="height: 64.35pt; mso-yfti-irow: 7;"><td style="height: 64.35pt; padding: 0in 5.4pt; width: 27.9pt;" valign="top" width="37"><div class="CircleAnswerBelow">
<span style="font-size: large;">(Circle the correct answer below)</span></div>
<table border="0" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: medium none currentcolor;"><tbody>
<tr><td style="padding: 0in 5.4pt; width: 54.45pt;" valign="top" width="73"><div class="CircleBestAnswerCxSpFirst">
<span style="font-size: large;">a.</span></div>
</td><td style="padding: 0in 5.4pt; width: 58.95pt;" valign="top" width="79"><div class="CircleBestAnswerCxSpMiddle">
<span style="font-size: large;">True</span></div>
</td><td style="padding: 0in 5.4pt; width: 51.3pt;" valign="top" width="68"><div class="CircleBestAnswerCxSpMiddle">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 54.45pt;" valign="top" width="73"><div class="CircleBestAnswerCxSpMiddle">
<span style="font-size: large;">b.</span></div>
</td><td style="padding: 0in 5.4pt; width: 59.6pt;" valign="top" width="79"><div class="CircleBestAnswerCxSpMiddle">
<span style="font-size: large;">False</span></div>
</td></tr>
</tbody></table>
</td><td style="height: 64.35pt; padding: 0in 5.4pt; width: 459pt;" valign="top" width="612"><div class="CircleAnswerBelow">
<br /></div>
<table border="0" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: medium none currentcolor;"><tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0; mso-yfti-lastrow: yes;"><td style="padding: 0in 5.4pt; width: 54.45pt;" valign="top" width="73"><div class="CircleBestAnswerCxSpFirst">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 58.95pt;" valign="top" width="79"><div class="CircleBestAnswerCxSpMiddle">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 51.3pt;" valign="top" width="68"><div class="CircleBestAnswerCxSpMiddle">
<span style="font-size: large;"><br /></span></div>
</td><td style="padding: 0in 5.4pt; width: 54.45pt;" valign="top" width="73"><div class="CircleBestAnswerCxSpMiddle">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 59.6pt;" valign="top" width="79"><div class="CircleBestAnswerCxSpMiddle">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 51.3pt;" valign="top" width="68"><div class="CircleBestAnswerCxSpMiddle">
<span style="font-size: large;"><br /></span></div>
</td><td style="padding: 0in 5.4pt; width: 54.45pt;" valign="top" width="73"><div class="CircleBestAnswerCxSpMiddle">
<span style="font-size: large;"><br /></span></div>
</td><td style="padding: 0in 5.4pt; width: 58.3pt;" valign="top" width="78"><div class="CircleBestAnswerCxSpLast">
<span style="font-size: large;"><br /></span></div>
</td></tr>
</tbody></table>
</td></tr>
<tr style="height: 25.65pt; mso-yfti-irow: 8;"><td style="height: 25.65pt; padding: 0in 5.4pt; width: 459pt;" valign="top" width="612"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<span style="font-size: large;">5. Ana knows how to create a use case.</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<span style="font-size: large;">(Circle the correct answer below)</span></div>
<table border="0" cellpadding="0" cellspacing="0" class="MsoTableGrid"><tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0; mso-yfti-lastrow: yes;"><td style="padding: 0in 5.4pt; width: 54.45pt;" valign="top" width="73"><div class="CircleBestAnswerCxSpFirst" style="page-break-after: avoid;">
<span style="font-size: large;">a.</span></div>
</td><td style="padding: 0in 5.4pt; width: 58.95pt;" valign="top" width="79"><div class="CircleBestAnswerCxSpMiddle" style="page-break-after: avoid;">
<span style="font-size: large;">True</span></div>
</td><td style="padding: 0in 5.4pt; width: 51.3pt;" valign="top" width="68"><div class="CircleBestAnswerCxSpMiddle" style="page-break-after: avoid;">
<span style="font-size: large;"><br /></span></div>
</td><td style="padding: 0in 5.4pt; width: 54.45pt;" valign="top" width="73"><div class="CircleBestAnswerCxSpMiddle" style="page-break-after: avoid;">
<span style="font-size: large;">b.</span></div>
</td><td style="padding: 0in 5.4pt; width: 59.6pt;" valign="top" width="79"><div class="CircleBestAnswerCxSpMiddle" style="page-break-after: avoid;">
<span style="font-size: large;">False</span></div>
</td><td style="padding: 0in 5.4pt; width: 51.3pt;" valign="top" width="68"><div class="CircleBestAnswerCxSpMiddle" style="page-break-after: avoid;">
<span style="font-size: large;"><br /></span></div>
</td></tr>
</tbody></table>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<span style="font-size: large;"><br /></span></div>
</td></tr>
<tr style="height: 0.75in; mso-yfti-irow: 10;"><td style="height: 0.75in; padding: 0in 5.4pt; width: 459pt;" valign="top" width="612"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<span style="font-size: large;">6. Ana creates a special document. The document has a group of action words. The group of action words tells what actions a:</span></div>
</td></tr>
<tr style="height: 103.5pt; mso-yfti-irow: 11;"><td style="height: 103.5pt; padding: 0in 5.4pt; width: 27.9pt;" valign="top" width="37"><div class="CircleAnswerBelow">
<span style="font-size: large;">(Circle the correct answer below)</span></div>
<table border="0" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: medium none currentcolor; width: 475px;"><tbody>
<tr><td style="padding: 0in 5.4pt; width: 47.55pt;" valign="top" width="63"><div class="CircleBestAnswerCxSpFirst">
<span style="font-size: large;">a.</span></div>
</td><td style="padding: 0in 5.4pt; width: 308.85pt;" valign="top" width="412"><div class="CircleBestAnswerCxSpLast">
<span style="font-size: large;">Computer should perform.</span></div>
</td></tr>
<tr><td style="padding: 0in 5.4pt; width: 47.55pt;" valign="top" width="63"><div class="CircleBestAnswerCxSpFirst">
<span style="font-size: large;">b.</span></div>
</td><td style="padding: 0in 5.4pt; width: 308.85pt;" valign="top" width="412"><div class="CircleBestAnswerCxSpLast">
<span style="font-size: large;">Dog can perform.</span></div>
</td></tr>
<tr><td style="padding: 0in 5.4pt; width: 47.55pt;" valign="top" width="63"><div class="CircleBestAnswerCxSpFirst">
<span style="font-size: large;">c.</span></div>
</td><td style="padding: 0in 5.4pt; width: 308.85pt;" valign="top" width="412"><div class="CircleBestAnswerCxSpLast">
<span style="font-size: large;">Horse can perform</span></div>
</td></tr>
</tbody></table>
</td><td style="height: 103.5pt; padding: 0in 5.4pt; width: 459pt;" valign="top" width="612"><div class="CircleAnswerBelow">
<br /></div>
<table border="0" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: medium none currentcolor; width: 475px;"><tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0;"><td style="padding: 0in 5.4pt; width: 47.55pt;" valign="top" width="63"><div class="CircleBestAnswerCxSpFirst">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 308.85pt;" valign="top" width="412"><div class="CircleBestAnswerCxSpLast">
<br /></div>
</td></tr>
<tr style="mso-yfti-irow: 1;"><td style="padding: 0in 5.4pt; width: 47.55pt;" valign="top" width="63"><div class="CircleBestAnswerCxSpFirst">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 308.85pt;" valign="top" width="412"><div class="CircleBestAnswerCxSpLast">
<br /></div>
</td></tr>
<tr style="mso-yfti-irow: 2; mso-yfti-lastrow: yes;"><td style="padding: 0in 5.4pt; width: 47.55pt;" valign="top" width="63"><div class="CircleBestAnswerCxSpFirst">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 308.85pt;" valign="top" width="412"><div class="CircleBestAnswerCxSpLast">
<br /></div>
</td></tr>
</tbody></table>
</td></tr>
<tr style="height: 25.65pt; mso-yfti-irow: 12;"><td style="height: 25.65pt; padding: 0in 5.4pt; width: 459pt;" valign="top" width="612"><div class="CircleBestAnswer">
<span class="MsoLineNumber" style="font-size: large;"><span style="mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;">7. At work Ana is a:</span></span></div>
</td></tr>
<tr style="mso-yfti-irow: 13;"><td style="padding: 0in 5.4pt; width: 459pt;" valign="top" width="612"><div class="CircleAnswerBelow">
<span style="font-size: large;">(Write the correct answer below) </span></div>
<div class="CircleBestAnswerCxSpFirst">
<span style="font-size: large;">_____________________________</span></div>
<div class="CircleBestAnswerCxSpLast">
<span style="font-size: large;"><br /></span></div>
</td></tr>
<tr style="height: 34.65pt; mso-yfti-irow: 14;"><td style="height: 34.65pt; padding: 0in 5.4pt; width: 459pt;" valign="top" width="612"><div class="CircleBestAnswer">
<span style="font-size: large;">8. Ana calls the group of action words a:</span></div>
</td></tr>
<tr style="height: 0.95in; mso-yfti-irow: 15;"><td style="height: 0.95in; padding: 0in 5.4pt; width: 459pt;" valign="top" width="612"><div class="CircleAnswerBelow">
<span style="font-size: large;">(Circle the correct answer below)</span></div>
<table border="0" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: medium none currentcolor; width: 652px;"><tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0; mso-yfti-lastrow: yes;"><td style="padding: 0in 5.4pt; width: 47.55pt;" valign="top" width="63"><div class="CircleBestAnswerCxSpFirst">
<span style="font-size: large;">a.</span></div>
</td><td style="padding: 0in 5.4pt; width: 98.8pt;" valign="top" width="132"><div class="CircleBestAnswerCxSpMiddle">
<span style="font-size: large;">Car</span></div>
</td><td style="padding: 0in 5.4pt; width: 40.35pt;" valign="top" width="54"><div class="CircleBestAnswerCxSpMiddle">
<span style="font-size: large;"><br /></span></div>
</td><td style="padding: 0in 5.4pt; width: 47.6pt;" valign="top" width="63"><div class="CircleBestAnswerCxSpMiddle">
<span style="font-size: large;">b.</span></div>
</td><td style="padding: 0in 5.4pt; width: 108.6pt;" valign="top" width="145"><div class="CircleBestAnswerCxSpMiddle">
<span style="font-size: large;">Use Case</span></div>
</td><td style="padding: 0in 5.4pt; width: 40.4pt;" valign="top" width="54"><div class="CircleBestAnswerCxSpMiddle">
<span style="font-size: large;"><br /></span></div>
</td><td style="padding: 0in 5.4pt; width: 47.6pt;" valign="top" width="63"><div class="CircleBestAnswerCxSpMiddle">
<span style="font-size: large;">c.</span></div>
</td><td style="padding: 0in 5.4pt; width: 58.35pt;" valign="top" width="78"><div class="CircleBestAnswerCxSpLast">
<span style="font-size: large;">Dog</span></div>
</td></tr>
</tbody></table>
</td></tr>
<tr style="mso-yfti-irow: 16;"><td style="padding: 0in 5.4pt; width: 459pt;" valign="top" width="612"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<span style="font-size: large;">9. Write the use case that says the computer should play a game: </span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<span style="font-size: large;">___________________________________</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<span style="font-size: large;"><br /></span></div>
</td></tr>
<tr style="mso-yfti-irow: 17;"><td style="padding: 0in 5.4pt; width: 459pt;" valign="top" width="612"><div class="MsoListNumberCxSpMiddle" style="margin-left: 0in; mso-add-space: auto; mso-list: none; tab-stops: .5in; text-indent: 0in;">
<span style="font-size: large;">10. Write the use case that says the computer should play a movie: ___________________________________</span></div>
<div class="MsoListNumberCxSpLast" style="margin-left: 0in; mso-add-space: auto; mso-list: none; tab-stops: .5in; text-indent: 0in;">
<span style="font-size: large;"><br /></span></div>
</td></tr>
<tr style="mso-yfti-irow: 18;"><td style="padding: 0in 5.4pt; width: 459pt;" valign="top" width="612"><div class="MsoListNumberCxSpMiddle" style="margin-left: 0in; mso-add-space: auto; mso-list: none; tab-stops: .5in; text-indent: 0in;">
<span style="font-size: large;">11. Write the use case that says the computer should play a game: </span></div>
<div class="MsoListNumberCxSpLast" style="margin-left: 0in; mso-add-space: auto; mso-list: none; tab-stops: .5in; text-indent: 0in;">
<span style="font-size: large;">___________________________________</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
<span style="font-size: large;"><br /></span></div>
</td></tr>
<tr style="mso-yfti-irow: 19;"><td style="padding: 0in 5.4pt; width: 459pt;" valign="top" width="612"><div class="MsoListNumberCxSpLast" style="margin-left: 0in; mso-add-space: auto; mso-list: none; tab-stops: .5in; text-indent: 0in;">
<span style="font-size: large;">12. Lenny knows special code. Lenny also has a: </span></div>
</td></tr>
<tr style="height: 59.85pt; mso-yfti-irow: 20;"><td style="height: 59.85pt; padding: 0in 5.4pt; width: 27.9pt;" valign="top" width="37"><div class="CircleAnswerBelow">
<span style="font-size: large;">(Circle the correct answer below)</span></div>
<table border="0" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: medium none currentcolor; width: 574px;"><tbody>
<tr><td style="padding: 0in 5.4pt; width: 41.4pt;" valign="top" width="55"><div class="CircleBestAnswerCxSpFirst" style="page-break-after: avoid;">
<span style="font-size: large;">a.</span></div>
</td><td style="padding: 0in 5.4pt; width: 135pt;" valign="top" width="180"><div class="CircleBestAnswerCxSpMiddle" style="page-break-after: avoid;">
<span style="font-size: large;">Special Tool</span></div>
</td><td style="padding: 0in 5.4pt; width: 40.5pt;" valign="top" width="54"><div class="CircleBestAnswerCxSpMiddle" style="page-break-after: avoid;">
<span style="font-size: large;">b.</span></div>
</td><td style="padding: 0in 5.4pt; width: 103.7pt;" valign="top" width="138"><div class="CircleBestAnswerCxSpMiddle" style="page-break-after: avoid;">
<span style="font-size: large;">Basketball</span></div>
</td><td style="padding: 0in 5.4pt; width: 50.2pt;" valign="top" width="67"><div class="CircleBestAnswerCxSpMiddle" style="page-break-after: avoid;">
<span style="font-size: large;">c.</span></div>
</td><td style="padding: 0in 5.4pt; width: 59.7pt;" valign="top" width="80"><div class="CircleBestAnswerCxSpLast" style="page-break-after: avoid;">
<span style="font-size: large;">Chair</span></div>
</td></tr>
</tbody></table>
</td><td style="height: 59.85pt; padding: 0in 5.4pt; width: 459pt;" valign="top" width="612"><div class="CircleAnswerBelow">
<br /></div>
<table border="0" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: medium none currentcolor; width: 574px;"><tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0; mso-yfti-lastrow: yes;"><td style="padding: 0in 5.4pt; width: 41.4pt;" valign="top" width="55"><div class="CircleBestAnswerCxSpFirst" style="page-break-after: avoid;">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 135pt;" valign="top" width="180"><div class="CircleBestAnswerCxSpMiddle" style="page-break-after: avoid;">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 40.5pt;" valign="top" width="54"><div class="CircleBestAnswerCxSpMiddle" style="page-break-after: avoid;">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 103.7pt;" valign="top" width="138"><div class="CircleBestAnswerCxSpMiddle" style="page-break-after: avoid;">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 50.2pt;" valign="top" width="67"><div class="CircleBestAnswerCxSpMiddle" style="page-break-after: avoid;">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 59.7pt;" valign="top" width="80"><div class="CircleBestAnswerCxSpLast" style="page-break-after: avoid;">
<br /></div>
</td></tr>
</tbody></table>
</td></tr>
<tr style="height: 63pt; mso-yfti-irow: 21;"><td style="height: 63pt; padding: 0in 5.4pt; width: 459pt;" valign="top" width="612"><div class="CircleAnswerBelow">
<span style="font-size: large;">13. Read the following sentence. Then write the correct answer on the line.</span></div>
<div class="MsoListNumberCxSpFirst" style="margin-left: 0in; mso-add-space: auto; mso-list: none; tab-stops: .5in; text-indent: 0in;">
<span style="font-size: large;"></span></div>
<div class="MsoListNumberCxSpMiddle" style="margin-left: 0in; mso-add-space: auto; mso-list: none; tab-stops: .5in; text-indent: 0in;">
<span style="font-size: large;">Lenny knows special code. He also uses a _______________________ to turn use cases into software. </span></div>
<div class="MsoListNumberCxSpLast" style="margin-left: 0in; mso-add-space: auto; mso-list: none; tab-stops: .5in; text-indent: 0in;">
<span style="font-size: large;"><br /></span></div>
</td></tr>
<tr style="mso-yfti-irow: 22;"><td style="padding: 0in 5.4pt; width: 459pt;" valign="top" width="612"><div class="MsoListNumberCxSpLast" style="margin-left: 0in; mso-add-space: auto; mso-list: none; tab-stops: .5in; text-indent: 0in;">
<span style="font-size: large;">15. The computer can read software: </span></div>
</td></tr>
<tr style="height: 59.85pt; mso-yfti-irow: 23;"><td style="height: 59.85pt; padding: 0in 5.4pt; width: 459pt;" valign="top" width="612"><div class="CircleAnswerBelow">
<span style="font-size: large;">(Circle the correct answer below)</span></div>
<table border="0" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: medium none currentcolor;"><tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0; mso-yfti-lastrow: yes;"><td style="padding: 0in 5.4pt; width: 54.45pt;" valign="top" width="73"><div class="CircleBestAnswerCxSpFirst">
<span style="font-size: large;">a.</span></div>
</td><td style="padding: 0in 5.4pt; width: 58.95pt;" valign="top" width="79"><div class="CircleBestAnswerCxSpMiddle">
<span style="font-size: large;">True</span></div>
</td><td style="padding: 0in 5.4pt; width: 51.3pt;" valign="top" width="68"><div class="CircleBestAnswerCxSpMiddle">
<span style="font-size: large;"><br /></span></div>
</td><td style="padding: 0in 5.4pt; width: 54.45pt;" valign="top" width="73"><div class="CircleBestAnswerCxSpMiddle">
<span style="font-size: large;">b.</span></div>
</td><td style="padding: 0in 5.4pt; width: 59.6pt;" valign="top" width="79"><div class="CircleBestAnswerCxSpMiddle">
<span style="font-size: large;">False</span></div>
</td><td style="padding: 0in 5.4pt; width: 51.3pt;" valign="top" width="68"><div class="CircleBestAnswerCxSpMiddle">
<span style="font-size: large;"><br /></span></div>
</td><td style="padding: 0in 5.4pt; width: 54.45pt;" valign="top" width="73"><div class="CircleBestAnswerCxSpMiddle">
<span style="font-size: large;"><br /></span></div>
</td><td style="padding: 0in 5.4pt; width: 58.3pt;" valign="top" width="78"><div class="CircleBestAnswerCxSpLast">
<span style="font-size: large;"><br /></span></div>
</td></tr>
</tbody></table>
</td></tr>
<tr style="mso-yfti-irow: 24;"><td style="padding: 0in 5.4pt; width: 459pt;" valign="top" width="612"><div class="MsoListNumberCxSpLast" style="margin-left: 0in; mso-add-space: auto; mso-list: none; tab-stops: .5in; text-indent: 0in;">
<span style="font-size: large;">16. Software tells the computer what to do.</span></div>
</td></tr>
<tr style="height: 62.1pt; mso-yfti-irow: 25;"><td style="height: 62.1pt; padding: 0in 5.4pt; width: 27.9pt;" valign="top" width="37"><div class="CircleBestAnswer">
<div class="CircleAnswerBelow">
<span style="font-size: large;">(Circle the correct answer below)</span></div>
<table border="0" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: medium none currentcolor;"><tbody>
<tr><td style="padding: 0in 5.4pt; width: 35.1pt;" valign="top" width="47"><div class="CircleBestAnswerCxSpFirst">
<span style="font-size: large;">a.</span></div>
</td><td style="padding: 0in 5.4pt; width: 78.3pt;" valign="top" width="104"><div class="CircleBestAnswerCxSpMiddle">
<span style="font-size: large;">True</span></div>
</td><td style="padding: 0in 5.4pt; width: 51.3pt;" valign="top" width="68"><span style="font-size: large;"><br /></span></td><td style="padding: 0in 5.4pt; width: 0.45in;" valign="top" width="43"><div class="CircleBestAnswerCxSpMiddle">
<span style="font-size: large;">b.</span></div>
</td><td style="padding: 0in 5.4pt; width: 81.65pt;" valign="top" width="109"><div class="CircleBestAnswerCxSpMiddle">
<span style="font-size: large;">False</span></div>
</td><td style="padding: 0in 5.4pt; width: 51.3pt;" valign="top" width="68"><div class="CircleBestAnswerCxSpMiddle">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 29.05pt;" valign="top" width="39"><br /></td><td style="padding: 0in 5.4pt; width: 83.7pt;" valign="top" width="112"><br /></td></tr>
</tbody></table>
</div>
</td><td style="height: 62.1pt; padding: 0in 5.4pt; width: 459pt;" valign="top" width="612"><div class="CircleAnswerBelow">
<br /></div>
<table border="0" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: medium none currentcolor;"><tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0; mso-yfti-lastrow: yes;"><td style="padding: 0in 5.4pt; width: 54.45pt;" valign="top" width="73"><div class="CircleBestAnswerCxSpFirst">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 58.95pt;" valign="top" width="79"><div class="CircleBestAnswerCxSpMiddle">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 51.3pt;" valign="top" width="68"><div class="CircleBestAnswerCxSpMiddle">
<span style="font-size: large;"><br /></span></div>
</td><td style="padding: 0in 5.4pt; width: 54.45pt;" valign="top" width="73"><div class="CircleBestAnswerCxSpMiddle">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 59.6pt;" valign="top" width="79"><div class="CircleBestAnswerCxSpMiddle">
<br /></div>
</td><td style="padding: 0in 5.4pt; width: 51.3pt;" valign="top" width="68"><div class="CircleBestAnswerCxSpMiddle">
<span style="font-size: large;"><br /></span></div>
</td><td style="padding: 0in 5.4pt; width: 54.45pt;" valign="top" width="73"><div class="CircleBestAnswerCxSpMiddle">
<span style="font-size: large;"><br /></span></div>
</td><td style="padding: 0in 5.4pt; width: 58.3pt;" valign="top" width="78"><div class="CircleBestAnswerCxSpLast">
<span style="font-size: large;"><br /></span></div>
</td></tr>
</tbody></table>
</td></tr>
<tr style="mso-yfti-irow: 26;"><td style="padding: 0in 5.4pt; width: 27.9pt;" valign="top" width="37"><br /></td><td style="padding: 0in 5.4pt; width: 459pt;" valign="top" width="612"><div class="MsoListNumberCxSpMiddle" style="margin-left: 0in; mso-add-space: auto; mso-list: none; tab-stops: .5in; text-indent: 0in;">
<br /></div>
<div class="MsoListNumberCxSpLast" style="margin-left: 0in; mso-add-space: auto; mso-list: none; tab-stops: .5in; text-indent: 0in;">
<span style="font-size: large;"></span></div>
</td></tr>
<tr style="mso-yfti-irow: 27; mso-yfti-lastrow: yes;"><td style="padding: 0in 5.4pt; width: 27.9pt;" valign="top" width="37"><div class="CircleBestAnswer">
<span style="font-size: large;"><br /></span></div>
</td><td style="padding: 0in 5.4pt; width: 459pt;" valign="top" width="612"><div class="CircleAnswerBelow">
<br /></div>
<table border="0" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: medium none currentcolor;"><tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0; mso-yfti-lastrow: yes;"><td style="padding: 0in 5.4pt; width: 35.1pt;" valign="top" width="47"><br /></td><td style="padding: 0in 5.4pt; width: 78.3pt;" valign="top" width="104"><br /></td><td style="padding: 0in 5.4pt; width: 51.3pt;" valign="top" width="68"><br /></td><td style="padding: 0in 5.4pt; width: 0.45in;" valign="top" width="43"><br /></td><td style="padding: 0in 5.4pt; width: 81.65pt;" valign="top" width="109"><br /></td><td style="padding: 0in 5.4pt; width: 51.3pt;" valign="top" width="68"><br /></td><td style="padding: 0in 5.4pt; width: 29.05pt;" valign="top" width="39"><br /></td><td style="padding: 0in 5.4pt; width: 83.7pt;" valign="top" width="112"><br /></td></tr>
</tbody></table>
</td></tr>
</tbody></table>
<div class="CircleBestAnswer">
<br /></div>
</div>
Anonymoushttp://www.blogger.com/profile/11770164970801071498noreply@blogger.comtag:blogger.com,1999:blog-7793781044289546361.post-82406361808868380302017-11-07T13:29:00.000-08:002017-11-13T12:22:50.823-08:00Where Is the "T" In STEM?<div dir="ltr" style="text-align: left;" trbidi="on">
How many elementary and middle schools teach our children how technology work is done in the real world? Do our children know what Project Planning is? Or do they understand the difference between Requirements and System Design. If you ask a child about testing does the child understand the related concepts? This article discusses the "Technology" aspect of STEM.<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1TGsNQ1JWZW0dM5L5AcmLFLH05sykeR68pUBqMN1WdBYcVAshPnYU1IRRdAac1Lh_QxgiGnk_ZdNgo1uOjAIrfMEF6FoUfXYE-byB0YFtXeM_bcoBd71IkI9VinaVnSXawgjHKOOmKQ4/s1600/stem.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1TGsNQ1JWZW0dM5L5AcmLFLH05sykeR68pUBqMN1WdBYcVAshPnYU1IRRdAac1Lh_QxgiGnk_ZdNgo1uOjAIrfMEF6FoUfXYE-byB0YFtXeM_bcoBd71IkI9VinaVnSXawgjHKOOmKQ4/s320/stem.jpg" width="296" height="320" data-original-width="339" data-original-height="367" /></a></div>
<h1 style="text-align: left;">
STEM Overview & Goals </h1>
<div class="MsoListBullet">
“The
health & longevity of our Nation’s citizenry, economy and environmental
resources depend in large part on the acceleration of scientific and
technological innovations, such as those that improve health care, inspire new
industries, protect the environment, and safeguard us from harm.” </div>
<div class="MsoListBullet">
<blockquote class="tr_bq">
Federal
Science, Technology, Engineering, & Mathematics (STEM) Education 5-Year
Strategic Plan, “A Report from the Committee on STEM Education National Science
and Technology Council”, Executive Office of the President <i>– National Science
and Technology Council , MAY 2013</i> </blockquote>
</div>
<div class="MsoListBullet">
“The need for high quality science,
technology, engineering, and mathematics (STEM) education has been touted by
numerous reports that link our Nation’s future economic success and security to
a highly skilled STEM workforce.” <o:p></o:p></div>
<div class="MsoListBullet2">
<blockquote class="tr_bq">
The
Federal Science, Technology, Engineering, & Mathematics (STEM) Education
Portfolio Report</blockquote>
<o:p></o:p></div>
<div class="MsoListBullet">
<h3 style="text-align: left;">
President Obama’s Goal for STEM</h3>
</div>
<h2>
<o:p></o:p></h2>
<div class="MsoListBullet2">
The U.S. will have the highest proportion of
college graduates in the world by 2020,<o:p></o:p></div>
<div class="MsoListBullet3CxSpFirst">
<br />
<ul style="text-align: left;">
<li>The Federal Government will work with education
partners to improve the quality of science, technology, engineering and math
(STEM) education at all levels to help increase the number of well-prepared
graduates with STEM degrees by one-third over the next 10 years,</li>
<li>The United States institutions of higher
education will increase the number of students who receive undergraduate STEM
degrees by about 34 % over current rates by 2020.</li>
</ul>
<o:p></o:p></div>
<div class="MsoListBullet3CxSpMiddle">
<o:p></o:p></div>
<div class="MsoListBullet3CxSpLast" style="margin-left: 0in; mso-add-space: auto; mso-list: none; text-indent: 0in;">
<blockquote class="tr_bq">
<b>Goal
Leader:</b> Joan Ferrini-Mundy, Assistant Director, Education and Human
Resources, National Science Foundation</blockquote>
<o:p></o:p></div>
<h3>
Federal Government Investments </h3>
<div class="MsoListBullet3" style="margin-left: 0in; mso-add-space: auto; mso-list: none; text-indent: 0in;">
The CoSTEM released the Federal Science, Technology,
Engineering, and Mathematics (STEM) Education Portfolio report that describes
how 13 Federal agencies utilize $3.4 billion to support STEM education.</div>
<div class="MsoListBullet">
<ul style="text-align: left;">
<li>A gap analysis of current investments shows none
collectively do the following:</li>
</ul>
</div>
<div class="MsoListBullet2CxSpFirst">
<ol style="text-align: left;">
<li>Present an Educational System that teaches
children 2rd grade – High School IT concepts based on the way work is completed
in real life;</li>
<li>Present content & provide practice sessions
with lessons based on a real IT project;</li>
<li>Uses a strategy to teach all U.S. children
Information Technology industry best practices to increase the number of IT
graduates & professionals</li>
<li>Present a
branch, in IT Education, that takes into consideration concept changes by IT
Industry (i.e., Telecommunications, Healthcare, Automotive, Banking, etc.)</li>
</ol>
<h3 style="text-align: left;">
Introducing the Yson Educational System (YES)</h3>
<div>
I designed the Yson Educational System after over 20 years of IT Experience; and over 3 years of Technology Education made me realize there is a gap between the way work is done in the real work; and the way IT is taught in schools. Most of the IT graduates I've met had to take non-IT jobs right out of College. However, with Yson, students start IT education in 2nd grade; they, then end up with a complete IT portfolio (with all applicable IT project artifacts) as a college graduate. This should result in their ability to get an IT internship out of high school and a paying IT job when they finish college. Currently, IT graduates are not able to get an IT job right out of college because the college courses do not delve deep enough into what, when and how IT work is completed. This means a real world workflow (i.e., a Software Development Life-Cycle methodology) is not used to teach technology. Therefore, we are taught technology one way; while the work is performed another way.</div>
<div>
<br /></div>
<div>
Yson Educational System Presents technology concepts at a granular level grouped by Project Planning Activities, Requirements Definition Activities, Design Activities, Development Activities, Integration & Testing Activities, Implementation Activities, Maintenance Activities, and Disposition Activities.</div>
<div>
<br /></div>
<div>
This approach does the following:</div>
<div>
<ul style="text-align: left;">
<li>Develops basic knowledge on how to create technology products by applying the “same work processes used in the real world”</li>
<li>Initiates Information Technology education at the 2nd Grade Level.</li>
<li>Helps the U.S. have the highest proportion of college graduates in the world.</li>
<li>Ensures high school graduates are able to support any phase of the SDLC.</li>
<li>Increases the # of people who know how to build technology products (to increase the # of technology products developed in the U.S.)</li>
<li>Improves the U.S. economy & way of life (increasing the # of technology products means an increase in the # of software development companies, which increases the # of high-paying jobs in the U.S. )</li>
<li>Uses Real World projects to teach technology concepts.</li>
</ul>
<div>
The instruction is delivered through Tutoring Sessions that include the following series of educational materials: Teacher's Guide, In-Class Lab Book, Homework Lab Book, Vocabulary Workbook and Assessment Guide (includes Review material & Test questions). Further, the content is delivered using the following:</div>
<div>
<ul style="text-align: left;">
<li><b>Learning Objectives</b> - Presents Concepts & Content that kids should learn</li>
<li><b>Vocabulary Words</b> – Presents IT vocabulary words kids need to know and understand</li>
<li><b>Tools</b> – Presents tools used to perform the tasks associated with each SDLC Phase</li>
<li><b>Tasks</b> – Presents the tasks (or actions) that make up an activity.</li>
</ul>
</div>
<div>
<h1 style="text-align: left;">
Conclusion</h1>
<div>
Yson Educational System ensures students complete assignments using an IT Project methodology; thus they are
familiar with real world IT project artifacts and the order in which these artifacts are created; as well as how they are created. It also ensures:</div>
<div>
<ul style="text-align: left;">
<li>Exercises are presented using a real world IT project so the homework results in building samples for a professional portfolio.</li>
<li>Schools use proper pre-requisite ordering so assignments are completed in the order in which work is done in the real world.</li>
<li>IT content is presented at the appropriate level so the child learns using a building block method. For example, children learn the basics of the "what" in grades 2 and 3; then Grades 4 and up delve more and more into the how. By the time a child graduates from the 8th grade; he or she can successfully interview with an IT Recruiter. By the time the child graduates from high school he or she can perform all phases of the Life-Cycle. This means college IT courses would focus on industry specific education such as IT Banking, IT Automotive, Telecommunications, etc.</li>
</ul>
</div>
</div>
<div>
<br /></div>
<ul style="text-align: left;">
</ul>
<br /></div>
</div>
<div class="MsoListBullet2CxSpMiddle">
<o:p></o:p></div>
<div class="MsoListBullet2CxSpMiddle">
<o:p></o:p></div>
<div class="MsoListBullet2CxSpLast">
<o:p></o:p></div>
</div>
Anonymoushttp://www.blogger.com/profile/11770164970801071498noreply@blogger.comtag:blogger.com,1999:blog-7793781044289546361.post-72282729473777459562014-08-17T09:59:00.005-07:002014-08-17T10:17:29.142-07:00Get Started With MySQL Database & SQL Programming<div dir="ltr" style="text-align: left;" trbidi="on">
This article provides an overview of databases and discusses ANSI SQL and tells how PL/SQL, T-SQL and other SQL implementations differ from each other. And it discusses the MySQL open source database by walking through how to install and use
MySQL workbench. And, it provides an easy-to-follow tutorial on popular SQL statements.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Getting Start With Databases </span></h3>
<br />
For an overview of databases and how organizations store data see the article titled "<a href="http://www.pvlangford.com/2013/02/common-it-positions-career-plan.html">Common IT Positions & Career Plan - Software Developer Part 1</a>" and review the section titled "Storing Enterprise Data".<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Getting Started With MySQL</span></h3>
<br />
MySQL
is open source database software provided to users under the GN General Public
License. A GNU General Public License gives developers the "freedom" to
change the database software as well as use it as part of an application and share it. When software is open source
developers are granted access to copies of the source code. In addition,
the software is usually made available free of charge.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXdzJpuEGQBnSv_F7ySLjR2wL-6X2n7UBxbWnTwkrt3k_pajJmN7Mc2hqdxyLx1I-o-LKFjZ2XSXLap9ZFKt1hYZDCyAi9je3nzASo827ATZ0jYzwYz3P7La0aPeRSbFmuCEU5mIoIMeg/s1600/download_my_sQL.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXdzJpuEGQBnSv_F7ySLjR2wL-6X2n7UBxbWnTwkrt3k_pajJmN7Mc2hqdxyLx1I-o-LKFjZ2XSXLap9ZFKt1hYZDCyAi9je3nzASo827ATZ0jYzwYz3P7La0aPeRSbFmuCEU5mIoIMeg/s1600/download_my_sQL.jpg" height="275" width="320" /></a></div>
<br />
<div style="text-align: left;">
There are several versions of MySQL as listed on the following URL: <a href="http://www.mysql.com/products/">http://www.mysql.com/products/</a>. This article focuses on the Community Edition of MySQL that runs on Windows.</div>
<br />
MySQL includes a <a href="http://dev.mysql.com/downloads/windows/installer/" target="_blank">MySQL Installer </a>for Windows users. The MySQL Installer
invokes a wizards that steps users through the installation process to
install roughly 8 components including the "world" and "sakila" sample databases and
documentation. (Note that throughout this article I use the sakila database.) Among the components installed are the following;
<br />
<ul style="text-align: left;">
<li>MySQL Server - The database management software that actually holds
the database tables, data and other database objects used to manage an
organization's or entity's data. </li>
<li>MySQL Workbench - A graphical user interface that can be used to
query data in the database, create a data-entity relationship diagram as
well as create new database objects and perform other administrative
tasks against a MySQL database.</li>
<li>MySQL for Excel - MySQL for Excel enables users to import, export
and edit MySQL data using Microsoft Excel </li>
</ul>
<br />
<ul style="text-align: left;">
</ul>
<h4 style="text-align: left;">
<span style="color: #0b5394;">Downloading/Installing MySQL on Windows</span></h4>
<br />
Navigate to <a href="http://dev.mysql.com/downloads/windows/installer/" target="_blank">http://dev.mysql.com/downloads/windows/installer/</a>, scroll to the middle of the page and click on the applicable link, as shown in the picture below.
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9l6Nll7vGFD1teLRDIyUuVigBYEcF12FoiXxAMR-udBXHfTLPfAiVASbfsYMDZ1ks3Msx1X7_fbhGWPCduqNV_VtTYCZk-wYEaAdFXg64eWGdgzm6PXguEYWwVS7M_qbIQQohLAsCzEE/s1600/download_my_sQL2.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9l6Nll7vGFD1teLRDIyUuVigBYEcF12FoiXxAMR-udBXHfTLPfAiVASbfsYMDZ1ks3Msx1X7_fbhGWPCduqNV_VtTYCZk-wYEaAdFXg64eWGdgzm6PXguEYWwVS7M_qbIQQohLAsCzEE/s1600/download_my_sQL2.jpg" height="166" width="320" /></a></div>
<br />
For the windows installer you can download the 32-bit only installer; or,
the 32- and 64-bit installer. To download MySQL you must have an Oracle
account. Once you log in you can download the desired file.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkVBaArNaodLYmrFvaMTa094s4iS3KBTN7QZuggYIkG9iTROCcXK45fVRS9xaclLKEQsXTxksdeseAJ0YgnR33EYHJ-g4FKDSTVI4tbBRsOqpxBi9NhV4IGBvIddFn-ssEGe71A-MesAo/s1600/login.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkVBaArNaodLYmrFvaMTa094s4iS3KBTN7QZuggYIkG9iTROCcXK45fVRS9xaclLKEQsXTxksdeseAJ0YgnR33EYHJ-g4FKDSTVI4tbBRsOqpxBi9NhV4IGBvIddFn-ssEGe71A-MesAo/s1600/login.jpg" height="180" width="320" /></a></div>
<br />
After you download the file be sure to verify the integrity of the file you downloaded before you
install it. This ensures the file was not tampered with.To learn more
about verifying the integrity of a file you can read Verifying a Package
Integrity at: <a href="http://dev.mysql.com/doc/refman/5.6/en/verifying-package-integrity.html" target="_blank">http://dev.mysql.com/doc/refman/5.6/en/verifying-package-integrity.html</a>.
<br />
When you are ready, launch the installer. A message displays asking you to wait while the MySQL Installer finishes the current process. Then the Welcome screen displays.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbFCkEAEFR7-ngxhyphenhyphenqM27mB0_SsjcauN2VhVxeVxtF4h_o5aJCEEPKlcRDxGaaCAioJGwn7xOBPPkf6GxVt6-TqaUFNqfpc3CxKNmj-hrJ3F_6Jk5-fUbvVgtya62NYtH5S7vXvVAx0O8/s1600/welcome.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbFCkEAEFR7-ngxhyphenhyphenqM27mB0_SsjcauN2VhVxeVxtF4h_o5aJCEEPKlcRDxGaaCAioJGwn7xOBPPkf6GxVt6-TqaUFNqfpc3CxKNmj-hrJ3F_6Jk5-fUbvVgtya62NYtH5S7vXvVAx0O8/s1600/welcome.jpg" height="238" width="320" /></a></div>
<br />
After you click "Install MySql Products" you need to Accept the GNU General Public License to continue. You can then choose the setup type. I chose the "Full" setup type to install everything.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMmwIgqdZbfPjotFRe5_wsx90I3qLdZrcfulganKa4tPtkuinfdYYnQCe1jU8RszyWNiT-Rkb6FfUimS7FjH8RzLq1DNpzFBj6uSIhtVXkcKevqLBbHYkdOM4ccrkmidS-qpfTsW2_dqY/s1600/MySQL_setup_type.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMmwIgqdZbfPjotFRe5_wsx90I3qLdZrcfulganKa4tPtkuinfdYYnQCe1jU8RszyWNiT-Rkb6FfUimS7FjH8RzLq1DNpzFBj6uSIhtVXkcKevqLBbHYkdOM4ccrkmidS-qpfTsW2_dqY/s1600/MySQL_setup_type.jpg" height="241" width="320" /></a></div>
<br />
The software checks the system requirements to install the selected components. If you indicated that you wanted to install MySQL for Excel the components needed are added before the list of MySQL products (to be installed) displays.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGJhum1_Ej_Vfn0AvnQUNNro9CRLccjby13ngeydsDkkFezOAguevOyw5T4KLrDCZlAKvlmUFcoU5NQUaY6Wj3onEveXWAA5b5tPRNU6pOaJI5KS7dwXs25Lkr-0UhSQ7dB9N-ZFRuTZM/s1600/products+to+insstdall.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGJhum1_Ej_Vfn0AvnQUNNro9CRLccjby13ngeydsDkkFezOAguevOyw5T4KLrDCZlAKvlmUFcoU5NQUaY6Wj3onEveXWAA5b5tPRNU6pOaJI5KS7dwXs25Lkr-0UhSQ7dB9N-ZFRuTZM/s1600/products+to+insstdall.jpg" height="237" width="320" /></a></div>
<br />
When the Installation Progress window, shown above, displays click Execute to install all of the products. As you click through the windows presented by the MySQL installer the MySQL Server Configuration window displays. The option you select depends on whether the environment is for an individual or company. For example, a company might install MySQL on a Server. Developers then install MySQL and select the Developer Machine option. They can then connect to the server to get or upload database changes.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4sTvwfkgtbh1EX4UpnHNsZITSA2cJ6r8Q8X8nBiNjhuF4bSrnm6WQKG4CdMinc82SZbl4Rch6cmq76-dcAz2WIvmh4kS1f7g9Qh0tl14fwhVv9F2XfeAcXuwxy8R6L9txQWCEnJBEg1Y/s1600/server_config_type.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4sTvwfkgtbh1EX4UpnHNsZITSA2cJ6r8Q8X8nBiNjhuF4bSrnm6WQKG4CdMinc82SZbl4Rch6cmq76-dcAz2WIvmh4kS1f7g9Qh0tl14fwhVv9F2XfeAcXuwxy8R6L9txQWCEnJBEg1Y/s1600/server_config_type.jpg" height="296" width="400" /></a></div>
<br />
As you click through the MySQL Server Configuration another window allows you to set the MySQL Root password, as shown below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSTiHiTJ7jQgMOEMbLv48yglfklD4F9xBH8kf-JXSqfByg5k0aXwHAdsyPQ7fK28Yzovc_Wbbid8pDGvHtQK0GGSXyb9Hvdn7Qm8HyMPXmuQdlVIDnnLmsJMuO33-iUO_tHkP4L20QS18/s1600/MySQL_root_account2.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSTiHiTJ7jQgMOEMbLv48yglfklD4F9xBH8kf-JXSqfByg5k0aXwHAdsyPQ7fK28Yzovc_Wbbid8pDGvHtQK0GGSXyb9Hvdn7Qm8HyMPXmuQdlVIDnnLmsJMuO33-iUO_tHkP4L20QS18/s1600/MySQL_root_account2.jpg" height="237" width="320" /></a></div>
<br />
The Root account is the account automatically used when MySQL starts. Another MySQL Server Configuration window asks if you want to start MySQL Server as a Windows Service, as shown below. Accept this default. On Windows, the recommended way to run MySQL is to install it as a Windows service. This allows MySQL to automatically start/stop as you run/close Windows. <br />
<br />
Note that once MySQL is installed you can view the MySQL Service by right-clicking My Computer -> Manage to display the Computer Management window. You can then expand Services and Applications and select Services to view the MySQL Service and start/stop the service, as shown below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeQnfV4_4r7W12ahfihu7GKF4AzFqjghrONILhn5b8zAyZcrvDfKANBt6HwKwP8A8ZPfPMYWu39Mp2AhLxPplpKaDlz0vIqRh6fE1v6t9m1FflwPtpjT-o0B4RTmXnDwF0vyFUn8X88O8/s1600/MtSQL_Windows_Service.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeQnfV4_4r7W12ahfihu7GKF4AzFqjghrONILhn5b8zAyZcrvDfKANBt6HwKwP8A8ZPfPMYWu39Mp2AhLxPplpKaDlz0vIqRh6fE1v6t9m1FflwPtpjT-o0B4RTmXnDwF0vyFUn8X88O8/s1600/MtSQL_Windows_Service.jpg" height="112" width="320" /></a></div>
<h4 style="text-align: left;">
<span style="color: #0b5394;"><br />Using MySQL Workbench</span></h4>
<br />
Once the Installation Complete window displays click the Finish button to display the MySQL Workbench, shown below. Notice under MySQL Connections you are logged in using the root account and, in this example, I am using the Localhost server on port 3306 (localhost:3306). Since I used the "Full" installation option the "world" and "sakila" sample databases were installed. If I double-click the Local Instance MySQL56 connection I can view all of the schemas (or databases) that exist.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi66cOZvP2ZVSgOhuvmFzmNQ3xynAsOJJ1zLVLWE0M_yGvAGyWxTWusHUIZSrIMzfSgVQZX076XTDN1_QHGFdVpm2_DrC3VTn_aHF_T3VB1s1ES3dkB4ALMkmhTNif78uS984xXZ0yNy1Q/s1600/local_instance.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi66cOZvP2ZVSgOhuvmFzmNQ3xynAsOJJ1zLVLWE0M_yGvAGyWxTWusHUIZSrIMzfSgVQZX076XTDN1_QHGFdVpm2_DrC3VTn_aHF_T3VB1s1ES3dkB4ALMkmhTNif78uS984xXZ0yNy1Q/s1600/local_instance.jpg" height="260" width="400" /></a></div>
<br />
The following picture shows the window that displays once the local instance connection is clicked. Notice, under schemas, you see sakila and world. You also see the information_schema and the performance_schema. The information_schema stores data about the databases. For example, information_schema includes a Tables table that stores the names of all tables in all of the schemas (i.e., all tables in the sakila database, all tables in the world database, etc.).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1ydPASOoqTrfwORSVTRzFs8AiVqrSE5cnraqddcB6kgIWsRfLIgpLygGZTNwXEb58ovZMQ_UpJQpBWmP9cWyh2rcoPW5LP529a4yhXAHl9WgzvEQhLg7VMf2aKdi9zBsOaXm3ouuBxE8/s1600/local_instance_connection.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1ydPASOoqTrfwORSVTRzFs8AiVqrSE5cnraqddcB6kgIWsRfLIgpLygGZTNwXEb58ovZMQ_UpJQpBWmP9cWyh2rcoPW5LP529a4yhXAHl9WgzvEQhLg7VMf2aKdi9zBsOaXm3ouuBxE8/s1600/local_instance_connection.jpg" height="263" width="400" /></a></div>
<br />
The Performance_schema tracks MySQL Server performance-related events such as what user accounts are logged into what host, the number of current connections and total connections, event stages (i.e., preparing for alter table, altering table, committing alter table to storage engine, etc. along with wait times, etc.) and other similar data. From the main window you can click the plus sign beside MySQL Connections to create a connection to a schema.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjr-I0TU6TBF6Q5RRVhsU4cHtzipYTgqtsCYWFQZbVe0dIa3qKdU6NzJuXNOh9ex5hvFNlULni46j2V2KSsrIGq4Gc4jS_D_OGyiTPnoGRzd5qPpBvIR7cQ4PSFWR4gKidFYq3Qxtp_2U/s1600/create_connection.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjr-I0TU6TBF6Q5RRVhsU4cHtzipYTgqtsCYWFQZbVe0dIa3qKdU6NzJuXNOh9ex5hvFNlULni46j2V2KSsrIGq4Gc4jS_D_OGyiTPnoGRzd5qPpBvIR7cQ4PSFWR4gKidFYq3Qxtp_2U/s1600/create_connection.jpg" height="198" width="320" /></a></div>
<br />
When you click the plus sign the Setup New Connection window displays. You can add a name to the Connection Name field and enter the schema to be selected for the connection, as shown below. If you click the Test Connection button you are prompted for the root account password. You can use the Save password in vault option to store the password.Click the OK button to create the connection. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUQGt-h3vfrQMwlMbNHf-MKgpfDWoWPPNUBweu_x3C1U3q8ym_GF55sQME-QoBIMWM6957gWdzwdZg9SFO3OE2UbMhe2Y4dt1vglWassR4wTkP0ZOGrB2saL0018CqJMzPCfGaDoZ5eBU/s1600/create_connection2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUQGt-h3vfrQMwlMbNHf-MKgpfDWoWPPNUBweu_x3C1U3q8ym_GF55sQME-QoBIMWM6957gWdzwdZg9SFO3OE2UbMhe2Y4dt1vglWassR4wTkP0ZOGrB2saL0018CqJMzPCfGaDoZ5eBU/s1600/create_connection2.jpg" height="199" width="320" /></a></div>
<br />
<br />
The new connection created displays beside the Local instance connection. If you click on the "sakila_full" option (highlighted in the picture below) you will view the model and other objects for the sakila database.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8sk8u6nSs7Dt4SPv5NO-fHYlvPje0ZyOJ5aT2BAQrNxEsSgR1O8Bc6FAMv3t_2XlQBwdGGFL38MKThphFqHjcjyycF74i2u0TFnM_lu-16e6Vu4gP6gFslTTr22H47_7HQfzQHJyOc-g/s1600/Workbench.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8sk8u6nSs7Dt4SPv5NO-fHYlvPje0ZyOJ5aT2BAQrNxEsSgR1O8Bc6FAMv3t_2XlQBwdGGFL38MKThphFqHjcjyycF74i2u0TFnM_lu-16e6Vu4gP6gFslTTr22H47_7HQfzQHJyOc-g/s1600/Workbench.jpg" height="202" width="320" /></a></div>
<br />
The following picture shows what the Workbench looks like when a model is opened. By default the model displays on the EER Diagram Tab. This Tab shows the Entity Relationship Diagram, which displays tables and views and their relationships to one another. As you view the picture below notice the red box (on the left) highlights the Bird's Eye view of the Entity Relationship Diagram. The Toolbar (shown by a red arrow) is used to add or delete tables and views, create relationships among database objects and perform other tasks.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsPdNt1jsHsc802yE_RVBno7anqaNOFBQGA0DtCow_IbTIxiMXiaYTtDZ0oHzRPe2P14KwagOPQtgmp2c3xtDaPfu519epI9bunMMtH6C8PMh56-GshecMfN35G3fICF46soFgnVysnU4/s1600/Workbench_displaying_database.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsPdNt1jsHsc802yE_RVBno7anqaNOFBQGA0DtCow_IbTIxiMXiaYTtDZ0oHzRPe2P14KwagOPQtgmp2c3xtDaPfu519epI9bunMMtH6C8PMh56-GshecMfN35G3fICF46soFgnVysnU4/s1600/Workbench_displaying_database.jpg" height="229" width="400" /></a></div>
<br />
Database objects include the tables that hold data, views of table data, functions (that return a value when executed), etc. Each table field is associated with a data type. For example, the field that holds the date a product was purchased is associated with a date data type so the system knows the type of data to be stored . You can learn more about data types here: <a href="http://dev.mysql.com/doc/refman/5.0/en/data-type-overview.html" target="_blank">http://dev.mysql.com/doc/refman/5.0/en/data-type-overview.html</a>.<br />
<br />
As previously mentioned other database objects include Views. Views enable developers to define what data to display by selecting table fields from two or more tables. For example, the sakila database has the "rental" table, which has the following table fields: rental_id, rental_date, inventory_id, customer_id, return_date, staff_id and last_update. If you view the data in this table it looks like the picture below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjau0eCY8OTPoFnfalHCsWmEHJER763exEi0zNztuUwUvI9jHO4IL2pMYUhMzZtANdlQS-bXqYir45s1xarLkMLERKc4CPi9wA2bPzhXmRfafT_W9z1NMUzuViJiyjPLWJ7_XPj3XtCsi0/s1600/rental_table_results.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjau0eCY8OTPoFnfalHCsWmEHJER763exEi0zNztuUwUvI9jHO4IL2pMYUhMzZtANdlQS-bXqYir45s1xarLkMLERKc4CPi9wA2bPzhXmRfafT_W9z1NMUzuViJiyjPLWJ7_XPj3XtCsi0/s1600/rental_table_results.jpg" height="176" width="400" /></a></div>
<br />
Suppose you work for a rental store. The manager wants to know the first and last name of each customer who rented a film; and, the title of the film. The above table doesn't provide that information. But, you can create a view that combines the rental table, the customer table, the inventory and the film table to create the desired details. Instead of displaying the customer_id field you can display the customer first_name field and customer last_name field from the customer table. You can use the film_id in the inventory table to display the film "title" from the film table. You would omit fields that contain data the manager doesn't want to see. Once you create the view, the manager can display the results to see the desired information. A screen capture of the SQL query and results is included below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif2bitGXS9aOvN9-717gMW0AaimJzCOZpgtu90BoTDkaziPcagp_ug1HmAnfEsy40ml-BRE_HxUL2y9BsMDd-2gvbANwRZfnmXyp8Wt3mPKuyZz6UziY0RCKvAvZzyHQXLiAN0asWy5GE/s1600/customer_rentals.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif2bitGXS9aOvN9-717gMW0AaimJzCOZpgtu90BoTDkaziPcagp_ug1HmAnfEsy40ml-BRE_HxUL2y9BsMDd-2gvbANwRZfnmXyp8Wt3mPKuyZz6UziY0RCKvAvZzyHQXLiAN0asWy5GE/s1600/customer_rentals.jpg" height="237" width="400" /></a></div>
<br />
Just a quick note about the above query. The Left() function is used to return the first 11 characters from the left so only the date shows. AS 'Rental Date' defines the name of the column. And, Inner Join is used to combine the records from two tables whenever there are matching values in both tables. (This article is outdated but still provides a great overview of inner joins: <a href="http://technet.microsoft.com/en-us/library/aa213234">http://technet.microsoft.com/en-us/library/aa213234</a>.) The following paragraphs discuss SQL queries in greater detail.<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Introducing the Structured Query Language (SQL)</span></h3>
<br />
The American National Standards Institute (ANSI) defined a series of standards that defines the framework for the SQL environment, how SQL statements are to be executed (i.e., using a SQL-agent), data types to be used and the standards discuss other features needed to build, manage and query a SQL database environment. Below is a list of the ANSI standards.<br />
<ul style="text-align: left;">
<li>ISO/IEC 9075-1:2011 [2012], Information technology - Database languages—SQL -Part 1: Framework</li>
<li>ISO/IEC 9075-2:2011, Information technology—Database languages—SQL—Part 2: Foundation </li>
<li>ISO/IEC 9075-3:2008, Information technology—Database languages—SQL—Part 3: Call-Level Interface</li>
<li>ISO/IEC 9075-4:2011, Information technology—Database languages—SQL—Part 4: Persistent Stored Modules</li>
<li>ISO/IEC 9075-9:2008, Information technology—Database languages—SQL—Part 9: Management of External Dat </li>
<li>INCITS/ISO/IEC 9075-5-1999, Information Technology - Database Languages - SQL - Part 5: Host Language Bindings </li>
<li>ISO/IEC 9075-10:2008, Information technology - Database languages - SQL - Part 10: Object Language Binding </li>
<li>ISO/IEC 9075-11:2011, Information technology—Database languages—SQL—Part 11: Information and Definition Schemas</li>
<li>ISO/IEC 9075-13:2008, Information technology—Database languages—SQL—Part 13: SQL Routines and Types using the Java Programming Language</li>
<li>ISO/IEC 9075-14:2011, Information technology—Database languages—SQL—Part 14: XML-Related Specifications</li>
</ul>
<br />
Vendors who implement a SQL database incorporate some or all of the features outlined in the above standards. Examples of database vendors include <a href="http://www.microsoft.com/en-us/server-cloud/products/sql-server/default.aspx" target="_blank">Microsoft (SQL Server)</a>, Oracle (<a href="http://www.oracle.com/us/products/database/overview/index.html" target="_blank">Oracle</a> & MySQL), <span class="st"><a href="http://www.postgresql.org/" target="_blank">PostgreSQL</a>, etc.<i> </i></span>Some vendors add new features not outlined in any of the standards. For example, Microsoft SQL Server
uses Transact-SQL and Oracle uses SQL* Plus (PL/SQL). Both of these languages have
been extended to include data types and other features not outlined in any of the ANSI standards. MySQL and Microsoft Access both use SQL; however, these implementations have also been extended. For example, Microsoft Access 2007 supports both ANSI SQL wildcard
characters and wildcard characters specific to the Microsoft
Access database engine. And,
Microsoft Access supports data types not supported by ANSI SQL. These customizations are one of the key reasons data cannot be directly shared between databases.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Getting Started With SQL Statements</span> </h3>
<br />
In the business world users typically use an application to add or edit records in a database. (Deleting data, from a user interface, is usually not allowed. Instead, records are typically marked as inactive so that reports ran yesterday can be run at anytime in the future--with the understanding that inactive records are outdated.)<br />
<br />
Some companies may use a tool like <a href="http://store.businessobjects.com/DRHM/store?Action=DisplayProductDetailsPage&SiteID=bobjamer&Locale=en_US&ThemeID=29254600&Env=BASE&parentCategoryID=57065700&categoryID=57066100&productID=286865100&url_id=banner-ww-crcom-banner-features&resid=U@WjxQoydxAAAMXQVEAAAADM&rests=1407558597106" target="_blank">Crystal Reports</a> to create interactive reports that enable users to select options to view the desired data. Users can easily generate ad hoc, custom reports that can be exported to Excel, PDF or other popular formats. I have also seen an environment where <a href="http://bussystemanalysis.blogspot.com/2013/10/business-intelligence-with-excel_23.html" target="_blank">Microsoft Excel was used to connect to a database</a> to view data. <br />
<br />
<h4 style="text-align: left;">
<span style="color: #0b5394;">Using Workbench to Generate Statements</span></h4>
<br />
When you launch Workbook you can right-click on a schema table to access a short-cut menu. You can then select an option to have Workbench generate a statement for you. For example, right-click on the rental table under the sakila schema as shown below<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibMas3jg3FjV20s4E2l7v4zPOyGsw7ZHZrtil3_4jQBvsc-grzNApnors80rTUYY77GZigVHdjeNtdtQHjlOq5E2ZWb_oZNQt4RSTZr_MlItNJyZlQsSFc_H1t2w-xKq5d17X_bPjUz9U/s1600/select_rows.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibMas3jg3FjV20s4E2l7v4zPOyGsw7ZHZrtil3_4jQBvsc-grzNApnors80rTUYY77GZigVHdjeNtdtQHjlOq5E2ZWb_oZNQt4RSTZr_MlItNJyZlQsSFc_H1t2w-xKq5d17X_bPjUz9U/s1600/select_rows.jpg" height="292" width="400" /></a></div>
Select "Select Rows - Limit 1000" as shown in the above picture. The statement displays on the rental Tab. The results display in the Results grid (as shown below) provided the Results Grid button is selected. If the Form Editor button is selected the first record displays in a Form. You can then use the form buttons to navigate through the records. If the Field Types button is selected a window displays the name of each field and the data type associated with the field.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1ZvmK8RXgjCa02tIva7rwKNgPn23343HyyWqUrmUOZB7tqNvK5DhVa7kdOSNNyjke1mCAeQjVJsejtKiJpHN71SPL59XZ-X8zyATTf7c62GdH1ap6Z2O-amtV3dnvRsEbJp40TW4bFwI/s1600/rental_table_results.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1ZvmK8RXgjCa02tIva7rwKNgPn23343HyyWqUrmUOZB7tqNvK5DhVa7kdOSNNyjke1mCAeQjVJsejtKiJpHN71SPL59XZ-X8zyATTf7c62GdH1ap6Z2O-amtV3dnvRsEbJp40TW4bFwI/s1600/rental_table_results.jpg" height="176" width="400" /></a></div>
The bottom Output window (shown below) tells the action performed and the message returned by the database. If the statement resulted in an error, an error message displays in this window. However, in the following example the statement was successful so the number of records (or rows) returned displays.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWcC4vKa0WMgupfsnPp3zxHgedCTmfgXwzLRTQP6ZBicQscElkOCDrf7fJosdiPvfCcnETzc-ciK8dIiXTd641zU2vf608q3zzdh9yxBU2w2IBOLr0XbPlQmqoYn5B2bowf6NiR9Mysls/s1600/select_statement_results.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWcC4vKa0WMgupfsnPp3zxHgedCTmfgXwzLRTQP6ZBicQscElkOCDrf7fJosdiPvfCcnETzc-ciK8dIiXTd641zU2vf608q3zzdh9yxBU2w2IBOLr0XbPlQmqoYn5B2bowf6NiR9Mysls/s1600/select_statement_results.jpg" height="290" width="400" /></a></div>
<br />
<h4 style="text-align: left;">
<span style="color: #0b5394;">Writing SQL Statements - Directly Interacting With the Database</span> </h4>
<br />
There are two ways to access the Query tab to execute SQL statements in Workbench. You can select a database connection
when you first launch Workbench, as previously discussed. Or, if you are
already using Workbench you can select
Database -> Connect to Database... When the Connect to Database
window displays click the OK button to access the Query Tab.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNnbThhqYzLwQF36z8zD52QeTsegdqsyRjI8hwC2GxJKLlYFZ6ST89HMZIWJAvSSm42zCiKn8f_C4f_3kHaNttZ6LkZ9N_YCsSkIsSb1I2bFnWb2nYDFuy6G5AaJ2SOOQQDWfALYS5vmo/s1600/Query1_tab.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNnbThhqYzLwQF36z8zD52QeTsegdqsyRjI8hwC2GxJKLlYFZ6ST89HMZIWJAvSSm42zCiKn8f_C4f_3kHaNttZ6LkZ9N_YCsSkIsSb1I2bFnWb2nYDFuy6G5AaJ2SOOQQDWfALYS5vmo/s1600/Query1_tab.jpg" height="232" width="320" /></a></div>
<br />
You can create SQL statements to create a database, table or view. You can also create statements to view, insert or delete data as well as perform a number of other tasks. If you want to view data stored in a database there are two values you MUST know: 1. the name of the schema (or database) that holds the data; and 2. the name of the table that holds the data. If you only know these two values but do not know the name of the table fields you can write a Select All statement like this:<br />
<br />
SELECT * from schema.table <br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiupfe8EbdUDfR0bwXawCoVw2RfdsenvAq7Kwa7AVF0YB3cT0rKpoQz4bRSdsayRQnqahfXwJCSLTWfowo6SbjAH_ZQYPt60OUfVmRx2-qRvqAlfltE8xYvUktjXyE8lUbRAOP2X5lIuRo/s1600/execute_statement.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiupfe8EbdUDfR0bwXawCoVw2RfdsenvAq7Kwa7AVF0YB3cT0rKpoQz4bRSdsayRQnqahfXwJCSLTWfowo6SbjAH_ZQYPt60OUfVmRx2-qRvqAlfltE8xYvUktjXyE8lUbRAOP2X5lIuRo/s1600/execute_statement.jpg" height="168" width="320" /></a><br />
<br />
Following is an example: <br />
<br />
SELECT * FROM sakila.actor<br />
<br />
Once you add the Select All statement to the Query1 Tab you must click the Execute button to prompt Workbench to perform the requested action. Once the statement is executed the results display in the Results Grid below the Query1 tab. If you know the name(s) of the table fields that hold the data you want to view, you can add table field names instead of using the wildcard (*). For example, the following SQL statement displays data from the first_name and last_name fields of the actor table in the sakila database.<br />
<br />
SELECT first_name, last_name FROM sakila.actor<br />
<br />
Notice each column name is separated by a comma. However, a comma is not added between the last column name and the FROM keyword. <br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihbqRTjrRluJRLrjqDwqYYhvQdRmXjDg7beQlJ2iX_O78OuRmPyk6tAsv5DFq89tWcjv8mGu0ZTNo8i5LBZmf5Az8IlAeLhRvl0cJFldzQ1QMjYCfPJ5Xi60NaUcF2ohXJPhS67-0VlzA/s1600/select_specific_fields.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihbqRTjrRluJRLrjqDwqYYhvQdRmXjDg7beQlJ2iX_O78OuRmPyk6tAsv5DFq89tWcjv8mGu0ZTNo8i5LBZmf5Az8IlAeLhRvl0cJFldzQ1QMjYCfPJ5Xi60NaUcF2ohXJPhS67-0VlzA/s1600/select_specific_fields.jpg" height="162" width="320" /></a></div>
<br />
You can write an Insert Statement to add a new record to a database table. The Insert Statement is written as follows: <br />
<br />
INSERT INTO sakila.actor(`actor_id`,`first_name`,`last_name`) VALUES (201,'Will','Smith');<br />
<br />
The statement begins with the "Insert Into" keywords. The schema.table name is added along with a list of the table field names in the order in which the fields appear in the table. The "Values" keyword is added followed by the values to be inserted. In the above example, the table has a TIMESTAMP field. Notice a value is not provided. This is because the database automatically adds the date/time when the record is created. And, although the previous example shows the actor_id field (which is the primary key field) corporate databases are usually configured to automatically add this value when a record is created.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbTE-0CijVolH4D8-GZUx1NZk2Hb7UYhyZhvOsIVq9YA1uzr95kmqrUsaCSmjzMVvAfHh8YK0R5FzgkWzl7HQ6jurdSCNrmbQBifuGxSVhcfrxpEDy_OiCMKlX1_Lfqsxffj4vFq3mC4g/s1600/insert_statement.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbTE-0CijVolH4D8-GZUx1NZk2Hb7UYhyZhvOsIVq9YA1uzr95kmqrUsaCSmjzMVvAfHh8YK0R5FzgkWzl7HQ6jurdSCNrmbQBifuGxSVhcfrxpEDy_OiCMKlX1_Lfqsxffj4vFq3mC4g/s1600/insert_statement.jpg" height="160" width="320" /></a></div>
The Update Statement is used to change one or more value(s) that already exist in the database. To change a single value for a record the update statement appears as shown in the picture below. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXjutUHimDndERtH-eANW9yL_zbnNQPkjID_OfIZH_uhetl3xbLLzUr4BXtBDkhN0mtNiVk1_v94LZqso_3r1m6KcwI5dQl21xScRilZxLaWu69i0R_r75e934YcIG80681HBn0gh6XWM/s1600/update_SQL2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXjutUHimDndERtH-eANW9yL_zbnNQPkjID_OfIZH_uhetl3xbLLzUr4BXtBDkhN0mtNiVk1_v94LZqso_3r1m6KcwI5dQl21xScRilZxLaWu69i0R_r75e934YcIG80681HBn0gh6XWM/s1600/update_SQL2.jpg" height="207" width="320" /></a></div>
<br />
The keyword "Update" is used followed by the schema.table name. The
keyword "Set" is then added followed by the table field name and the
updated value. The "Where" keyword is added followed by the name of the
id field (i.e., actor_id in this example) and the value of the record to
be changed, as shown in the picture below. The "Where" keyword and actor_id combination ensures only a single record is returned (i.e., where actor_id = 1. Note that primary key values are also unique.)<br />
<br />
If multiple values are to be updated, all table fields are added along with the applicable values. However, note that the id of a record should never be changed once data has been added. This is because the existing records (in this example film records associated with the actor) will loose their association since records are associated by the id or primary key field.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjquvMwCnx9J6Fib9uV2bNmjGuCT18w9y1MTRJId5zp5UUvWDCv9l2vDhoXaAC_NhRr_oY3e9t0cDDDSxNH4F0_a2Kbv6rdF68909xwKkn77ndXksyCAY5EAcmO7uEb7MYn6VK_8g5BwPc/s1600/update_SQL.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjquvMwCnx9J6Fib9uV2bNmjGuCT18w9y1MTRJId5zp5UUvWDCv9l2vDhoXaAC_NhRr_oY3e9t0cDDDSxNH4F0_a2Kbv6rdF68909xwKkn77ndXksyCAY5EAcmO7uEb7MYn6VK_8g5BwPc/s1600/update_SQL.jpg" height="257" width="320" /></a></div>
<br />
You can delete a record using the Delete Statement as follows: <br />
<br />
DELETE FROM `sakila`.`actor`<br />
WHERE actor_id = 1;<br />
<br />
With the Delete Statement the "Where" keyword works the same way as it does for the Update Statement. This means you indicate the id of the record to be deleted.You then execute the statement to delete the record.<br />
<br />
<div>
<h4 style="text-align: left;">
<span style="color: #0b5394;">Writing SQL Statements - Using an Application To Interact With the Database</span></h4>
<br />
When building a business application routines (or stored procedures or sprocs) are used to execute transactions. In addition variables, holders for an unknown value, are also used. For example, if a user wants to update a record; it is unknown what record the user will select to update. Therefore, a list of records is presented to the user. The user then selects the record to be updated. The id (or primary key) of the selected record is passed to the applicable routine. The routine returns the result. In this example, the Select statement is referred to as a Select with Reference statement. The following picture shows the statement in the top portion of the picture, the results in the Results Grid, and the output in the Output window.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHGVCyUfn_g40jwBSaFr0fbAoBBUJcIKYonMhM6vayjKq40YMfmn8Mx-hCyiWUr9Tg9a1-ae6amk41S66wEuyzkLQK3rHKvNyK1sQAJpxh3t9kdaMEcfnJV-y1Xq9NJ6Tzm1V8K4GMhTw/s1600/return_actors.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHGVCyUfn_g40jwBSaFr0fbAoBBUJcIKYonMhM6vayjKq40YMfmn8Mx-hCyiWUr9Tg9a1-ae6amk41S66wEuyzkLQK3rHKvNyK1sQAJpxh3t9kdaMEcfnJV-y1Xq9NJ6Tzm1V8K4GMhTw/s1600/return_actors.jpg" height="230" width="320" /></a></div>
<br />
When using the Select with Reference statement the first thing that you do is set the value for the variable. In this example the variable is called @actor_id_to_select. Once we set the value of @actor_id_to_select the database automatically replaces every occurrence of the @actor_id_to_select variable with the assigned value. As previously mentioned, variables are used when a value is not known ahead of time. Using this approach enables users to select any valid (value that exists in the database) value to retrieve records that meet a specified condition. A select statement like the one above is typically used when a user wants to retrieve a specific record to update or add new details not previously supplied.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Additional Information</span></h3>
<br />
In this article we discussed database basics, the ANSI SQL standards and we discussed how to install and use MySQL as well as write SQL statements. If you would like to learn more about database programming and like to read books I recommend Murach at the following URL: <a href="http://www.murach.com/books/database.htm" target="_blank">http://www.murach.com/books/database.htm</a> You can also download SQL query examples to follow the tutorials outlined in the book.</div>
</div>
Anonymoushttp://www.blogger.com/profile/11770164970801071498noreply@blogger.comtag:blogger.com,1999:blog-7793781044289546361.post-76579816655872569512014-07-22T05:46:00.000-07:002014-07-22T05:46:37.695-07:00Getting Started with Google App Engine & Cloud SQL/NoSQL Datastore (Java) <div dir="ltr" style="text-align: left;" trbidi="on">
<span style="background-color: white;">One of Google's more recent endeavors is its offering of solutions that enable developers to create large-scale applications at reasonable prices. Whether you're interested in developing a game that might go viral; or, creating apps to become more skilled in working with "big data" you'll likely want to check out Google App Engine. This article provides an overview of what Google App Engine is, what is has to offer and how to start using it.</span><br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">What Google App Engine Is</span></h3>
<br />
<span style="background-color: white;"><a href="https://appengine.google.com/" target="_blank">Google App Engine</a></span> is a web-based, hosting platform that delivers cloud services. Developers can configure a development environment to connect to App Engine; and, make use of its many features to build scalable applications that deliver on demand. <span style="background-color: white;">Developers can create an application using
Python, Java, PHP or the Go programming language on a local development environment. The application can then be deployed to Google App Engine where it can be made available to the general public. Or, a developer can limit access to the application. For example, a developer might want to invite other developers to access, use and update the application before it goes public. If an application is to only target a specific group of users; that can also be defined using App Engine. App Engine also offers powerful backend solutions that can grow as an application increases in popularity. To get started you need a Google account.</span><br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;"><span style="background-color: white;">What Google App Engine Has to Offer</span></span></h3>
<div style="text-align: left;">
</div>
<br />
<span style="background-color: white;">Google App Engine features are grouped into 5 categories as follows: Main, Data, Administration, Billing and Resources. These features are discussed in more detail below.</span><br />
<br />
<span style="background-color: white;">When you first log into Google App Engine your list of applications displays. If you have not created any applications the page is blank and you are only presented with a Create Application button.</span><br />
<br />
<span style="background-color: white;"></span>
<span style="background-color: white;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIQi7SoCFIKsxvdiM8sXve6nAv3C5MF1bPVlRUKjHBdeFp4IqP9Rsxvr-OeZL8Fj6qtNEjOGSOHXRtu0UUH6234IrdCABISugPYeihW5kglIRaEFCwD4fq06mOSn8RNOyIb1Ex1VZEpkE/s1600/dashboard.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIQi7SoCFIKsxvdiM8sXve6nAv3C5MF1bPVlRUKjHBdeFp4IqP9Rsxvr-OeZL8Fj6qtNEjOGSOHXRtu0UUH6234IrdCABISugPYeihW5kglIRaEFCwD4fq06mOSn8RNOyIb1Ex1VZEpkE/s1600/dashboard.jpg" height="142" width="400" /></a></div>
<span style="background-color: white;"><br /></span>
<span style="background-color: white;">From Google App Engine you can
view reports, logs and even perform tasks such as "enable datastore" to
use Google App Engine's datastore (discussed later) for big data.</span><span style="background-color: white;">The
Google App Engine features, including its datastore, are discussed
later in this article we walk through the steps to create and deploy an
application to the Google App Engine and then use Google App Engine
features to monitor and manage the application.</span><br />
<br />
<h4 style="text-align: left;">
<span style="color: #0b5394;"><span style="background-color: white;">Main</span></span></h4>
<br />
<span style="background-color: white;">Features under the Main heading provide insight into an application deployed to Google App Engine. The App Engine dashboard lists transactions and usage hours (as shown below) as well as current load and error.</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiT2FRbDu79SiNEHw20KeW6cRdo8l4qup0BTqK-idv5QhZGDX5M1aDhciTaZw3mOmrQnQmztiIdPIt4zMR41lzeUv9OiX807aeBIJtuKkaZSPt-PK0rRciIlBwqkiwRU3FXd5Pw5-aRoGI/s1600/dashboard.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiT2FRbDu79SiNEHw20KeW6cRdo8l4qup0BTqK-idv5QhZGDX5M1aDhciTaZw3mOmrQnQmztiIdPIt4zMR41lzeUv9OiX807aeBIJtuKkaZSPt-PK0rRciIlBwqkiwRU3FXd5Pw5-aRoGI/s1600/dashboard.jpg" height="234" width="320" /></a></div>
In addition, you can view information about the number of instances (of an application) running, a log of items including info, debug, warnings, errors and critical. In addition a list of the versions of an application running linked to the instances and the ability to<a href="https://developers.google.com/appengine/docs/adminconsole/trafficsplitting" target="_blank"> split traffic</a>. You can also view a list of scheduled tasks (called Cron Jobs), view tasks queues defined using the <a href="https://developers.google.com/appengine/docs/java/config/queue" target="_blank">Java Task Queue configuration file</a> or the <a href="https://developers.google.com/appengine/docs/python/config/queue" target="_blank">Python Task Queue configuration file</a>. You can also view your usage versus <a href="https://developers.google.com/appengine/docs/quotas" target="_blank">quota data</a>.<br />
<br />
<h4 style="text-align: left;">
<span style="color: #0b5394;"><span style="background-color: white;">Data</span></span></h4>
<br />
<span style="background-color: white;">The Data option provides the ability to manage, view and search data in a datastore and create indexes. Developers can also backup and restore data from Google Cloud Storage. </span><br />
<br />
<span style="background-color: white;">Google App Engine offers three
options to store data as follows: App Engine Datastore, Google Cloud
SQL and Google Cloud Storage.</span><a href="https://developers.google.com/appengine/docs/java/cloud-sql/" target="_blank"> Google Cloud SQL</a> is a serve that let you connect your application to a traditional, relational SQL database. The <a href="https://developers.google.com/storage/" target="_blank">Google Cloud Storage</a>,
on the other hand, is a storage service (similar to Google drive) that
lets developers store files along with the files' metadata.<br />
<br />
<span style="background-color: white;"></span>The <a href="https://developers.google.com/appengine/docs/java/datastore/" target="_blank">App Engine datastore</a> is schemaless, which makes it more flexible than a relational database. The datastore stores data in a structure similar to that of a computer's file system in that it uses a parent/child hierarchy. The datastore is designed to automatically scale by distributing data, as necessary, as it writes to the datastore. To facilitate fast data searching queries are performed against pre-built indexes. As a result some queries that can be performed against a relational database (such as joins and subqueries) cannot be performed against the datastore.<br />
<span style="background-color: white;"></span><span style="background-color: white;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYSutpPCUaJZGdBBJrsVJGes-JTB7OTnRTYBRhLbreZBOrt0GoRz3lSq3WIEjwryKqtX4Ka2vUPweblXRjTYSxmaevYV1ckTOrU7hQ1PBjeOMA2ovjEJfBFn8afQ04PerFvSwnDkg9JI8/s1600/data.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYSutpPCUaJZGdBBJrsVJGes-JTB7OTnRTYBRhLbreZBOrt0GoRz3lSq3WIEjwryKqtX4Ka2vUPweblXRjTYSxmaevYV1ckTOrU7hQ1PBjeOMA2ovjEJfBFn8afQ04PerFvSwnDkg9JI8/s1600/data.jpg" height="174" width="320" /></a></div>
<span style="background-color: white;"><br /></span>
<br />
<span style="background-color: white;"></span>
<span style="background-color: white;">Two key buzz words associated
with cloud services, particularly when large amounts of data are
involved, are availability and scalability. Availability defines the ability for you/users to access your app was needed; considering that problems may cause
service interruptions such as maintenance (to apply software
updates, etc.); or, a transaction that crashes the server. </span>
<span style="background-color: white;">Scalability refers to your
application's ability to spread across multiple servers and balance the
load (user requests) so the application performs the same whether it has 10 or 10 million records. </span><br />
<br />
<h4 style="text-align: left;">
<span style="color: #0b5394;"><span style="background-color: white;">Administration</span></span></h4>
<br />
<span style="background-color: white;">The Administration includes the Application Settings, which provides the Application Title, Application Identifier (App Id), Service Account name and the application URL. If you create an application with a server component you will also see a Google APIs Console Project Number, as shown in the picture below.</span><br />
<span style="background-color: white;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp8fRuscGvsgdTwezKegYwvzAIJZIJA8u8W1XVEdcYvf8BhtWXvRSCfx8lOwDvAayXkGqTdKZ7I024TkfFJ3BCru5KgBAjfZdiPf77bNT1irG1zxcVQy1y1TdhK89G_0rnJ6aY4hFzbUw/s1600/application_settings.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp8fRuscGvsgdTwezKegYwvzAIJZIJA8u8W1XVEdcYvf8BhtWXvRSCfx8lOwDvAayXkGqTdKZ7I024TkfFJ3BCru5KgBAjfZdiPf77bNT1irG1zxcVQy1y1TdhK89G_0rnJ6aY4hFzbUw/s1600/application_settings.jpg" height="202" width="320" /></a></div>
<span style="background-color: white;"><br /></span>
<span style="background-color: white;"> If you click the Project Number link, the project opens in the Developers Console, as shown below. This provides an opportunity to enable one or more APIs (such as the Google Cloud Messaging for Android API).</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikt5GRrcAiIYvP79-4m0FUcqvzcEN9Y0RmorrQSi41jfqPZEsdCNMo2wN57shsfg_O1S-WA_Ny7ou-5whrQreu-UtnPaiNMneY3Uthxu2gESj3zshsY0kWLYw752mNV4ZgIW4-O6BrTaY/s1600/developers_console.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikt5GRrcAiIYvP79-4m0FUcqvzcEN9Y0RmorrQSi41jfqPZEsdCNMo2wN57shsfg_O1S-WA_Ny7ou-5whrQreu-UtnPaiNMneY3Uthxu2gESj3zshsY0kWLYw752mNV4ZgIW4-O6BrTaY/s1600/developers_console.jpg" height="149" width="320" /></a></div>
<br />
<span style="background-color: white;">Users can also select the Credentials option to create an API key because the</span> APIs in the Google Developers Console require that requests include a unique
project identifier to
monitor traffic, enforce quotas, and handle billing. Developers can create a Server key, Browser key, Android key and iOS key (as shown below).<br />
<span style="background-color: white;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvYP20dqbhhT_-i66XA3vRC8sYKZLzFfQYMVDwQzZkkBRUSerHbGiIMIJCF6ApjoHMWyHSC_lfjkM8_8zTfUZnG4WOrS1M-lwPRS9t3E0kOwFZrgXmNpfp-5ySmmhgWs9v2L_ZLwq4Mys/s1600/API_key.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvYP20dqbhhT_-i66XA3vRC8sYKZLzFfQYMVDwQzZkkBRUSerHbGiIMIJCF6ApjoHMWyHSC_lfjkM8_8zTfUZnG4WOrS1M-lwPRS9t3E0kOwFZrgXmNpfp-5ySmmhgWs9v2L_ZLwq4Mys/s1600/API_key.jpg" height="109" width="320" /></a></div>
<br /><span style="background-color: white;">Account Settings is also where you go to disable or delete an application as well as enable or disable datastore writes. You can also duplicate an application and enable Cloud Integration.</span><br />
<br />
<h4 style="text-align: left;">
<span style="color: #0b5394;"><span style="background-color: white;">Billing</span></span></h4>
<br />
<span style="background-color: white;">The Billing section provides access to your Billing Status, which is enabled when you create a Google Cloud Project. </span><span style="color: #0b5394;"><span style="background-color: white;"><br /></span></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeMGS3Qy2mOnJQDN3LIgxG7WEWXCm5-1OCagbfAB2Fsb7Q3WglvBBn9wrbuMKmMMeGOS-QhAVfLo1sVBu9NyNG3S2roUWtz7UhzzSfQjDltOmjodkYppz1p1VZKXlLQUhpN2vYHaJxFas/s1600/billing_info.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeMGS3Qy2mOnJQDN3LIgxG7WEWXCm5-1OCagbfAB2Fsb7Q3WglvBBn9wrbuMKmMMeGOS-QhAVfLo1sVBu9NyNG3S2roUWtz7UhzzSfQjDltOmjodkYppz1p1VZKXlLQUhpN2vYHaJxFas/s1600/billing_info.jpg" height="199" width="320" /></a></div>
<span style="background-color: white;"></span>
<h4 style="text-align: left;">
<span style="background-color: white;"><span style="color: #0b5394;">Resources</span></span></h4>
<br />
Resources includes links to documentation and FAQs. It also provides links to the Google App Engine Developer Forum, a link to Google App Engine SDKs, access to the Google App Engine status and access to support.<br />
<br />
<br /><h3 style="text-align: left;">
<span style="background-color: white;"><span style="color: #0b5394;">How to Start Using Google App Engine</span></span></h3>
<span style="background-color: white;"></span><br />
<span style="background-color: white;">To use Google App Engine you'll need to first install Eclipse and the </span><span style="background-color: white;"><span style="font-weight: normal;">latest Android Development Tools (ADT) Plugin if you have not done so already</span>. If you need more information on installing Eclipse you can review my previous article titled, "<a href="http://bussystemanalysis.blogspot.com/2013/09/programming-mobile-apps-for-android.html" target="_blank">Programming Mobile Apps for Android With Eclipse</a>". </span><br />
<br />
<div style="text-align: left;">
<span style="font-weight: normal;">If you have already set up your development environment, you will want to make sure you are using the Eclipse IDE 4.2 or higher and make sure you have upgraded to the latest Android Development Tools (ADT) Plugin. (</span><span class="ital"><span style="font-weight: normal;">Google Update Site for Eclipse 4.2 </span>- <a href="http://dl.google.com/eclipse/plugin/4.2">http://dl.google.com/eclipse/plugin/4.2 )</a></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPMOBpPIz0LHT5kbpGvkszHtRtESyFVBnkGvfyRD4uvEA-hIGaCRImGtBCEYVkWFG6MNCVKaMEf4m-3iRk66PRTdT86Jbbrr2f40jtcQTusxE2_X_9akkzuh5jrNrTdNjZcg-wIqNKOl0/s1600/eclipse_juno.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPMOBpPIz0LHT5kbpGvkszHtRtESyFVBnkGvfyRD4uvEA-hIGaCRImGtBCEYVkWFG6MNCVKaMEf4m-3iRk66PRTdT86Jbbrr2f40jtcQTusxE2_X_9akkzuh5jrNrTdNjZcg-wIqNKOl0/s1600/eclipse_juno.jpg" height="212" width="320" /></a></div>
<br />
Once you are running the latest Eclipse and have installed the latest ADT Plugin you are ready to configure your environment for Google App Engine.<br />
<h4 style="text-align: left;">
<span style="background-color: white;"><span style="color: #0b5394;"><span style="background-color: white;"> </span></span></span></h4>
<h4 style="text-align: left;">
<span style="background-color: white;"><span style="color: #0b5394;"><span style="background-color: white;">Get the Java Runtime Environment</span></span></span></h4>
<br />
<span style="background-color: white;">Once you have installed and configured Eclipse you should download and install the Java Runtime Environment (aka Java Virtual Machine) version 7 from <a href="http://www.java.com/en/download/" target="_blank">http://www.java.com/en/download/</a>. Installing the Java app is pretty straight forward; however, if you need more instruction you can visit <a href="https://developers.google.com/appengine/docs/java/gettingstarted/setup" target="_blank">https://developers.google.com/appengine/docs/java/gettingstarted/setup</a>. </span><br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: white;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXqUTQRO5lketbrYCN0NRttcKvLHYDfCuJPnNxkyN42VYolFwL3iqfgmmJOL9sVcjBw1YFQUyNWdD__ZNHNmutPWufQ9xz4oFw3um2pNmcB1k314v7W67CduU3RSRlMeeshJHxS9-Ycj0/s1600/download_java.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXqUTQRO5lketbrYCN0NRttcKvLHYDfCuJPnNxkyN42VYolFwL3iqfgmmJOL9sVcjBw1YFQUyNWdD__ZNHNmutPWufQ9xz4oFw3um2pNmcB1k314v7W67CduU3RSRlMeeshJHxS9-Ycj0/s1600/download_java.jpg" height="305" width="400" /> </a></span></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="background-color: white;">Also download and install the Java Platform (JDK) from <a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html" target="_blank">http://www.oracle.com/technetwork/java/javase/downloads/index.html</a>. </span></div>
<h4 style="text-align: left;">
<span style="color: #0b5394;">
</span><span style="background-color: white;"><span style="color: #0b5394;"> </span></span></h4>
<h4 style="text-align: left;">
<span style="background-color: white;"><span style="color: #0b5394;">Get the Google App Engine Tools </span></span></h4>
<span style="background-color: white;">There are several different ways to install the Google App Engine tools. The <a href="https://developers.google.com/eclipse/docs/download" target="_blank">Google Plugin for Eclipse</a>
provides a way to install the Google App Engine tools. However, you must
first determine the correct version of the plugin needed based on the
version of the development environment installed on your computer. To
determine the version of your development environment launch Eclipse. Next, select <i>Help</i> then <i>About ADT</i> to display the About ADT window, shown below. Next select the <i>Eclipse </i>button, outlined with a red box below.</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo6BZIVEWdQu_hau69de_NP3Yx2ceivOA5aAsCRlQVmVCDM3dU3Mp6xijUMPGnkxofkVt3iXU1PX3z_sK9ReMVrqSw69c2VL5P0xvQgw4sqY85ZZfBQ7GKqhKnyZsxUpJJM4-KQG3zkYQ/s1600/eclipse_version2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo6BZIVEWdQu_hau69de_NP3Yx2ceivOA5aAsCRlQVmVCDM3dU3Mp6xijUMPGnkxofkVt3iXU1PX3z_sK9ReMVrqSw69c2VL5P0xvQgw4sqY85ZZfBQ7GKqhKnyZsxUpJJM4-KQG3zkYQ/s1600/eclipse_version2.jpg" height="196" width="320" /></a></div>
<span style="background-color: white;">The About ADT Features window (shown below) displays. This window shows the version of the Eclipse Java Development environment and the Eclipse Platform (4.2 in this example). In this example I would install the Plugin for Eclipse 3.8/4.2 (Juno).</span><br />
<span style="background-color: white;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe2hN_QAnKEX13CD68yLg8g1LSPac7xyFa9ydPgLMnr8naCJQPbfkvvDcj_F8G47aMnkVrizq-GHZ3wI2GfxfzTIPcbh5yV_Kzt_GsN0vGOyPI1A_Gsz4xjzHsmBoo1eSSyPxdJsVFLqA/s1600/eclipse_version.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe2hN_QAnKEX13CD68yLg8g1LSPac7xyFa9ydPgLMnr8naCJQPbfkvvDcj_F8G47aMnkVrizq-GHZ3wI2GfxfzTIPcbh5yV_Kzt_GsN0vGOyPI1A_Gsz4xjzHsmBoo1eSSyPxdJsVFLqA/s1600/eclipse_version.jpg" height="315" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<span style="background-color: white;"><br /></span>
<span style="background-color: white;">To install the Google Plugin for Eclipse, Eclipse must be running. From the main menu select <i>Help</i>, then select <i>Install New Software</i> to display the Install window shown below.</span><br />
<span style="background-color: white;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhm2MTSC5Su0CDau-J4QWlgVD5fgxQ5QBEl7K4Ab7MF8poaySPY7gkX3_RCysnhuOMqj2DJEwh8b6keItrXJuxd3XRW3cmjD3voKAO5AtFrVxzpFXuD-DcnjCC0V2CxaczwCGPNC7xgPvY/s1600/install_window.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhm2MTSC5Su0CDau-J4QWlgVD5fgxQ5QBEl7K4Ab7MF8poaySPY7gkX3_RCysnhuOMqj2DJEwh8b6keItrXJuxd3XRW3cmjD3voKAO5AtFrVxzpFXuD-DcnjCC0V2CxaczwCGPNC7xgPvY/s1600/install_window.jpg" height="248" width="320" /></a></div>
<br />
<span style="background-color: white;">Next copy the URL under the "<a href="https://developers.google.com/eclipse/docs/download" target="_blank">Direct Plugin Link</a>" column.</span><br />
<span style="background-color: white;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6H5yh-irqXv2r2_DJTKM4p49pJ7JxQyD4Ir8gegmi7aCEI9_n-hiW_iRdwwni0si-Rwk17LRIPrE_VmXFlfikgwQXbi8qVJ3eOK96IimNEXGgpDvb3e_aiUDQEhLxaFHUC85uObKfU98/s1600/Eclipse_plugin_link.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6H5yh-irqXv2r2_DJTKM4p49pJ7JxQyD4Ir8gegmi7aCEI9_n-hiW_iRdwwni0si-Rwk17LRIPrE_VmXFlfikgwQXbi8qVJ3eOK96IimNEXGgpDvb3e_aiUDQEhLxaFHUC85uObKfU98/s1600/Eclipse_plugin_link.jpg" height="179" width="320" /></a></div>
<span style="background-color: white;"><br /></span>
<span style="background-color: white;">Paste the link in the <i>Work with:</i> field, as shown below. A list of the plugin tools displays. You can then select the tools to be installed.</span><br />
<span style="background-color: white;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhorPc3pER3emF55ZcawL0z2FvXDIVzx6M0KJQa3wrqcfsgMgdbXqcFXl9xk_TaudlXu_mLMDREYCockJ4BCwuOaw6asjblHwbCEqO7TpTsvLDyVMXwnemZ-UVQe8nx7osx0WTVSdrr9Qw/s1600/available_software.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhorPc3pER3emF55ZcawL0z2FvXDIVzx6M0KJQa3wrqcfsgMgdbXqcFXl9xk_TaudlXu_mLMDREYCockJ4BCwuOaw6asjblHwbCEqO7TpTsvLDyVMXwnemZ-UVQe8nx7osx0WTVSdrr9Qw/s1600/available_software.jpg" height="285" width="400" /></a></div>
<span style="background-color: white;"></span><br />
<br />
<span style="background-color: white;"> Notice you have the option to install Maven tools. You also have the option to install the Google Web Toolkit (GWT), which can be used to build application browser-based Ajax applications and compile the code to optimized JavaScript. You can use this approach to get Maven and GWT. Or, you can can download Maven (as discussed later) and then install and configure it. And then download, install and configure GWT by accessing the following website: <a href="http://www.gwtproject.org/download.html" target="_blank">http://www.gwtproject.org/download.html</a></span><br />
<br />
<span style="background-color: white;">Once you have selected the desired tools click the Next button and follow the wizard prompts to install the selected tools.</span>
<span style="background-color: white;">For more information see <a href="https://developers.google.com/eclipse/docs/getting_started" target="_blank">https://developers.google.com/eclipse/docs/getting_started</a>. Once you have installed the Google Plugin for Eclipse you are now able to create even more project types, as shown in the following picture.</span><br />
<span style="background-color: white;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSbka88blM2VGjrrVMo0f36GXCD6N7Ykay7Iq1oU6tv8Cb-SzjyGfwMg3VwFgyoRN1ENVeVnUjCEg-UtioMU1THMbgXBaNlW6Kvtk_-XI00iPfa1Dp_acoKeVwpWU1NMf5dK7CcmEfAoQ/s1600/create_project_type.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSbka88blM2VGjrrVMo0f36GXCD6N7Ykay7Iq1oU6tv8Cb-SzjyGfwMg3VwFgyoRN1ENVeVnUjCEg-UtioMU1THMbgXBaNlW6Kvtk_-XI00iPfa1Dp_acoKeVwpWU1NMf5dK7CcmEfAoQ/s1600/create_project_type.jpg" height="310" width="320" /></a></div>
<br />
<span style="background-color: white;">And, you can also access some
cloud resources from within Eclipse, as shown below. Notice, in this
example, the "Select App Id" window displays a list of App Ids available
from the Google App Engine hosting site. And, notice the bottom of the Select App Id window
shows the username used to log into the Google App Engine.</span><br />
<span style="background-color: white;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgC_jEfGMYdKW8llNtdASR5hQcgqjafZ2nfHdYVNK_Gm7G-7A_bWS9i82R4iiNCVvuhLZZl6uDSfxo37EEjK5Eck_fPKSZ7qMXE6qSTViG9_rExduK6vUEN_v0AbXimmfNLqY2MWIYr3NM/s1600/access_cloud_resource_eclipse.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgC_jEfGMYdKW8llNtdASR5hQcgqjafZ2nfHdYVNK_Gm7G-7A_bWS9i82R4iiNCVvuhLZZl6uDSfxo37EEjK5Eck_fPKSZ7qMXE6qSTViG9_rExduK6vUEN_v0AbXimmfNLqY2MWIYr3NM/s1600/access_cloud_resource_eclipse.jpg" height="400" width="352" /></a></div>
<h3 style="text-align: left;">
<span style="background-color: white;"><span style="color: #0b5394;">Google Cloud SDK</span> </span></h3>
<br />
<span style="background-color: white;">The <a href="https://developers.google.com/cloud/sdk/" target="_blank">Google Cloud SDK</a> provides a way to connect to the Google Cloud and download and install the Google App Engine SDK. Once you have downloaded and installed the </span><span style="background-color: white;"><span style="background-color: white;"> Google Cloud </span>SDK you can follow the command line prompts as outlined in the Installation and Quick Start section at <a href="https://developers.google.com/cloud/sdk/">https://developers.google.com/cloud/sdk/</a>. You will have the option to install the Google App Engine application and define the language you will use (i.e., Java, Python and PHP or Go) to build applications. The following picture shows the prompts that display once the "install.bat" file (in the google-could-sdk folder) is executed.</span><br />
<span style="background-color: white;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiitGuiSp5PPg-8pSJSD0VyFEeWqgxt5BgXTWnGuVQ_HnCMPvWMi5PM25xWu5TuuuLdaFHI4Ug2-wvONAKGMZGpubioQ3H8ct8sXSXlHMzrivBk_GAviibxtxpHJinLx89aYdiqAnyKKHY/s1600/google_cloud_sdk.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiitGuiSp5PPg-8pSJSD0VyFEeWqgxt5BgXTWnGuVQ_HnCMPvWMi5PM25xWu5TuuuLdaFHI4Ug2-wvONAKGMZGpubioQ3H8ct8sXSXlHMzrivBk_GAviibxtxpHJinLx89aYdiqAnyKKHY/s1600/google_cloud_sdk.jpg" height="371" width="400" /></a></div>
<span style="background-color: white;"><br /></span>
<span style="background-color: white;">Once the Google Cloud SDK is installed and configured you are asked if you want the system PATH to be updated so you can use the Cloud SDK more easily. Press Y to have the Cloud SDK installer update the system PATH. If the installer is not able to update the system Path, Windows users may manually update the PATH variable.</span><br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: white;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJQFo1Yr9Yoj6rTsN6g3FRx-Cy3nf9MoVvqP7u50IJVK48ofTDhA-IM2NtU8GWWB6vDDn_5qivnkySafJ6IOG-MVrAPTp4IkfGBcUrgvvhhIrGdxFM0gUQWahCGo2dLg6mdjT8e0EbdRc/s1600/system_variable_CloudSDK.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJQFo1Yr9Yoj6rTsN6g3FRx-Cy3nf9MoVvqP7u50IJVK48ofTDhA-IM2NtU8GWWB6vDDn_5qivnkySafJ6IOG-MVrAPTp4IkfGBcUrgvvhhIrGdxFM0gUQWahCGo2dLg6mdjT8e0EbdRc/s1600/system_variable_CloudSDK.jpg" height="320" width="249" /></a></span></div>
<br />
<br />
<span style="background-color: white;">You can then use a command line tool to perform various tasks. You can also invoke the "help" command to view a list of tasks and related commands that can be executed using the Cloud SDK.</span><br />
<span style="background-color: white;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXqqTQOVUjyNy5ZTOJZzP6PdFyXAkm2_LokoUoac_PdsDB50HUqEzup8dfi3puzQjUzOUqN3gFyJ_wSp0tBqzIrNO7IoCR8r4X2_4cyGT1EEntfIX_ocwz-vIglxzxqxBbR8LpNk1VwNU/s1600/cloud_tasks.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXqqTQOVUjyNy5ZTOJZzP6PdFyXAkm2_LokoUoac_PdsDB50HUqEzup8dfi3puzQjUzOUqN3gFyJ_wSp0tBqzIrNO7IoCR8r4X2_4cyGT1EEntfIX_ocwz-vIglxzxqxBbR8LpNk1VwNU/s1600/cloud_tasks.jpg" height="320" width="253" /></a></div>
<h3 style="text-align: left;">
<span style="color: #0b5394;">Google App Engine SDK for Java </span></h3>
<br />
<span style="background-color: white;">The Google App Engine SDK includes the components developers need to create applications to be hosted by the Google App Engine. The SDK includes the .jar file and documentation for the App Engine API. And, it supports the functionality needed to test your application before it is deployed to the Google App Engine server. For example, the SDK includes the com.google.appengine.tools package, which includes the Google App Engine Tools API that can be embedded in IDEs to test and deploy Google App Engine applications. In addition, it provides the appcfg tool so developers can execute commands using the command line interface. The picture below shows some of the commands that can be executed using <a href="https://developers.google.com/appengine/docs/appcfg" target="_blank">appcfg</a>:</span><br />
<span style="background-color: white;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8HPBhUp9sUk12KeN24zCEZ_t6nepzgVc1NokHWUXObNAEoZesiRYpPcFri-l_wx9VKVI0LSWIh3pH4kgbv7BjiSygaGBY1YYUfem5XQZPb8_Xp0TJsh16lhjIF0MgwQnfvOsr1_WFsy8/s1600/Google_App_EngSDK_Commands.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8HPBhUp9sUk12KeN24zCEZ_t6nepzgVc1NokHWUXObNAEoZesiRYpPcFri-l_wx9VKVI0LSWIh3pH4kgbv7BjiSygaGBY1YYUfem5XQZPb8_Xp0TJsh16lhjIF0MgwQnfvOsr1_WFsy8/s1600/Google_App_EngSDK_Commands.jpg" height="174" width="320" /></a></div>
<span style="background-color: white;"><br /></span>
<span style="background-color: white;"></span><br />
The appengine and apphosting API classes are located in the :\appengine-java-sdk-1.9.7\src\user\appengine-api-1.0-sdk-1.9.7-src\com\google folder. These classes are used when building a Google App Engine connected application.<br />
<br />
<br />
<span style="background-color: white;">There is a Google App Engine SDK for PHP, Python, Java and the Go programming languages. Developers can download the SDK that supports the desired language. (For this article I have downloaded and installed the Google App Ending SDK for Java.) You can download, unzip and install the Google App Engine for Java from <a href="https://developers.google.com/appengine/downloads" target="_blank">https://developers.google.com/appengine/downloads</a> where you will select the the link under the Package column</span>.<br />
<div style="text-align: left;">
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJQCyr7CwymsGnibkc6Ox02J2uivw6mRgR3YKeaz46aDc2xCxD1_-kd1ky_yX3n6seMk6QUU5mNnDQOB1RcToTJHBF3QHmz8feml0teXpf8y2IXBXSP9NFa-m_ISd4zoayu_jst-d46gk/s1600/Google_App_Engine_SDK.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJQCyr7CwymsGnibkc6Ox02J2uivw6mRgR3YKeaz46aDc2xCxD1_-kd1ky_yX3n6seMk6QUU5mNnDQOB1RcToTJHBF3QHmz8feml0teXpf8y2IXBXSP9NFa-m_ISd4zoayu_jst-d46gk/s1600/Google_App_Engine_SDK.jpg" height="230" width="320" /></a></div>
<br />
This downloads the source files for the App Engine and includes tutorials in the folder called "demos". Most of the folders include a README file that provides instructions. However, note that if you plan to use Maven, it will download the Google App Engine SDK files and the source files for the Google App Engine tutorials.</div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYinRv9QMFVnd3iOY5NCkTa47cUCd5wCCEJYYFsOpiqqFWWavqYtchJYqleJ6uKJral9utHzHbR4I_WWhnWe6fNj05TdzLYqvfdsXvMPvqRcrptpHAT7VAw4Kfb-3IhZfBsL-6jMHPDOU/s1600/java_SDK.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYinRv9QMFVnd3iOY5NCkTa47cUCd5wCCEJYYFsOpiqqFWWavqYtchJYqleJ6uKJral9utHzHbR4I_WWhnWe6fNj05TdzLYqvfdsXvMPvqRcrptpHAT7VAw4Kfb-3IhZfBsL-6jMHPDOU/s1600/java_SDK.jpg" height="308" width="400" /></a></div>
<h4 style="text-align: left;">
<span style="color: #0b5394;">Get Maven </span></h4>
Maven is a tool that can be used to download a project and the related project files. Maven projects include the pom.xml file in the root directory and pom.xml files in the subdirectories. The pom.xml file in the root directory defines the structure of the project. As shown in the following picture the pom.xml root directory file includes the project's groupID (com.google.appengine.demos), artifactId (guestbook) and version (1.0-SNAPSHOT).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSl4yk_StkRNFmBG3V7JBFq85BM30UEo0nGnWfqXNcGRu2LMZpE_JmdBbCDZvxUZ8K61vvGsmaUn5IZ31XBnlZQ7SvcGeefePgFTAAkuF_ZAW0qCos3dxt_LfEOvWevB7Dz0LQa5jb5Xg/s1600/pom_xml_file.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSl4yk_StkRNFmBG3V7JBFq85BM30UEo0nGnWfqXNcGRu2LMZpE_JmdBbCDZvxUZ8K61vvGsmaUn5IZ31XBnlZQ7SvcGeefePgFTAAkuF_ZAW0qCos3dxt_LfEOvWevB7Dz0LQa5jb5Xg/s1600/pom_xml_file.jpg" height="344" width="400" /></a></div>
<br />
Notice the pom.xml file (above) also defines the modules that makeup the project, as shown in the following picture where the modules are: guestbook-war and guestbook-ear.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPZNux9gIkFmVFa-kHyydF1cJGF9YrfY9pqNUGzAAzJAqgTofbaFYVYwMEke3TkKXhMUM35H9ctkKN_bBJ1Q3O-ZuUjhKO2p457EKUJ6lW011-MhtcvOARGwIbx-mc58OtCFMRY9swknQ/s1600/maven_modules.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPZNux9gIkFmVFa-kHyydF1cJGF9YrfY9pqNUGzAAzJAqgTofbaFYVYwMEke3TkKXhMUM35H9ctkKN_bBJ1Q3O-ZuUjhKO2p457EKUJ6lW011-MhtcvOARGwIbx-mc58OtCFMRY9swknQ/s1600/maven_modules.jpg" height="252" width="320" /></a></div>
<br />
To use Maven you will have to download it, install it and and then configure it.. To get Maven you will download<span style="background-color: white;"> the applicable file. For example, I downloaded the apache-maven-3.2.2-bin.zip file from <a href="http://maven.apache.org/download.cgi" target="_blank">http://maven.apache.org/download.cgi</a>. If you download the zipped file, you can extract the zip file contents to a location on your hard drive. Since I am running windows I unzipped the files to the "c:/program files" directory.</span><br />
<br />
<span style="background-color: white;">Next you will need to configure the environment variables. Since I am using windows I had to access the <i>System Properties</i> window, and then select the <i>Advanced </i>tab. I then selected <i>Environment Variables, </i>as shown below.</span><br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjP2b6s9XAfWB0WJHMIF39Je9-sqdbtTfCrNLOSA3TuhTfV871UEIO-yVYrB-qD-budHunHnIqb2WMcQYHqPJ3ccu8nCrl_piCuVCkoyzo4WkV05R-q116IqCQJRhMEOUitg0ajGXvT20/s1600/environment_variables.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjP2b6s9XAfWB0WJHMIF39Je9-sqdbtTfCrNLOSA3TuhTfV871UEIO-yVYrB-qD-budHunHnIqb2WMcQYHqPJ3ccu8nCrl_piCuVCkoyzo4WkV05R-q116IqCQJRhMEOUitg0ajGXvT20/s1600/environment_variables.jpg" height="304" width="400" /></a></div>
<span style="background-color: white;"></span><br />
<span style="background-color: white;">You can then add the variables necessary to use Maven.The following window shows the variables I added as outlined in the Readme.txt file in the root folder of the apache-maven-3.2.2 folder created when I unzipped the </span><span style="background-color: white;"><span style="background-color: white;">apache-maven-3.2.2-bin.zip file</span>.</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgs2WexCfwA32NPCMlvH55BzAqXol9-IuPcuUKJl-QlM1Jh4fDR6UywAIIDdVyeP9fTA-oSX5cTSEwW18ukDkWvqRUkmH4hG6XOV3EtgSzmgM3D0OMILJBGt1gOObWLBv2IwABH9cBxJ3M/s1600/environment_variables2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgs2WexCfwA32NPCMlvH55BzAqXol9-IuPcuUKJl-QlM1Jh4fDR6UywAIIDdVyeP9fTA-oSX5cTSEwW18ukDkWvqRUkmH4hG6XOV3EtgSzmgM3D0OMILJBGt1gOObWLBv2IwABH9cBxJ3M/s1600/environment_variables2.jpg" height="320" width="278" /></a></div>
<br />
<span style="background-color: white;">Once you have followed the instructions to install Maven; you will want to verify that it is installed correctly. To verify Maven is installed you do the following:</span><br />
<span style="background-color: white;"><br />From the command prompt type: <b>mvn -v</b>, as shown in the picture below. If Maven is correctly installed the Maven version, along with the other information shown below, displays.</span><br />
<span style="background-color: white;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: white;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD6lRre7p8RTvB94woBQGbAr7s3UOEnTz5K5JPxZWxr2eU9gUAsqV4QO0DXwEl3UfJwBLN6Q4ZoW_WJqkDFc_JVgHjnaV5NTb_-INaLNZoP0sQ9D4nqbDdJhHb0j9TUhxa_PEea5MKj-A/s1600/verify_maven_installed.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD6lRre7p8RTvB94woBQGbAr7s3UOEnTz5K5JPxZWxr2eU9gUAsqV4QO0DXwEl3UfJwBLN6Q4ZoW_WJqkDFc_JVgHjnaV5NTb_-INaLNZoP0sQ9D4nqbDdJhHb0j9TUhxa_PEea5MKj-A/s1600/verify_maven_installed.jpg" height="198" width="400" /></a></span></div>
<br />
Once you confirm that Maven is installed correctly you can follow the instructions outlined in the following location: <a href="https://developers.google.com/appengine/docs/java/gettingstarted/creating#creating_the_project" target="_blank">https://developers.google.com/appengine/docs/java/gettingstarted/creating#creating_the_project</a> to get the project files. After you complete the instructions the following messages display and the project is downloaded to the location you specified.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvBiPyn_bTftznT1jB-8WNaFoLyweeIuIBnCrWLNQtik0FOpYg_OT0OzXDjQ21v6tahBHgZZ9HcQyyBRD9If-nZzE8PVUAv-tuTcgHEeF9s19H39sOAjQQUQGKxc9h_ampT95LJvzsk5E/s1600/download_guestbook_app.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvBiPyn_bTftznT1jB-8WNaFoLyweeIuIBnCrWLNQtik0FOpYg_OT0OzXDjQ21v6tahBHgZZ9HcQyyBRD9If-nZzE8PVUAv-tuTcgHEeF9s19H39sOAjQQUQGKxc9h_ampT95LJvzsk5E/s1600/download_guestbook_app.jpg" height="382" width="400" /></a></div>
<br />
To execute a command for a Maven project you must first navigate to the root folder of the project. As shown below, I want to execute commands for the guestbook project (located at c:\users\owner\documents\projects\guestbook). Therefore, I first used the command to change to the guestbook directory. Then I executed my commands.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKZYvXICkYcwWRTPEbgQsKwBYBlcLHzoJaNDhQ3GkJKl18e_aDpZrFwKBIuniqVnTBsgwmNysgO9T-CK3FL6qyWMBMc_neBhVYHjND8LWMBFAUdlGzUs9uGN9vuFr6xAKRKUHk32V0KVE/s1600/google_app_engine_dash.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKZYvXICkYcwWRTPEbgQsKwBYBlcLHzoJaNDhQ3GkJKl18e_aDpZrFwKBIuniqVnTBsgwmNysgO9T-CK3FL6qyWMBMc_neBhVYHjND8LWMBFAUdlGzUs9uGN9vuFr6xAKRKUHk32V0KVE/s1600/google_app_engine_dash.jpg" height="98" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhesk0urWeWti_WcHTrgRDXYS_FoVcjUxOQqYHTIhd8nRhJe9ZK5cxVYDt4TILQ1IR2QPVtiDuRTvMYnwIHaGzdYhiXG-Og8rpeBWFbidIlrVkOszE884ZhlbsEg_4QEloDwnR7jG6IElw/s1600/clean_project.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhesk0urWeWti_WcHTrgRDXYS_FoVcjUxOQqYHTIhd8nRhJe9ZK5cxVYDt4TILQ1IR2QPVtiDuRTvMYnwIHaGzdYhiXG-Og8rpeBWFbidIlrVkOszE884ZhlbsEg_4QEloDwnR7jG6IElw/s1600/clean_project.jpg" height="391" width="400" /></a></div>
<br />
Maven's functionality is built from a variety of plugins. To learn more about Maven plugins you can visit the following link: <a href="http://maven.apache.org/plugins/" target="_blank">http://maven.apache.org/plugins/</a>. The Maven Documentation site is located at: <a href="https://cwiki.apache.org/confluence/display/MAVEN/Index" target="_blank">https://cwiki.apache.org/confluence/display/MAVEN/Index</a><br />
<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Testing Your Development Environment</span></h3>
Once you have everything set up you can test your environment by building a project that generates sample code. To begin, log into the Google App Engine Dashboard at <a href="https://appengine.google.com/" target="_blank">https://appengine.google.com/</a> . If you have not created any application your dashboard looks like the one below. Click the Create Application button, highlighted below with a red box.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgujtO8XK-cBrXEr5ej1bS2M489Wi3lFUYHl133I18xLq34ktZb6RSBlqDidFgy5476yNixlxlvE4rRyqrfOEY4PY6K72S67FN1wD4N-GRL32g69tW3_koVKRjNhs1BgrmtpPMnqQnCRDo/s1600/google_app_engine_dash.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgujtO8XK-cBrXEr5ej1bS2M489Wi3lFUYHl133I18xLq34ktZb6RSBlqDidFgy5476yNixlxlvE4rRyqrfOEY4PY6K72S67FN1wD4N-GRL32g69tW3_koVKRjNhs1BgrmtpPMnqQnCRDo/s1600/google_app_engine_dash.jpg" height="98" width="320" /></a></div>
<br />
When the Create an Application webpage displays add an Application Identifier in the applicable field and be sure to click the Check Availability button.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX7Twr03ZLNWO1PugFbYcSXVMOhy1C5Vhru2xpiXo6MXrhzgStMEVBe9tx-QCDKvHW41r9BIF62CbAuoKGhojQVT8UL3LPnJXe6aGRmu4E24jwt-Pq5i_briGP8Ncw7G5wcQFag5PBNmY/s1600/Create_an_Application.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX7Twr03ZLNWO1PugFbYcSXVMOhy1C5Vhru2xpiXo6MXrhzgStMEVBe9tx-QCDKvHW41r9BIF62CbAuoKGhojQVT8UL3LPnJXe6aGRmu4E24jwt-Pq5i_briGP8Ncw7G5wcQFag5PBNmY/s1600/Create_an_Application.jpg" height="258" width="320" /></a></div>
<br />
<br />
If the Identifier you added is not available: Or, if the name you entered does not meet the applicable criteria an error message, like the one shown below, displays. You must make another selection until you enter an Identifier that is not in use and meets the naming criteria.<br />
<br />
<b id="ae-createapp-id-error">Sorry, "test" is invalid. Application
Identifier must be between 6 and 30 characters. Lowercase letters,
digits, and hyphens are acceptable characters. Must start with a letter.
Trailing hyphens are prohibited.</b><br />
<br />
Next enter an Application Title and then click the Create Application button at the button of the page. The application is created and is added to the dashboard. Next, launch Eclipse and select File ->New -> Project to display the New Project windows. Expand the Google folder and select Web Application Project then click Next.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijVocYY6omp4jG-gtaDJLxsYK50dNfAjf4UkGtFSc2U96rXu5g9W4jN4yu3PBw1gPuZ7H5Gu1lQ4wzbLjXlHf0jOEz7w1_ppgC9WCgZbApqAZ0a7rEv3vHRMc0hKYVkyp2wgmLPoslAsM/s1600/new_google_project.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijVocYY6omp4jG-gtaDJLxsYK50dNfAjf4UkGtFSc2U96rXu5g9W4jN4yu3PBw1gPuZ7H5Gu1lQ4wzbLjXlHf0jOEz7w1_ppgC9WCgZbApqAZ0a7rEv3vHRMc0hKYVkyp2wgmLPoslAsM/s1600/new_google_project.jpg" height="311" width="320" /></a></div>
The Create a Web Application Project window, shown below, displays. If you installed the Google Web Toolkit, that option should be available. You should also have a Use Google App Engine checkbox to indicate that you want to use Google App Engine. Enter a Project Name and a Package name for the new application. Leave the Use Google App Engine checkbox checked.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNMiDsluX_fh_VESVgPJ30LdMwT-F9jcRTU61yiUYiqragkVUfz1t0BF67otoNKPjpWsMFP3R22zVdiVZfiqalpm6qeLZV2Y1rr8viV7CGpDvbhs_kOiZTWB85CZOE6LghIZSGMc_mFoo/s1600/create_a_web_application.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNMiDsluX_fh_VESVgPJ30LdMwT-F9jcRTU61yiUYiqragkVUfz1t0BF67otoNKPjpWsMFP3R22zVdiVZfiqalpm6qeLZV2Y1rr8viV7CGpDvbhs_kOiZTWB85CZOE6LghIZSGMc_mFoo/s1600/create_a_web_application.jpg" height="400" width="273" /></a></div>
<br />
Under the Identifiers for Google App Engine section select the Use App ID option. Then click Browse. The Select App ID window displays. Select the Application Identifier you created then click the OK button. Make sure the Generate Project Sample Code checkbox is checked.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgudlRofLPU7DO9oQcnIX35wNCsKglpWkAQd8JbvtEJKwi_ssXBUFM3dso1-yyXtLim7GPA2i1-JfKjtnpJia0H9qm6ReOWI1hjPnSnsjP1e-l7CkX4sQA_0yUxl76tOSslg30N3Cprtog/s1600/create_web_app.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgudlRofLPU7DO9oQcnIX35wNCsKglpWkAQd8JbvtEJKwi_ssXBUFM3dso1-yyXtLim7GPA2i1-JfKjtnpJia0H9qm6ReOWI1hjPnSnsjP1e-l7CkX4sQA_0yUxl76tOSslg30N3Cprtog/s1600/create_web_app.jpg" height="400" width="272" /></a></div>
<br />
Once all required fields are completed, click the Finish button. The new project displays in the Project Explorer window. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKacXncRRovQK_bH5XUd6ciXMeHHnWTQlvqxou7u4SgiYRs6KbeHV2qpJXfCCTImN0KGE0vRLcn_iwBmyQQaVRieKmdCTIGigxBLmAm9bcEDN2G1orikhuR48fE41KGCCVpX4_u2jAsDg/s1600/guestbookG.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKacXncRRovQK_bH5XUd6ciXMeHHnWTQlvqxou7u4SgiYRs6KbeHV2qpJXfCCTImN0KGE0vRLcn_iwBmyQQaVRieKmdCTIGigxBLmAm9bcEDN2G1orikhuR48fE41KGCCVpX4_u2jAsDg/s1600/guestbookG.jpg" height="320" width="310" /></a></div>
<br />
You can now deploy the application and it should work. Right click on the project to be deployed to Google App Engine. Select Google -> Deploy to App Engine, as shown below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU7_08fHv5aQoull7SxPpS1lpTehDdzrU1lCRaxrSCgn8RCwglyrUefbD-flu4DPXJW_YP6n7BX-rG2eIr4hafuPDffVPmaXJKitW0exE6FsdfegtNH8tEctudi5IOIrApAI0bEyrYgiY/s1600/deploy_google_app_engine.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU7_08fHv5aQoull7SxPpS1lpTehDdzrU1lCRaxrSCgn8RCwglyrUefbD-flu4DPXJW_YP6n7BX-rG2eIr4hafuPDffVPmaXJKitW0exE6FsdfegtNH8tEctudi5IOIrApAI0bEyrYgiY/s1600/deploy_google_app_engine.jpg" height="400" width="381" /></a></div>
<br />
The Deploy window displays.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCIgW_tQ0L6RGhiv8b9mPpdLxGW7k3kqzFae3m28OJJK1JMXPhihdVQvx3W7CjnCDro-T5yjQaNm3HgO2F7hurJSPh0NTh2d-POL990iMscGMisVeYjRbgwyPzD_Ntr5caDa9a54q_J-g/s1600/deploy_app_engine.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCIgW_tQ0L6RGhiv8b9mPpdLxGW7k3kqzFae3m28OJJK1JMXPhihdVQvx3W7CjnCDro-T5yjQaNm3HgO2F7hurJSPh0NTh2d-POL990iMscGMisVeYjRbgwyPzD_Ntr5caDa9a54q_J-g/s1600/deploy_app_engine.jpg" height="289" width="320" /></a></div>
<br />
Accept the defaults and click the Deploy button. The Deploying window, shown below, displays.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW1ehMKzibzX5vEU-udCoNklVeAnbus8i3fmfLrpEixl0CtlSXvpAi9Elo_Vgy_2tPewQfuXTYJgErbs7SBM9OCEtPyTE7Wlc3ddEE-vXvSGyF87_9X4a2na6hkXPbMSzx8W3D2x_hxEc/s1600/deploying.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW1ehMKzibzX5vEU-udCoNklVeAnbus8i3fmfLrpEixl0CtlSXvpAi9Elo_Vgy_2tPewQfuXTYJgErbs7SBM9OCEtPyTE7Wlc3ddEE-vXvSGyF87_9X4a2na6hkXPbMSzx8W3D2x_hxEc/s1600/deploying.jpg" height="158" width="320" /></a></div>
<br />
<br />
<br />
<br />
Once the application is deployed to Google App Engine, the Web Application Starter page displays, as shown below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg3RRRqzxLQZ-K-NL6trSNpBdk7vAdD2W9tO96dUWfXR3EJj_cBUVOykGeRbb0_t-gSBpPXrX9_11EC5k635GOryZ_hMdkSpDg-L0LjtGqTMHQfnNnphdEZw6Yq0NxbdaDPRBockB0zzE/s1600/Web_starter_project.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg3RRRqzxLQZ-K-NL6trSNpBdk7vAdD2W9tO96dUWfXR3EJj_cBUVOykGeRbb0_t-gSBpPXrX9_11EC5k635GOryZ_hMdkSpDg-L0LjtGqTMHQfnNnphdEZw6Yq0NxbdaDPRBockB0zzE/s1600/Web_starter_project.jpg" height="183" width="320" /></a></div>
<br />
<br />
<br />
Enter a name in the Please enter your name box then click Send. The Google App Engine server replies, as shown below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXUout25RI-G0ezHvJzw-jpXptKSLe_XAopYULmmEc7ooWzpy2Tzrk-Z4uHJpM_xQB9Cw72eLR_WeGAbnotVeXJ85DYdyc10p9ta1vxFFpWXjTWjU4NIS3SVJiLeh5rO2mLlxOs9UFxjo/s1600/google_app_engine_reply.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXUout25RI-G0ezHvJzw-jpXptKSLe_XAopYULmmEc7ooWzpy2Tzrk-Z4uHJpM_xQB9Cw72eLR_WeGAbnotVeXJ85DYdyc10p9ta1vxFFpWXjTWjU4NIS3SVJiLeh5rO2mLlxOs9UFxjo/s1600/google_app_engine_reply.jpg" height="181" width="320" /></a></div>
If your starter application worked; congratulations your development environment is configured correctly and you can begin developing scalable applications built on Google App Engine. Below is a list of resources you can access to learn more about Google App Engine.<br />
<br />
<br />
<br />
<a href="https://developers.google.com//cloud" target="_blank"><span style="background-color: white;">https://developers.google.com//cloud</span></a><br />
<a href="https://developers.google.com/appengine/docs/whatisgoogleappengine" target="_blank"><span style="background-color: white;">https://developers.google.com/appengine/docs/whatisgoogleappengine </span></a><br />
<span style="background-color: white;">Google App Engine Project Page: <a href="http://code.google.com/p/googleappengine/" target="_blank">http://code.google.com/p/googleappengine/</a></span><br />
<span style="background-color: white;">Google App Engine Issue Tracker <a href="http://code.google.com/p/googleappengine/issues/list" target="_blank">http://code.google.com/p/googleappengine/issues/list</a></span><br />
Submit an Issue: <a href="https://code.google.com/p/googleappengine/wiki/FilingIssues?tm=3">https://code.google.com/p/googleappengine/wiki/FilingIssues?tm=3</a></div>
Anonymoushttp://www.blogger.com/profile/11770164970801071498noreply@blogger.comtag:blogger.com,1999:blog-7793781044289546361.post-21156269838663711522014-03-31T22:42:00.002-07:002014-04-09T14:04:32.285-07:00Android Programming With the Google+ API Overview <div dir="ltr" style="text-align: left;" trbidi="on">
Since its launch in 2011 Google+ has gained a reputation and following that seems to be growing by leaps and bounds. As more traffic jumps on the Google+ bandwagon; more and more developers are looking for ways to incorporate Google+ functionality into their apps.<br />
<br />
This article discusses concepts and tools associated with developing Android applications that use the Google+ API to: <br />
<ul style="text-align: left;">
<li>Present Google+ log-in and Consent Form to users;</li>
<li>Create Google+ posts;</li>
<li>Access and use user activity data (such as game scores, purchases, etc.); and</li>
<li>Search and retrieve Google+ people information (for example, listing people with the highest game scores, etc).</li>
</ul>
It also discusses the Google Play Services public interfaces associated with the Android Quick Start app. <br />
<div>
<ul style="text-align: left;">
</ul>
<h3 style="text-align: left;">
</h3>
<h3 style="text-align: left;">
<span style="color: #073763;">Getting Started</span>
</h3>
<div>
<br />
To develop an Android application on the Google+ platform you will need <a href="http://developer.android.com/google/play-services/index.html" target="_blank">Google Play Services</a> and the latest version of the SDK Tools, which can be added or updated using the Android SDK Manager.<br />
<br />
The Android SDK Manager can be accessed from within the Eclipse IDE (with the Android Development Tools) by selecting <b><i>Window</i></b> -> <b><i>Android SDK Manager</i></b>. You can then select to install or update Google Play Services and the SDK Tools, as shown in the following picture. For more information see my previous article <a href="http://bussystemanalysis.blogspot.com/2013/09/programming-mobile-apps-for-android.html" target="_blank">Programming Mobile Apps for Android With Eclipse</a> and <a href="https://developers.google.com/+/mobile/android/getting-started" target="_blank">Getting Started With the Google+ Platform</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTlp2969QrR4NwHlmg-MPKEm6uJiSHQGOHp_l_JXVSV2BqUT5ycoe2lUeR31bRgT99X2z7007n2Mwm1Z0JpFBfuE7dFbzFyRTWXoQH9f9iaJvzMTZgHdux4zO9uKWV1TIdBiH1zTe1YeQ/s1600/AndroidSDKManager.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTlp2969QrR4NwHlmg-MPKEm6uJiSHQGOHp_l_JXVSV2BqUT5ycoe2lUeR31bRgT99X2z7007n2Mwm1Z0JpFBfuE7dFbzFyRTWXoQH9f9iaJvzMTZgHdux4zO9uKWV1TIdBiH1zTe1YeQ/s1600/AndroidSDKManager.jpg" height="320" width="312" /></a></div>
<br />
Note that you may even need to update the <a href="http://developer.android.com/sdk/index.html" target="_blank">Android Developer Tools</a> (ADT) plugin if you are using Eclipse to build Android apps. If you need to update the ADT you can do so (from within Eclipse) by selecting <b><i>Help</i></b> -> <b><i>Install New Software</i></b>. The Available Software window displays. When you click the Add button the Add Repository window (shown below) displays. You can then add the URL for the ADT: <i><b>https://dl-ssl.google.com/android/eclipse/</b></i><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgij_fR4XUVYO_jIIA94mtx8Ag6nCWXMSs9Ac3mzeF126LjLLDgOqrH5AgdJjsoceYkKJhTpb59_FY0eCiksmNKHW6t5bfWbpJkj2ZqcAoObVUm8a1PVVVepnto7RWIIHljalrjl1cX1GY/s1600/eclipse_update_adt_plugin.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgij_fR4XUVYO_jIIA94mtx8Ag6nCWXMSs9Ac3mzeF126LjLLDgOqrH5AgdJjsoceYkKJhTpb59_FY0eCiksmNKHW6t5bfWbpJkj2ZqcAoObVUm8a1PVVVepnto7RWIIHljalrjl1cX1GY/s1600/eclipse_update_adt_plugin.jpg" height="302" width="320" /></a></div>
<br />
Once you add the URL and click OK the wizard walks you through selecting the components you can install to update an existing installation.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXOsDb_aq1bKe6wdEj1Y5cOih6tt0Ss-39hibXW_Rl_4clAqn71ii-oNs3rQ1i0OQyvC0n06n2ZIafrr3JIBvPU12QQbUyZc0iRwh8FDGNgyxlOd-5xGOzmYvO2ec4AJMBTXym8sMQAh0/s1600/eclipse_update_adt_plugin2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXOsDb_aq1bKe6wdEj1Y5cOih6tt0Ss-39hibXW_Rl_4clAqn71ii-oNs3rQ1i0OQyvC0n06n2ZIafrr3JIBvPU12QQbUyZc0iRwh8FDGNgyxlOd-5xGOzmYvO2ec4AJMBTXym8sMQAh0/s1600/eclipse_update_adt_plugin2.jpg" height="304" width="320" /></a></div>
<br />
For additional information on updating the ADT in Eclipse visit <a href="http://developer.android.com/sdk/installing/installing-adt.html" target="_blank"> http://developer.android.com/sdk/installing/installing-adt.html</a>.<br />
<br />
Installing or updating Google Play Services, SDK tools, ADT, are just a few of the updates you may need to make to your development environment. For a complete list of the prerequisites needed to use the Google+ API you can visit: <a href="https://developers.google.com/+/mobile/android/getting-started#prerequisites" target="_blank">https://developers.google.com/+/mobile/android/getting-started#prerequisites</a>.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #073763;">Google Developers Console</span><br /><span style="color: #073763;"> </span></h3>
Once you have prepared your development environment as previously mentioned, you need to enable the Google+ API. To begin you access the <a href="https://console.developers.google.com/project" target="_blank">Google Developers Console</a> and create a project. The Console automatically assigns a unique project name.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwylWObyjxczkg5cxwkfVQrNolpYaqFdmPZLevLn69p09m2bPV47RBBQXR_HWR6yJ-l5_j2d8oe1BigbwLc0FVh4PoUIu4sYygMVMEg1zRp1u7-y9TZGR-wUzze2PNA5H3CljoUvQcLJ8/s1600/ProjectName.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwylWObyjxczkg5cxwkfVQrNolpYaqFdmPZLevLn69p09m2bPV47RBBQXR_HWR6yJ-l5_j2d8oe1BigbwLc0FVh4PoUIu4sYygMVMEg1zRp1u7-y9TZGR-wUzze2PNA5H3CljoUvQcLJ8/s1600/ProjectName.jpg" height="150" width="320" /></a></div>
<br />
Once the project is created you can select the project to set the properties. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4qfVD-PPrjpjRaQWvVcwpjvEJ04QgK4YvHwBmPRDLCiVPa_T8q8mq-f25jArgp5eeCk77_00xCCSzayDd-J8nyaLJ1skj4wsduvhdbD12UUOQsh3QEA7K8YUmm0C1-NmzYKsXiWGJsZo/s1600/select_project.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4qfVD-PPrjpjRaQWvVcwpjvEJ04QgK4YvHwBmPRDLCiVPa_T8q8mq-f25jArgp5eeCk77_00xCCSzayDd-J8nyaLJ1skj4wsduvhdbD12UUOQsh3QEA7K8YUmm0C1-NmzYKsXiWGJsZo/s1600/select_project.jpg" height="83" width="320" /></a></div>
<br />
In this example I created a project to run the Google Quick Start sample project. I can now enable the Google+ API by clicking the Off button to turn On the Google+ API.<br />
<br />
You will also need a unique Client ID, which is created by clicking the Create New Client ID button shown in the following picture. The Create Client ID window, also shown below, displays. You will then need to add the application type (which is "Installed" for Android apps) and package name (I used: com.google.android.gms.plus.sample.quickstart as the package name so I could run the Quick Start Sample). You will also need the Signing certificate fingerprint (SHA1) (see my previous article <a href="http://bussystemanalysis.blogspot.com/2013/09/how-to-build-facebook-apps-and-games.html">How to Build Facebook Apps and Games for Android</a> to learn more about hash keys). Once all fields are completed you can save your changes. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKm_648sx-8-d9tuuNeVJX8rVMSHxiECphtjPUz3XJiKJ8yBsgtTZjQNY5Sp5j9LYtxh6fTpGs4w07XaDOf3nofIcx5C4whwMjVyIervWsOnvpBXzugxm6uUEutwoMScouqNdejNk8d3w/s1600/add_SHA1_Key.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKm_648sx-8-d9tuuNeVJX8rVMSHxiECphtjPUz3XJiKJ8yBsgtTZjQNY5Sp5j9LYtxh6fTpGs4w07XaDOf3nofIcx5C4whwMjVyIervWsOnvpBXzugxm6uUEutwoMScouqNdejNk8d3w/s1600/add_SHA1_Key.jpg" height="236" width="320" /></a></div>
<br />
<br />
Once the information has been entered and submitted the client ID is created, as shown in the following picture. In this example the client ID is associated with the package name of the application (shown in the following picture). Therefore, if you add a package name that is different from that of the package name in the application your sample application will not work.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0xhTIPS546WWtzZr-B_D99fTq2MzotYgWBQ8pLYPYRjqAhdW5PtD3zzglMtzXz1glwgCRNd1ezKjxvHQmH4nGdue4hzO3QYjg7ascsVzms8H8nTNg_cTfvkPEaS4RdyiB7cgGnuNyJVE/s1600/package_name.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0xhTIPS546WWtzZr-B_D99fTq2MzotYgWBQ8pLYPYRjqAhdW5PtD3zzglMtzXz1glwgCRNd1ezKjxvHQmH4nGdue4hzO3QYjg7ascsVzms8H8nTNg_cTfvkPEaS4RdyiB7cgGnuNyJVE/s1600/package_name.jpg" height="169" width="320" /></a></div>
<br />
As API requests are sent, from your application, to the Google Server the client ID is used to identify your application and also track associated transactions.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhM_IwzMKGKezE0CwSwNcRD8CSH9gkTtmUL8L8kEmgCA-akm_U4Avdauy-uCJhdVS2aK9vVUTMei0tIZOq9CzvLgbFGMEVK2G3KsHpJBAagvf3G6oFbxHtMFr16jpbl8cF3g1RuT-umO8Q/s1600/client_ID.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhM_IwzMKGKezE0CwSwNcRD8CSH9gkTtmUL8L8kEmgCA-akm_U4Avdauy-uCJhdVS2aK9vVUTMei0tIZOq9CzvLgbFGMEVK2G3KsHpJBAagvf3G6oFbxHtMFr16jpbl8cF3g1RuT-umO8Q/s1600/client_ID.jpg" height="124" width="320" /></a></div>
<br />
After you enable the Google+ API (application programming interface) you can configure your development environment to make Google+ API calls via Google Play Services. <br />
<br />
Once you create your project in the Google Developers Console you must then clone or download the sample application from GitHub: <a href="https://github.com/googleplus/gplus-quickstart-android" target="_blank">https://github.com/googleplus/gplus-quickstart-android</a>.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #073763;">Configuring the Android Quick Start App</span> </h3>
<div>
As
previously mentioned, your project will use Google Play Services to
access the Google+ API. Therefore, part of preparing your development
environment includes importing the Google Play Services library located
in the adt-bundle directory on your computer. (Note: I'm running Windows
64-bit so my adt-bundle directory is as follows:
adt-bundle-windows-x86_64-20131030). The path to the Google Play
Services library on my computer is as follows: </div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3MmjV6gBnBQ6vHZVKgdyOaLXbs1ms6WNV5ljEJGAujST9NXYaZ8GrqYR8QAbLdDn6rQk9aT_GNAw2IK7kHZAcZt7yAe0xljc2mk4UGoUtchJcIznXOfH0D2ltI2qSDzh6cgsQgLbGG2Y/s1600/google_play_services.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3MmjV6gBnBQ6vHZVKgdyOaLXbs1ms6WNV5ljEJGAujST9NXYaZ8GrqYR8QAbLdDn6rQk9aT_GNAw2IK7kHZAcZt7yAe0xljc2mk4UGoUtchJcIznXOfH0D2ltI2qSDzh6cgsQgLbGG2Y/s1600/google_play_services.jpg" height="229" width="320" /></a></div>
<div>
<br />
Use File -> Import from within the Eclipse IDE to select the Google Play Services Library project.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi06sVE9QNKC5Vtvk6JF_pHaq_swkGafbMWLJv1omusmZcWZvq5-PhJCUjv6rJPziEEirDAo-tv5jdkUIY1_PDC_8lKpV-F90WpOfIcVnafpiONjCWfncimTN8uAwvhD_RrtZBnIm-S-rw/s1600/import_project.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi06sVE9QNKC5Vtvk6JF_pHaq_swkGafbMWLJv1omusmZcWZvq5-PhJCUjv6rJPziEEirDAo-tv5jdkUIY1_PDC_8lKpV-F90WpOfIcVnafpiONjCWfncimTN8uAwvhD_RrtZBnIm-S-rw/s1600/import_project.jpg" height="320" width="318" /></a></div>
<div>
Select the Google Play Services lib project, as shown below. Click Finish to import the selected project.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijs6nm12lO54UzJLrEYdyYmJqyBghnPPwLl1Kt_qW5Km11WFrk1mT3TW4RVzSBSi1lRFMBjLXLmnHLO7Z95eqsYPWvb0UJIGJ9koRA4n2e_EFyl_brmOvOSLWuZ1Q_qGDgoZ1RLZvO0Zs/s1600/import_google_play_library.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijs6nm12lO54UzJLrEYdyYmJqyBghnPPwLl1Kt_qW5Km11WFrk1mT3TW4RVzSBSi1lRFMBjLXLmnHLO7Z95eqsYPWvb0UJIGJ9koRA4n2e_EFyl_brmOvOSLWuZ1Q_qGDgoZ1RLZvO0Zs/s1600/import_google_play_library.jpg" height="320" width="312" /></a></div>
<div>
<br /></div>
<div>
You
will then need to reference the google-play-services_lib project from
within your project. To run the
sample I must first reference google-play-services_lib.To do this I
right-clicked the project and select properties from the menu to
display the Project Properties window, shown below.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9n0T4MMUOGCfj6ppQrqsfzIjtR4sKyDcnFz2t7fLb5ZRwoQfBomx8zcJWBt0ZmhlMqI0j0jseXcdFINSBgHHURiW0Iw4t8gNoUzbLS4Ie3fe5Gw0spMENG0eleORaC-yRtsxcc5gzyGc/s1600/reference_google_services_lib.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9n0T4MMUOGCfj6ppQrqsfzIjtR4sKyDcnFz2t7fLb5ZRwoQfBomx8zcJWBt0ZmhlMqI0j0jseXcdFINSBgHHURiW0Iw4t8gNoUzbLS4Ie3fe5Gw0spMENG0eleORaC-yRtsxcc5gzyGc/s1600/reference_google_services_lib.jpg" height="320" width="293" /></a></div>
<br />
I can then click
the Add button and select the google-play-services_lib (which is
available because you added it as a project to the workspace).<br />
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguFfbG89Sv4ihP9XW7LeX2a-5QE5miEzeNpu2h53eczNTUjPSW8YovbNf1ucO4bauN6lgACVKJ8Vplpw6Vs_WOCFOgKHeSoZOTUo_LP3yCaaDxfzejtA5pjdI77cCIn1eAp1nrlG93Hk8/s1600/Googleservicesadd.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguFfbG89Sv4ihP9XW7LeX2a-5QE5miEzeNpu2h53eczNTUjPSW8YovbNf1ucO4bauN6lgACVKJ8Vplpw6Vs_WOCFOgKHeSoZOTUo_LP3yCaaDxfzejtA5pjdI77cCIn1eAp1nrlG93Hk8/s1600/Googleservicesadd.jpg" height="223" width="320" /></a></div>
<div>
<br />
Once you have added the project you can click OK to close the Project Properties window.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1no6UdsQqSDNTAoR-etpchEfvirLboPban_0t-qFDJlyPu2hbUhVN4_CdqvbqV_jCpuKhJ7PVDm4Q9SGyyBx23Vt7a_PdlSJn1lePQEEojbg1RRKltNyM2g5m1dhWBqrEzz-Q6boazjs/s1600/google_play_services_added.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1no6UdsQqSDNTAoR-etpchEfvirLboPban_0t-qFDJlyPu2hbUhVN4_CdqvbqV_jCpuKhJ7PVDm4Q9SGyyBx23Vt7a_PdlSJn1lePQEEojbg1RRKltNyM2g5m1dhWBqrEzz-Q6boazjs/s1600/google_play_services_added.jpg" height="320" width="307" /></a></div>
<br />
<br />
To run the sample you must connect to a real Android device. Since your project is not configured to run on a specific device (real or virtual) when you select Run, from within the Eclipse IDE, the Android Device Chooser displays (as shown below).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkCkRfYopOAtMCA-Wq19oLXPufxXacIjkMDNaT6Ok3Cuha90OrtpGewXTCeRmFwfPjex7XY9vQfPNbeUkxuLKX1co45JN5KH1dbhiyPF1uzyOkgWwVl8Q6q72SqGhXVQ5rz8ODLgqYHnw/s1600/run_app_from_Device.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkCkRfYopOAtMCA-Wq19oLXPufxXacIjkMDNaT6Ok3Cuha90OrtpGewXTCeRmFwfPjex7XY9vQfPNbeUkxuLKX1co45JN5KH1dbhiyPF1uzyOkgWwVl8Q6q72SqGhXVQ5rz8ODLgqYHnw/s1600/run_app_from_Device.jpg" height="214" width="320" /></a></div>
<br />
I can then click OK to run the device. For more information about running virtual versus real devices see my previous article titled, <a href="http://bussystemanalysis.blogspot.com/2013/09/programming-mobile-apps-for-android.html" target="_blank">Programming Mobile Apps for Android With Eclipse</a>.<br />
<br />
<h4 style="text-align: left;">
<span style="color: #073763;">OAuth 2.0 Protocol</span></h4>
<br />
The Google+ authentication/authorization uses the OAuth 2.0 framework. The OAuth 2.0 framework was created so third-party applications could access another company's resources (mainly social networking company resources) without giving these applications customer's private data.<br />
<br />
With the OAuth 2.0 Framework a users' log-in, for example, is neither accessed nor stored by a third-party app. And, Google is just one of many companies that currently use the <a href="http://tools.ietf.org/html/rfc6749" target="_blank">OAuth 2.0 Framework</a>.Google's implementation of the OAuth 2.0 framework supports three types of applications: Web
Server apps, computer and hand-held device apps and apps that run on the
client-side (such as JavaScript applications). <br />
<br />
To implement the Google+ login, which utilizes the OAuth 2.0 framework for authentication and authorization, developers can use Google+ log-in, which invokes the user Consent Form as well as the Google user login window.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgos20XYhysfv6yHSu5youQGQ1ieSQRklU3j90cK__o131xXiDuvRh2-aetoSybp-m3J_xeY6Ic31-iPPJ9gk8L2hErTguQaA43Vyf5xk6o0aWVoljgurzAvWu30CFP70rMEkzDCgbVZ5I/s1600/2014-04-09+13.22.47.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgos20XYhysfv6yHSu5youQGQ1ieSQRklU3j90cK__o131xXiDuvRh2-aetoSybp-m3J_xeY6Ic31-iPPJ9gk8L2hErTguQaA43Vyf5xk6o0aWVoljgurzAvWu30CFP70rMEkzDCgbVZ5I/s1600/2014-04-09+13.22.47.png" height="320" width="192" /></a></div>
<br />
API programming really is all about code re-use, which makes developing apps easier and faster. Consider the development time cut by building an application on top of one or more existing applications (in this case Google+ and Google Play Services). You do not have to write as much code to build your application. Instead, you use your knowledge of the existing applications (by reviewing the API documentation) and then declaring variables/objects and calling the methods, etc. you want to use or setting the applicable properties to fit your application. Notice below the code to import the Login button and then the code that declares and calls the Login button. A procedure was not written to create the Login button because it already exists. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaxhpUX-nRUibPxlwAB2fDx87kWUS_Pb61oflpXQkhAi5aMLeqftsp1dagob-ndb_aGhf3Ps5AtCCEUNeOT3kG7MUhr0iOVVNtw9uBW8hyx6BtTE8Mk91cUw5G_ZCN2dbZGRKu-tsM3G0/s1600/import_sign_in.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaxhpUX-nRUibPxlwAB2fDx87kWUS_Pb61oflpXQkhAi5aMLeqftsp1dagob-ndb_aGhf3Ps5AtCCEUNeOT3kG7MUhr0iOVVNtw9uBW8hyx6BtTE8Mk91cUw5G_ZCN2dbZGRKu-tsM3G0/s1600/import_sign_in.jpg" height="83" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia4al8mSMST1Q2I9cy4DADcruH_b6hecFHWqlqSYOfItrHUaoM4a_4PRw8d_4BThICCi7bbeAKrwawnMJkIu0yot1zmy11gAhmmhN2lwkhoHde8D3HY52MXuzVhHWnkS0LJWNVjO4RgNA/s1600/sign_in.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia4al8mSMST1Q2I9cy4DADcruH_b6hecFHWqlqSYOfItrHUaoM4a_4PRw8d_4BThICCi7bbeAKrwawnMJkIu0yot1zmy11gAhmmhN2lwkhoHde8D3HY52MXuzVhHWnkS0LJWNVjO4RgNA/s1600/sign_in.jpg" height="199" width="320" /></a></div>
<br />
When the user click the Google+ Sign in button the user is presented with the Google sign-in. To login the user enters the correct user name and
password and submits the response. The Consent form is also presented to the user. The user reviews the form and makes desired changes to the Consent form
if the application requests access the user does not want to give. The information is sent to Google Play
Services. If the credentials are accurate the Google server returns an
authorization code to your application. Your application then requests
an access token. The Google server returns an access token to your
application.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo3ua13KsZFWX_MU28_YgBNs0l176i-dn0f-9VWnxItt0q8LUt8qWWJTAFlXxPQCYydgOcU4tOMJBG-KOxd70wXnMKamFOva9CsPAV4R1UKz4avwis1ZhVSlDF2L6b_0vcaLzPp2BincE/s1600/2014-04-01+18.03.04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo3ua13KsZFWX_MU28_YgBNs0l176i-dn0f-9VWnxItt0q8LUt8qWWJTAFlXxPQCYydgOcU4tOMJBG-KOxd70wXnMKamFOva9CsPAV4R1UKz4avwis1ZhVSlDF2L6b_0vcaLzPp2BincE/s1600/2014-04-01+18.03.04.png" height="320" width="192" /></a></div>
<br />
<br />
The access token is used, by your application, to perform the approved transactions on behalf of the user.
The response from the server also includes a refresh token. Whenever the
access token expires the refresh token is used to request a new access
token until the refresh token expires. For more information on OAuth 2.0
see <a href="https://developers.google.com/oauthplayground/" target="_blank">Google's OAuth 2.0 Playground</a> . For more on Google+ sign in for Android see: <a href="https://developers.google.com/+/mobile/android/sign-in">https://developers.google.com/+/mobile/android/sign-in</a> and <a href="https://developers.google.com/+/features/sign-in">https://developers.google.com/+/features/sign-in</a><br />
<br />
<h3 style="text-align: left;">
</h3>
<h3 style="text-align: left;">
<span style="color: #0b5394;">Google Play Services & The Google+ API</span></h3>
<br />
In the Quick Start app, the <a href="http://developer.android.com/reference/com/google/android/gms/common/api/GoogleApiClient.html" target="_blank">googleapiclient</a> is the "main entrypoint for Google Play Services integration" so that calls from the application to Google Play are wrapped with the googleapiclient interface. Once a connection is established the <a href="http://developer.android.com/reference/com/google/android/gms/plus/People.html#getCurrentPerson%28com.google.android.gms.common.api.GoogleApiClient%29" target="_blank">People class</a> is used to get information associated the current person logged in. The Quick Start app calls the <a href="http://developer.android.com/reference/com/google/android/gms/plus/Account.html" target="_blank">AccountAPI</a> to clear the default account or revoke access when the user selects the applicable option. The following paragraphs provide additional information about the Google+ API. <br />
<br />
The <a href="https://developers.google.com/+/api/latest/" target="_blank">Google+ API</a> is divided into four resource types as follows: People, Activities, Comments and Moments <br />
<br />
<a href="https://developers.google.com/+/api/latest/people" target="_blank">People Resource</a>:
The People resource contains the method used to get people data by
retrieving the individual's user name (or userID). A few of the
properties associated with the People resource include the person's
name, profile image, profile URL, about me content (including the about
me description, bragging rights, relationship status), organization
where the person works/worked, places lived, circled-by count, plus-one
count, whether or not the account is verified, the cover photo and more.
Developers can incorporate some or all of the attributes within an
application that uses the Google+ API. The developer can also use the
People resource to search for people, list people by activity (discussed
below), etc.<br />
<br />
<br />
<a href="https://developers.google.com/+/api/latest/activities" target="_blank">Activities Resource</a>:
The Activities resource is used to work with content posted to Google+.
The Activities resource has three property types as follows: Actor,
Object and Verb. The Actor property type includes properties associated
with the person who performs an activity such as create a post, re-share
a post or even plus-one a post. A few Actor properties include display
name, the URL for the person's profile, the URL for the person's profile
image, etc.The Verb property type defines whether content was created
(i.e., newly published content) or re-shared. The Object property
includes properties such as the object type for example whether the
activity is associated with content or an action such as plus-one or
re-share.It also includes properties that hold the ID of the object, the
original actor, comments (or replies) associated with the published
content, people who +1'd the content, etc.<br />
<br />
<a href="https://developers.google.com/+/api/latest/comments" target="_blank">Comments Resource</a>: The Comments resource includes methods used to list comments associated with content or get content.<br />
<br />
<a href="https://developers.google.com/+/api/latest/moments" target="_blank">Moments Resource</a>:
The Moments resource includes methods used to record activities users
perform.For example, if a user makes a purchase or achieves a high score
in a game; developers can use the moments.insert method to create a
post that discloses the applicable information.<br />
<br />
Lastly, developers use <a href="https://developers.google.com/+/api/moment-types/" target="_blank">App Activities</a> to create actions users can perform within an application such as buying, adding comments, identifying the user's location, etc.</div>
<div>
</div>
<div>
</div>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/11770164970801071498noreply@blogger.comtag:blogger.com,1999:blog-7793781044289546361.post-86889188051484470462014-03-04T17:01:00.003-08:002014-03-04T17:01:40.020-08:00Skype, Skype Manager, Skype Connect & Skype Programming<div dir="ltr" style="text-align: left;" trbidi="on">
Most people know you can install and use Skype on your phone or even your computer to place phone or video calls or send chat messages. But, have you ever used <a href="http://www.skype.com/en/download-skype/skype-for-tv/?cm_mmc=SMFBPAGE|7001_B1-_-Outgoing%20-%20Other%20Platforms" target="_blank">Skype on TV</a> to watch friends and family members while you talk? What about using Skype on your home phone; or, using it to make group calls? Or, if you own a business did you know you can use <a href="http://www.skype.com/en/features/skype-connect/" target="_blank">Skype on your office telephone</a> system to save on business calls? Developers can even incorporate a Skype Button to make Skype accessible from any website. This article discusses the various Skype features available.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDvqGsGZvWDlLEXtnkt_fuwJkcrdbHsqJEmFT5A-snl_oiO1R2UD9x_TNcVBOpPxbZ6cST_E7_T3Kps4wYShVcg-Q0k-md8F5wz_ht5bn1HnjvOpvAPVDhbnf46lhkg_SSeE5hHAetThk/s1600/skype_desktop+copy.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDvqGsGZvWDlLEXtnkt_fuwJkcrdbHsqJEmFT5A-snl_oiO1R2UD9x_TNcVBOpPxbZ6cST_E7_T3Kps4wYShVcg-Q0k-md8F5wz_ht5bn1HnjvOpvAPVDhbnf46lhkg_SSeE5hHAetThk/s1600/skype_desktop+copy.jpg" height="198" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<h3 style="text-align: left;">
<span style="color: #073763;">Skype Overview </span></h3>
<br />
If you are using <a href="http://www.skype.com/en/download-skype/skype-for-computer/" target="_blank">Skype on a computer</a> (Windows, Macintosh or Unix) you get a few more options than those using Skype on a mobile device. However, as a mobile app Skype provides quite a few options. For example, users can manage contacts, view a person's profile, make video or phone calls and send chat messages.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlMoNPyoObf6mwGUZ0x7FS4-jsmgoCcIMKwdeiX7YaYFS5dAxJeEmMM6nGgP8wiXQd5DnBOk3Dmgg2lMeWkfQJa4BqxYyJ5cWBowxq6cQLjHmqsbHuFOMFzoRBgCgaGnc6Ku2AOQrOLUw/s1600/skype_on_mobile.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlMoNPyoObf6mwGUZ0x7FS4-jsmgoCcIMKwdeiX7YaYFS5dAxJeEmMM6nGgP8wiXQd5DnBOk3Dmgg2lMeWkfQJa4BqxYyJ5cWBowxq6cQLjHmqsbHuFOMFzoRBgCgaGnc6Ku2AOQrOLUw/s1600/skype_on_mobile.png" height="320" width="192" /></a></div>
<br />
Users can add multiple participants to a chat, as shown in the above picture; or, even attach and send a file. And, users can assign a group name (using the Rename group option) to multiple participants associated with a chat, as shown in the following picture.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUCYr5JhVvywRxUyuiWsFvFgxosmjLEBmDzvPzd1NUX-ajy40H2VKZGVgbkCbKfLsQ8v_mTxqITEDudrTHnglxhwPmu0cYvVRR95uONs8SEakw3kOzM8slwH6q4DliPY8Q5NGqspa9NfE/s1600/2014-03-03+23.22.26.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Rename group" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUCYr5JhVvywRxUyuiWsFvFgxosmjLEBmDzvPzd1NUX-ajy40H2VKZGVgbkCbKfLsQ8v_mTxqITEDudrTHnglxhwPmu0cYvVRR95uONs8SEakw3kOzM8slwH6q4DliPY8Q5NGqspa9NfE/s1600/2014-03-03+23.22.26.png" height="320" title="Rename group" width="192" /></a></div>
<br />
Once you create a group you can easily initiate a chat session with the group by selecting the group name. The following picture shows a chat session initiated with the "Test Group".<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbsTgddXhTyTmaIgI875-56XVzpmgAoVannqRAl6u-GOFXmlZTEO6Uihsp1KdiSToJHzZcoaiuI5TlUFaBXGedEtI9LAHxrPZVHvBBFqxiNmLNKfSwPfiJYuxJH3u-5-DtBTnJj3sKFFw/s1600/2014-03-03+23.25.57.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbsTgddXhTyTmaIgI875-56XVzpmgAoVannqRAl6u-GOFXmlZTEO6Uihsp1KdiSToJHzZcoaiuI5TlUFaBXGedEtI9LAHxrPZVHvBBFqxiNmLNKfSwPfiJYuxJH3u-5-DtBTnJj3sKFFw/s1600/2014-03-03+23.25.57.png" height="320" width="192" /></a></div>
<br />
Skype users, using the mobile version, can also block, edit or remove a contact as well as add a contact to Favorites. Contacts listed in Favorites make it easier to find and connect with a contact.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDIfNJmX-AqlAGimB2iwmGdNuhZQQR-mdDwTwheYmR8oAIJsXbZ599Ll46r8kFAhK6MgQzX9fUbN0P49tYJqNEb95-n3oLlmKiltjfUxzdaDrtbpAItR2O5vVuYLxKsA96J0r8wtbDLYk/s1600/2014-03-03+23.20.48.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDIfNJmX-AqlAGimB2iwmGdNuhZQQR-mdDwTwheYmR8oAIJsXbZ599Ll46r8kFAhK6MgQzX9fUbN0P49tYJqNEb95-n3oLlmKiltjfUxzdaDrtbpAItR2O5vVuYLxKsA96J0r8wtbDLYk/s1600/2014-03-03+23.20.48.png" height="320" width="192" /></a></div>
<br />
Skype on a computer provides the ability to do all of the above and more. For example, Skype computer users can import contacts from Facebook or even place group phone calls by adding contacts to a group, as shown in the picture below. You can then save the group to your contacts to easily connect with multiple people in the group.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiarnbyB3gzpUBvMCPtgGzZMUPDw1JvuLCA-86AJLBX01leKOWmZV_IS47yIhxo-EDK9iY4glSvOQ9D-AkrNWUlgCBagxQJy7HjU4oTutfnQBUVjuBNaaHlnfPoEKDwhfHD88loxHb4GUc/s1600/place_group_call2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiarnbyB3gzpUBvMCPtgGzZMUPDw1JvuLCA-86AJLBX01leKOWmZV_IS47yIhxo-EDK9iY4glSvOQ9D-AkrNWUlgCBagxQJy7HjU4oTutfnQBUVjuBNaaHlnfPoEKDwhfHD88loxHb4GUc/s1600/place_group_call2.png" height="228" width="320" /></a></div>
<br />
The following picture shows a group call placed from a computer to two people using Skype on mobile devices. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpT3a10c35sSeI5NbMu-p8TKI248Cx5d9jwssDwrIKybKaw0ySxJRHxs_hc0_qMgGnIJ3gYVMDCe26v3B5m5WQeN6UsSVL7olcNJD20CImDLr5IUkN4Kil9zoNI4WUVbZVmjWDE7WB2g0/s1600/call_group.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpT3a10c35sSeI5NbMu-p8TKI248Cx5d9jwssDwrIKybKaw0ySxJRHxs_hc0_qMgGnIJ3gYVMDCe26v3B5m5WQeN6UsSVL7olcNJD20CImDLr5IUkN4Kil9zoNI4WUVbZVmjWDE7WB2g0/s1600/call_group.jpg" height="235" width="320" /></a></div>
<br />
Skype for computers includes Skype WiFi, which enables you to use WiFi at public locations to place calls or chat. You can also use it to log into a professional account, request a subscription, manage Skype credits (used to pay for calls), manage your profile, backup contacts to a file/restore contacts from a file, access Outlook contacts, block a conversation as well as view voice messages and files sent to you.<br />
<br />
You can also share your screen to show someone else the content you are viewing on your computer or mobile device. The screen session below shows a Skype Computer user requesting to share her desktop screen with a mobile phone user.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtQG7d9ki9gmXNJMaRV-qZ1zpBmKHQ3EsBNrqouV7v326x6MnpUAuKASr5799B15pcgWXCk3fHYYREVSRA3puJ9ZmQsz7HtQQ04WyQm5F5C6Qvm_zs9f0YTn5l6TfQwIiZ_te2a42X_kQ/s1600/sharing_screen.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtQG7d9ki9gmXNJMaRV-qZ1zpBmKHQ3EsBNrqouV7v326x6MnpUAuKASr5799B15pcgWXCk3fHYYREVSRA3puJ9ZmQsz7HtQQ04WyQm5F5C6Qvm_zs9f0YTn5l6TfQwIiZ_te2a42X_kQ/s1600/sharing_screen.jpg" height="223" width="320" /></a></div>
<br />
And, you can manage your Skype settings (including the ability to select the Language in which your client displays) and more.<br />
<br />
If you interested in using Skype to make free calls from your home phone, you can easily accomplish this task as well. You can visit the <a href="http://shop.skype.com/phones/#/categoryid=2&sortby=3&subcategoryid=&filter=&manufacture=&price_range=~75|75~150|150~225|225~&page=1&mac=0" target="_blank">Skype Store</a> to purchase a phone that comes with everything you need to Skype friends and family members who also use Skype.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #073763;">Skype Manager</span></h3>
<br />
More and more Skype is being used to connect people locally, nationally and worldwide. And while many use it to talk with family and friends; others are finding innovative ways to tap into its capabilities to conduct business. For example, some investors use Skype to conduct critique sessions with entrepreneurs and start-up business owners. <br />
<br />
If you are a business owner you may want to get the most from Skype by adding it to your organization's software list. To manage users and associate each user with features and Skype credits you or your Skype administrator will need to install a component called <a href="http://download.skype.com/share/business/guides/skype-manager-user-guide.pdf" target="_blank">Skype Manager™</a> .Skype Manager provides a way to set up employee accounts and enable features employees are allowed
to use such as call forwarding, voicemail subscriptions, etc. In
addition, Skye Manager includes a dashboard so authorized users can
monitor employees' Skype usage and associated costs.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhk-SN8Ev4qDzg6W4RlXKLbksv38dZN5deQ4RPlA1uqY-Y-StDvd7OoGGluuHaf_3XUk7yF-6MVzzfciyZJJuResn2fN6sROT9CG_jjY_bLUQ_ji4fbn52A7EmCc6yaIme3GrGHKp6Oy4E/s1600/skype_manager.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhk-SN8Ev4qDzg6W4RlXKLbksv38dZN5deQ4RPlA1uqY-Y-StDvd7OoGGluuHaf_3XUk7yF-6MVzzfciyZJJuResn2fN6sROT9CG_jjY_bLUQ_ji4fbn52A7EmCc6yaIme3GrGHKp6Oy4E/s1600/skype_manager.jpg" height="250" width="320" /></a></div>
<br />
<br />
Skype Manager adds capabilities such as the ability to host conference video calls with customers or employees using Skype anywhere in the world. This is possible because Skype Manager provides the ability to create groups.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5AgbN_CqSU-xITGowcPQguubIxrY0MssWgi8AJO-eO87gpw5CIr_7AMER-HbMUk5b8k7jDFgLYyN2QtJw8p7UpLqYplE0s-6XnZWAEhEK2ea17CIn3wtzua9i3CbmFBrQoE1gEJCmOOY/s1600/create_a_group.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5AgbN_CqSU-xITGowcPQguubIxrY0MssWgi8AJO-eO87gpw5CIr_7AMER-HbMUk5b8k7jDFgLYyN2QtJw8p7UpLqYplE0s-6XnZWAEhEK2ea17CIn3wtzua9i3CbmFBrQoE1gEJCmOOY/s1600/create_a_group.jpg" height="163" width="320" /></a></div>
<br />
<br />
Once a group is created you can add customers and/or employees to the group. When ready you can select the applicable group name to place the group call whenever you want.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitSWB1jWoBuEAOmvy0KOWePdo2ZFTZ8gnOs_qRwH6ELqEaQRa4cIuffhcTrvY2Jc9sdKvUkvrVDxi4eFoYylCVo92fV2NIm2d6spHD_hvasLYnRFRerT5w2RSeIQDx8hyCnvRxEvolh70/s1600/add_members_to_group.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitSWB1jWoBuEAOmvy0KOWePdo2ZFTZ8gnOs_qRwH6ELqEaQRa4cIuffhcTrvY2Jc9sdKvUkvrVDxi4eFoYylCVo92fV2NIm2d6spHD_hvasLYnRFRerT5w2RSeIQDx8hyCnvRxEvolh70/s1600/add_members_to_group.jpg" height="163" width="320" /></a></div>
<br />
<br />
Users can also share files with other Skype users without worrying about file-size limits. And, as with Skype for the computer and mobile device--users can send instant messages to the people they are talking to while on the call. Users can also share their screen with other users to show a presentation or other materials; or, even get assistance from a co-worker to help troubleshoot a problem. <br />
<br />
Skype Manager isn't just for businesses. Individuals who want
to keep in touch and share Skype features with family and friends can
use Skype manager to assign features to other people, monitor usage and
perform other tasks previously mentioned.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #073763;">Skype Connect </span></h3>
<br />
In addition to Skype Manager, businesses can use <a href="http://download.skype.com/share/business/guides/skype-connect-user-guide.pdf" target="_blank">Skype Connect</a> to use Skype on a session initiation protocol (SIP)-enabled corporate telephone network or gateway. With Skype Connect a regular business telephone system becomes a Skype phone that provides a way for employees to make Skype calls from the organization's office phone system, which can help save on phone call costs. <br />
<br />
<h3 style="text-align: left;">
<span style="color: #073763;">Skype Programming</span></h3>
<br />
If you have a business and you want customers or employees to be able to contact you or a specific person using Skype, <a href="http://www.skype.com/en/features/skype-buttons/create-skype-buttons/" target="_blank">Skype Buttons</a> provide an easy solution.<br />
<br />
Developers can navigate to the Skype Button's website at:<a href="http://www.skype.com/en/features/skype-buttons/create-skype-buttons/" target="_blank"> http://www.skype.com/en/features/skype-buttons/create-skype-buttons/</a>. The developer can then enter the Skype user name associated with the person who should be contacted when an individual clicks the Skype button. The Skype Button can initiate a phone call or send a chat message from a website or web app. The page generates the code that can be added to a website or web app for easy access.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHh0mmGG_jZ6P98lkPlcgQBTyuMbXUN2xZpRWe_yajV-On_Fw2q3a9Avh7GJ6OZkM40d5vVUHpIXtqdlXKIzdyTo-sHKUcxbI9KxiAdEk-1xV1iAHsuclni7MFuO6jL4IoKy7rA3CUc2A/s1600/skype_command.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHh0mmGG_jZ6P98lkPlcgQBTyuMbXUN2xZpRWe_yajV-On_Fw2q3a9Avh7GJ6OZkM40d5vVUHpIXtqdlXKIzdyTo-sHKUcxbI9KxiAdEk-1xV1iAHsuclni7MFuO6jL4IoKy7rA3CUc2A/s1600/skype_command.jpg" height="191" width="320" /></a></div>
<br />
The Skype URI API also provides the ability to incorporate Skype Buttons that require more complex functionality. For example, developers may need to write code so a website or app can determine if a users has Skype installed. Further, the developer may also need to define what action the website or app should take if Skype is not installed. <br />
<br />
In addition to Skype Buttons, developers can use the Skype.ui Javascript Function to<br />
dynamically create Skype URIs that provide more functionality than the Skype Button. The Skype URI API currently includes code that provides a way to build Skype snippets that offer the ability to:<br />
<ul style="text-align: left;">
<li>Switch focus to a Skype client;</li>
<li>Initiate an audio call to a Skype user or group;</li>
<li>Initiate a video call to a Skype user; and</li>
<li>Send a chat message to a Skype user or group. </li>
</ul>
For additional instruction you can access tutorials to learn more about using the Skype URI API by clicking the following links:<br />
<ul>
<li><a href="http://developer.skype.com/skype-uris/skype-uri-tutorial-win8">Windows 8</a> </li>
<li><a href="http://developer.skype.com/skype-uris/skype-uri-tutorial-email">Email</a> </li>
<li><a href="http://developer.skype.com/skype-uris/skype-uri-tutorial-webpages">Web pages</a> </li>
<li><a href="http://developer.skype.com/skype-uris/skype-uri-tutorial-android">Android</a> </li>
<li><a href="http://developer.skype.com/skype-uris/skype-uri-tutorial-ios">iOS</a> </li>
</ul>
</div>
Anonymoushttp://www.blogger.com/profile/11770164970801071498noreply@blogger.comtag:blogger.com,1999:blog-7793781044289546361.post-74841395907315409332014-02-11T18:32:00.003-08:002014-02-12T00:03:19.975-08:00Android Programming, 3D Images and OpenGL ES<div dir="ltr" style="text-align: left;" trbidi="on">
As disused in my previous article "<a class="GHUY-LPPB" href="http://bussystemanalysis.blogspot.com/2014/01/unity-game-engines-mesh-renderer-mesh.html290;onPublished" target="_blank">Unity Game Engine's Mesh Renderer, Mesh Filter, Shaders and Materials Overview</a>" a 3D scene is defined by a collection of vertices that include attributes such as position, normals, texture values, etc. For a device to display a 3D animation scene, the scene is transformed into a 2D image through the rendering process (aka the rendering pipeline or graphics pipeline).<br />
<br />
This articles discusses the Open Graphics Library specification for Embedded Systems (OpenGL ES) used to define shaders and other elements to render 3D scenes. It also discusses the OpenGL Shading Language specification. And it provides an overview of a simple Android application that uses the OpenGL ES to render animated graphics on Android devices.<br />
<br />
<b><span style="color: #0b5394;">OpenGL ES and the OpenGL® Shading Language </span></b><br />
<br />
For a 3D scene to display there are a series of steps executed through the rendering pipeline. These steps ensure 1) only the objects within the camera's view display, 2) reflections are properly added, and 3) images behind other images are shown/hidden based on the camera's view. The output is then merged and the final image displayed. The last stage of the rendering pipeline finalizes what pixels will display based on the pixels closest to the camera and other variables mentioned. The 3D scene below, from the Stealth game, shows a game scene that has not yet gone through the rendering pipeline.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuR8PurggeCfM_uvbOtjeEwfOwtPkjMG6QbgXqNJUKuxoqYipFsXqCXGGyQLE6d7_o0hm42AEsxoO4vYq4dtphVrEzTA4YU8f6npX1kFkBawblnklA-u4Dd9bqsBeFIACw3jdbLUGcPXI/s1600/3D_game_scene.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuR8PurggeCfM_uvbOtjeEwfOwtPkjMG6QbgXqNJUKuxoqYipFsXqCXGGyQLE6d7_o0hm42AEsxoO4vYq4dtphVrEzTA4YU8f6npX1kFkBawblnklA-u4Dd9bqsBeFIACw3jdbLUGcPXI/s1600/3D_game_scene.jpg" height="213" width="400" /></a></div>
<br />
<br />
When we run the game (so that the vertices are transformed into a 2D image), notice we only see the game objects closest to the camera. And, based on the camera's view objects behind some of the partitions are hidden. As the player moves the view shifts and more processing occurs to render the images that are now within the camera's view. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6CGY5fZ_Qik4D7Uy6HgT5FKel-Uu633uXBpSdWAdnAAQRRRzxLvuUkbymZvrrXWuBNGtMVPEOKGoE01g3Nty22ct_5fW5V_PIjcM8vC-EjTkUaMHDivGnYD_KqrJkThbg46ui62AF6Ak/s1600/3D_Game_Rendering.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6CGY5fZ_Qik4D7Uy6HgT5FKel-Uu633uXBpSdWAdnAAQRRRzxLvuUkbymZvrrXWuBNGtMVPEOKGoE01g3Nty22ct_5fW5V_PIjcM8vC-EjTkUaMHDivGnYD_KqrJkThbg46ui62AF6Ak/s1600/3D_Game_Rendering.jpg" height="212" width="320" /></a></div>
<br />
Developers who specialize in 3D and animation can program some of the stages associated with the rendering pipeline by creating programs called shaders. Shaders execute inside the graphics processing unit (GPU) and define how the data is processed to, ultimately, display the final image. The ability to create shaders means developers can now create custom effects that were not possible when the rendering pipeline only included pre-programmed stages.<br />
<br />
The OpenGL ES is a cross-platform API used to create and compile shaders and execute other related operations including the ability to define buffers that the shaders write to.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #073763;">OpenGL Shading Language </span></h3>
<br />
In addition to the OpenGL ES specification the OpenGL Shading Language specification is necessary to understand the different data types that can be used including vectors, matrices, opaque types, samplers (which are handlers to textures), cube maps, depth textures for shadows, etc. It also defines the statements and structures, variables (including constants) and more. The OpenGL Shading Language support progamming the following shaders: vertex shader, tessellation control shader, tessellation evaluation shader, geometry shader, fragment shader (sometimes called the pixel shader), and compute shader.<br />
<br />
<h4 style="text-align: left;">
<span style="color: #073763;">Vertex and Fragment Shaders </span></h4>
<br />
Each shader type is directly linked to a processor. For example, Vertex shaders run on the vertex processor. The vertex shader is used to read the coordinates of the vertices, transform them to 2D screen coordinates as well as process other attributes of each vertex such as color, normals, etc.<br />
<br />
The fragment shaders (also referred to as pixel shader) receives pixel data, calculates the final color of the pixel and passes it to the next stage so the final output can be produced. The pixel shader can change the depth of the pixel to define what pixels should or should not be drawn. By default, the depth defines the distance between the originating triangle and the camera. But, the developer can manipulate the distance by specifying a value that will be used when the final image is created.<br />
<br />
(You can read a more general overview of Shaders by reading my previous article <a href="http://bussystemanalysis.blogspot.com/2014/01/unity-game-engines-mesh-renderer-mesh.html" target="_blank">Unity Game Engine's Mesh Renderer, Mesh Filter, Shaders and Materials Overview</a>.)<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Android and the OpenGL ES</span></h3>
<br />
Android includes support for 2D and 3D graphics using the OpenGL ES API. Android supports several versions of OpenGL ES as follows:<br />
<ul style="text-align: left;">
<li>OpenGL ES 1.0 and 1.1 is supported by Android 1.0.</li>
<li>OpenGL ES 2.0 is supported by Android 2.2 (API level 8).</li>
<li>OpenGL ES 3.0 is supported by Android 4.3 (API level 18).</li>
</ul>
Note that when you use a higher version of OpenGL ES with android; all lower versions are supported. For example, if your app uses OpenGL ES 2.0; it also supports OpenGL ES 1.0<br />
<br />
Before you start developing your 3D app or game you will want to download and install the Android Developer Tools (ADT) Bundle and access the Android SDK Manager to download the applicable Android SDK platform, etc. For more information, please see my previous article titled: <a href="http://bussystemanalysis.blogspot.com/2013/09/programming-mobile-apps-for-android.html" target="_blank">Programming Mobile Apps for Android With Eclipse</a>.<br />
<br />
Note: When you create an emulator, as outlined in my previous article, make sure you check the option to enable the GPU on the host. As mentioned, OpenGL ES apps require access to a GPU.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhn9boRmw4uoq9aPGgXRxJ9lB0ehjYMTlp04ABqAB2UFDq6L7NMM4vAniXJREMakp7talZr5v1xAnSwwe_bedcpxhiDwzaeZR3AFKq32MRxRbj9jIPxBJmcbcHp-mwJKsM4y2GGumJ74v0/s1600/gpu.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhn9boRmw4uoq9aPGgXRxJ9lB0ehjYMTlp04ABqAB2UFDq6L7NMM4vAniXJREMakp7talZr5v1xAnSwwe_bedcpxhiDwzaeZR3AFKq32MRxRbj9jIPxBJmcbcHp-mwJKsM4y2GGumJ74v0/s1600/gpu.jpg" height="320" width="186" /></a></div>
<span id="goog_289326068"></span><span id="goog_289326069"></span><span id="goog_1954982656"></span><span id="goog_1954982657"></span><br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Displaying Graphics on Android with OpenGL ES</span></h3>
<h4 style="text-align: left;">
<span style="color: #073763;"> </span></h4>
<h4 style="text-align: left;">
<span style="color: #073763;">Android Manifest</span></h4>
<br />
When you create an Android app that supports OpenGL ES, you must add a declaration to the AndroidManifest.xml file. The <a href="http://developer.android.com/guide/topics/manifest/uses-feature-element.html" target="_blank">uses-feature</a> statement to be added includes the glEsVersion attribute, which provides a way for developers to define the OpenGL ES version required to run the application. For example, if OpenGL ES version 1.0 is required; the glEsVersion attribute is set as 0x00010000. If an application requires OpenGL ES 2.0 and OpenGL ES 3.0; the value of the attribute is set to 0x00030000. It is then understood that the application supports not only OpenGL ES 3.0; but also all lower versions. Here is what the uses-feature statement looks like (in this example the application requires OpenGL ES 2.0): <span style="color: #073763;"><uses-feature android:glEsVersion="0x00020000" android:required="true" /></span><br />
<br />
The uses-feature statement takes two other values besides glEsVersion as follows: android:name and android:required. Android:name defines a valid value from the hardware or software list at the bottom of the <a href="http://developer.android.com/guide/topics/manifest/uses-feature-element.html" target="_blank">Uses-Feature API Page</a>. The android:required value defines whether the feature is "required" to run the app. True means the feature is required; false means use the feature if it is available on the device. <br />
<br />
The classes that make up the android application project is defined by the graphics and their behavior. Take a look at the simple Hello OpenGL ES projects, which can be downloaded from <a href="http://developer.android.com/training/graphics/opengl/environment.html" target="_blank">http://developer.android.com/training/graphics/opengl/environment.html</a>.<br />
<br />
Note: Once you download the project, you can use the Import option,
available from the File menu in Eclipse. You can then use the "Existing
Android Code Into Workspace" option to import the project and then run it
as an Android Application. Remember you cannot run the project without
an emulator that has GPU support and the android version that
corresponds to the required OpenGL ES version, as discussed in <i>Android and the OpenGL ES</i> section above. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEge7KlltjfnXjJ8ry5I3tddUcetbuhyKllNgH6bpQSMXofGjQMfnbVbThL7JU0myXEi3aR9wwjXLBA1f35Dh6C_ioOpzeEF8A-DI3puUrVWCes0w3sWvvX3kQ-_i6jg60XIRXKAg3FuODo/s1600/import.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEge7KlltjfnXjJ8ry5I3tddUcetbuhyKllNgH6bpQSMXofGjQMfnbVbThL7JU0myXEi3aR9wwjXLBA1f35Dh6C_ioOpzeEF8A-DI3puUrVWCes0w3sWvvX3kQ-_i6jg60XIRXKAg3FuODo/s1600/import.jpg" height="320" width="303" /></a></div>
<br />
<br />
The download includes two android application projects. One requires OpenGL ES version 1.0 the other requires version 2.0. When you run the application it displays a triangle and a square. You can click and rotate the triangle because it was programmed to respond to user interaction. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiChlo6eKRV1p3zNLV9BzBKkyQW7Ba4beyU7V8JFX02HaJ6fEc3SONDpgNJAndaTGIrWbxfEyDF2KhQqhUUSrojrMfDs_j9vKQJH3UWwJNyafZVtWDaMutiEG2pHuvaitpnJ56kkR-l4ro/s1600/opengles20.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiChlo6eKRV1p3zNLV9BzBKkyQW7Ba4beyU7V8JFX02HaJ6fEc3SONDpgNJAndaTGIrWbxfEyDF2KhQqhUUSrojrMfDs_j9vKQJH3UWwJNyafZVtWDaMutiEG2pHuvaitpnJ56kkR-l4ro/s1600/opengles20.jpg" height="320" width="173" /></a></div>
<h4 style="text-align: left;">
</h4>
<h4 style="text-align: left;">
<span style="color: #073763;"> Hello OpenGL ES Android Application Project Classes</span></h4>
<br />
The Hello OpenGL ES project's core classes are as follows:<br />
<ul style="text-align: left;">
<li>MyGLSurfaceView</li>
<li>MyGLRenderer</li>
<li>OpenGLES20Activity</li>
<li>Square</li>
<li>Triangle</li>
</ul>
<br />
MyGLRenderer implements the <a href="http://glsurfaceview.renderer/" target="_blank">GLSurfaceView.Renderer</a> class, which is used to render a frame. In the Hello OpenGL ES project the GLSurfaceView.Render uses <a href="http://developer.android.com/reference/android/opengl/GLES20.html" target="_blank">GLES20 constants</a> to draw the background color of the frame. It uses the <a href="http://developer.android.com/reference/android/opengl/Matrix.html" target="_blank">Matrix class</a> to set the camera position as well as calculate and store 4 x 4 column-vectors for rendering. (Below is an example of the 4 x 4 column-vector matrices from the OpenGL ES Android reference:) <br />
<br />
<span style="color: #0b5394;"><span style="font-size: x-small;"><span style="background-color: white;"><span class="pln"> m</span><span class="pun">[</span><span class="pln">offset </span><span class="pun">+</span><span class="pln"> </span><span class="lit">0</span><span class="pun">]</span><span class="pln"> m</span><span class="pun">[</span><span class="pln">offset </span><span class="pun">+</span><span class="pln"> </span><span class="lit">4</span><span class="pun">]</span><span class="pln"> m</span><span class="pun">[</span><span class="pln">offset </span><span class="pun">+</span><span class="pln"> </span><span class="lit">8</span><span class="pun">]</span><span class="pln"> m</span><span class="pun">[</span><span class="pln">offset </span><span class="pun">+</span><span class="pln"> </span><span class="lit">12</span><span class="pun">]</span><span class="pln"><br /> m</span><span class="pun">[</span><span class="pln">offset </span><span class="pun">+</span><span class="pln"> </span><span class="lit">1</span><span class="pun">]</span><span class="pln"> m</span><span class="pun">[</span><span class="pln">offset </span><span class="pun">+</span><span class="pln"> </span><span class="lit">5</span><span class="pun">]</span><span class="pln"> m</span><span class="pun">[</span><span class="pln">offset </span><span class="pun">+</span><span class="pln"> </span><span class="lit">9</span><span class="pun">]</span><span class="pln"> m</span><span class="pun">[</span><span class="pln">offset </span><span class="pun">+</span><span class="pln"> </span><span class="lit">13</span><span class="pun">]</span><span class="pln"><br /> m</span><span class="pun">[</span><span class="pln">offset </span><span class="pun">+</span><span class="pln"> </span><span class="lit">2</span><span class="pun">]</span><span class="pln"> m</span><span class="pun">[</span><span class="pln">offset </span><span class="pun">+</span><span class="pln"> </span><span class="lit">6</span><span class="pun">]</span><span class="pln"> m</span><span class="pun">[</span><span class="pln">offset </span><span class="pun">+</span><span class="pln"> </span><span class="lit">10</span><span class="pun">]</span><span class="pln"> m</span><span class="pun">[</span><span class="pln">offset </span><span class="pun">+</span><span class="pln"> </span><span class="lit">14</span><span class="pun">]</span><span class="pln"><br /> m</span><span class="pun">[</span><span class="pln">offset </span><span class="pun">+</span><span class="pln"> </span><span class="lit">3</span><span class="pun">]</span><span class="pln"> m</span><span class="pun">[</span><span class="pln">offset </span><span class="pun">+</span><span class="pln"> </span><span class="lit">7</span><span class="pun">]</span><span class="pln"> m</span><span class="pun">[</span><span class="pln">offset </span><span class="pun">+</span><span class="pln"> </span><span class="lit">11</span><span class="pun">]</span><span class="pln"> m</span><span class="pun">[</span><span class="pln">offset </span><span class="pun">+</span><span class="pln"> </span><span class="lit">15</span><span class="pun">]</span></span></span></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
The Hello OpenGL ES project introduces quite a few interesting programming concepts. For example, the MyGLSurfaceView class implements the GLSurfaceView class, which creates a view container (which manages a surface so OpenGL can render to that surface) used to render OpenGL ES graphics as well as capture touch events so users can interact with the graphics. Th android activity class creates an instance of the GLSurfaceView to serve as the Content View for the activity.<br />
<br />
In the project the MyGLSurfaceView calls the MyGLRenderer class so the graphics can be rendered using the <a href="http://developer.android.com/reference/android/opengl/GLSurfaceView.Renderer.html">GLSurfaceView.Renderer class</a>. Both the Triangle and the Square class use the <a href="http://developer.android.com/reference/android/opengl/GLES20.html" target="_blank">GLES20.glCreateProgram()</a> command to create an empty OpenGL ES program. And the <a href="http://developer.android.com/reference/android/opengl/GLES20.html" target="_blank">GLES20.glAttachShader</a> command is used to add the vertex and fragment shaders to the program. The <a href="http://developer.android.com/reference/android/opengl/GLES20.html">GLES20.glLinkProgram</a> command (or public method) is then used to create the OpenGL program executables. The vertex shader executable runs on the vertex processor and the fragment shader executable runs on the fragment processor.<br />
<br />
Since the user can interact with the triangle, the triangle coordinates are captured and used to write the position of the triangle. The MyGLRender class is implemented in a way that ensures, once the triangle is rendered, it is only rendered again when the data changes.<br />
<br />
<h4 style="text-align: left;">
<span style="color: #073763;">Summary </span></h4>
<br />
Overall the Hello OpenGL ES project has a very simple design that executes the key elements of an animated graphics android application. This program can help developers more easily understand how to program graphics using the OpenGL ES API as well as create shaders and assign buffers. For more information you can refer to the following list of resources:<br />
<br />
<br />
<ul style="text-align: left;">
<li>OpenGL ES Reference <a href="http://www.khronos.org/opengles/sdk/docs/man3/index.php" target="_blank">http://www.khronos.org/opengles/sdk/docs/man3/index.php </a></li>
<li>OpenGL ES Specification <a href="http://www.khronos.org/registry/gles/specs/3.0/es_spec_3.0.3.pdf" target="_blank">http://www.khronos.org/registry/gles/specs/3.0/es_spec_3.0.3.pdf</a></li>
<li>Building an OpenGL ES Environment Article: <a href="http://developer.android.com/training/graphics/opengl/environment.html" target="_blank">http://developer.android.com/training/graphics/opengl/environment.html</a> </li>
<li>Article on the Frame Buffer: <a href="http://www.opengl.org/wiki/Framebuffer" target="_blank">http://www.opengl.org/wiki/Framebuffer </a></li>
<li>Graphics Pipeline Documentation <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ff476882%28v=vs.85%29.aspx" target="_blank">http://msdn.microsoft.com/en-us/library/windows/desktop/ff476882%28v=vs.85%29.aspx </a></li>
</ul>
</div>
Anonymoushttp://www.blogger.com/profile/11770164970801071498noreply@blogger.comtag:blogger.com,1999:blog-7793781044289546361.post-42102211919361816722014-01-24T13:15:00.000-08:002014-01-24T13:18:02.445-08:00Game Cheat Engine Overview (Part 1)<div dir="ltr" style="text-align: left;" trbidi="on">
Yes, it's true. There is a software program that can be used to cheat when you play a game. My guess is that die-hard gamers would never use such a tool. But for people, like me, who love software and like to explore you will likely find this little tool a bit interesting.<br />
<br />
A cheat engine is a software app that lets you change values assigned to a variable in a game. (Note that a variable is a named storage location in
the computer's memory. The storage location holds the value that might be a number, a text
string or some other data type. The variable provides the developer a way not only to store; but also to retrieve and manipulate values. For example, a game might give a new player 3 lives. And each time the player get's shot "x" number of times (where x can be any number), the player looses a life. In this example the number of lives is stored in a variable. And, as an incident occurs that results in the value changing (i.e., the player looses a life) the value is updated.<br />
<br />
The Cheat Engine provides a way for users to locate the value in memory and change it. For example, if a player wants to change the number of lives from 3 to 10--the Cheat Engine could be used to accomplish this task. The following paragraphs provide additional information on various ways Cheat Engines might locate a variable's value and change it. <br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Downloading the Game Engine</span></h3>
<br />
I downloaded Cheat Engine 6.3 from <a href="http://www.downloads.com/" target="_blank">www.downloads.com</a>. But it can also be downloaded from <a href="http://www.cheatengine.org/" target="_blank">http://www.cheatengine.org/</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg13NHPzdP_UFAfFRmFeB0_6DAQbinmkObSvP23CgnCVlh-fqpR_WL9Y7IIGpI6x4MvDCHQk9CyF7d9xWpA3hXilzr52FdE-jME_s1S-7lF2LwG74XnDDfEaykz3weAjdppTIeLgofx5QU/s1600/cheatenginedotcom.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Download Engine Page" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg13NHPzdP_UFAfFRmFeB0_6DAQbinmkObSvP23CgnCVlh-fqpR_WL9Y7IIGpI6x4MvDCHQk9CyF7d9xWpA3hXilzr52FdE-jME_s1S-7lF2LwG74XnDDfEaykz3weAjdppTIeLgofx5QU/s1600/cheatenginedotcom.jpg" height="144" title="Download Engine Page" width="320" /></a></div>
<br />
Note: If you are not familiar with <a href="http://www.downloads.com/" target="_blank">www.downloads.com</a>; it's probably not the best place to download the Engine. This is because downloads.com adds a lot of unwanted software to downloads. If you are familiar with downloads.com you probably have already figured out how to duck and dodge your way to an executable that includes only the product you want to install.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #073763;">Installing the Cheat Engine</span></h3>
<br />
The Cheat Engine is pretty straight forward to install. However just be aware that when you come to the "Improve Your Internet Protection" screen you can select "Custom Installation" (even though it "appears" to be disabled) if you do not want to install the AVG tool bar or the Outfox.tv application.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi036pKWBa5_cSKIlAs4avAJyQKQkic5KfwG7UFFY3aVKf1jbl7MbtRwENYwWh9XFc2soZFASxoP7_v6wgJYHXWRvQ0j_HKQquRJQdOfayVi3gLIs1nyrXqbo3gy6JqyWzxFz2Y9zL3HIQ/s1600/install_cheat_engine3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Custom Installation Image" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi036pKWBa5_cSKIlAs4avAJyQKQkic5KfwG7UFFY3aVKf1jbl7MbtRwENYwWh9XFc2soZFASxoP7_v6wgJYHXWRvQ0j_HKQquRJQdOfayVi3gLIs1nyrXqbo3gy6JqyWzxFz2Y9zL3HIQ/s1600/install_cheat_engine3.jpg" height="287" title="Custom Installation" width="400" /></a></div>
<br />
Once you select Custom Installation, from "Improve Your Internet Protection" screen, you can deselect the AVG options if desired, as shown below. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXkgwonQxI5BVMr6sxPh9mJu0ZHs1RsmD2ITcqwd_nqCFOFsif5c-ZdDfqEjD4OnR9RHECqsfC2ZwcdMfO3nLRwHQN-rkPC5qMTeRVxoF2tGBFi6Eorg4zMqsHXH6lPBGq9QeX0MqEw88/s1600/install_cheat_engine4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Custom Installation Image With AVG Options Deselected" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXkgwonQxI5BVMr6sxPh9mJu0ZHs1RsmD2ITcqwd_nqCFOFsif5c-ZdDfqEjD4OnR9RHECqsfC2ZwcdMfO3nLRwHQN-rkPC5qMTeRVxoF2tGBFi6Eorg4zMqsHXH6lPBGq9QeX0MqEw88/s1600/install_cheat_engine4.jpg" height="287" title="Custom Installation Image With AVG Options Deselected" width="400" /></a></div>
<br />
When you click "Next" install wizard recommends the Express installation.You can click Custom Installation if you want to deselect the "Install Outfox.TV" option. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijCbLh5FWEcg1Uyz6MJR9TuWKqrQMxccGJzR5LKOfDzNySHldH5AuOL9bYSSKhQXckQTpDins7Z36ROJP1y_zBotPIYCIkQ6K4HLvbWTXOCO1a7LIKqBtQT1OafjraSQUHyvHvS0GUu4Q/s1600/install_cheat_engine5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Express (Recommended) Option Selected Image" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijCbLh5FWEcg1Uyz6MJR9TuWKqrQMxccGJzR5LKOfDzNySHldH5AuOL9bYSSKhQXckQTpDins7Z36ROJP1y_zBotPIYCIkQ6K4HLvbWTXOCO1a7LIKqBtQT1OafjraSQUHyvHvS0GUu4Q/s1600/install_cheat_engine5.jpg" height="287" title="Express (Recommended) Option Selected" width="400" /></a></div>
<br />
You can then continue to use the Setup wizard until the Cheat Engine is installed. Once it is installed an Information window displays. When you click Next a dialog pops up and asks "Do you want to try out the tutorial?" If you click yes, the Tutorial application launches. Note that the Tutorial application is a separate app from the Cheat Engine app. Both apps are shown in the following picture.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfFiGh5mOnc37KxhdftWTS2y2_OqWGyq00Y_YmLa5Cwuyh33ycx0_cmgTM3GBsC02xdIBhxCUr16BXrv3z7CmdFlJHJZyYtfyb2M9Bb0cZOvCsVXhlzvkunJCyBHsWAyaYe8CkQOpfNn4/s1600/install_cheat_engine6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWLwtrdb-Hvj4242MvkwfJXrkybka9MycAtsRluNUJJq_oCcupEx8iTraQbIgIZ5pEM4LnG2L-QZnA-45ruvDL9DwiBAzGMtsrvt4wXr5MRjtDmFe57BJ31orRF_QdHdGPsJKvteauLhI/s1600/install_cheat_engine11.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWLwtrdb-Hvj4242MvkwfJXrkybka9MycAtsRluNUJJq_oCcupEx8iTraQbIgIZ5pEM4LnG2L-QZnA-45ruvDL9DwiBAzGMtsrvt4wXr5MRjtDmFe57BJ31orRF_QdHdGPsJKvteauLhI/s1600/install_cheat_engine11.jpg" height="380" width="400" /></a></div>
<br />
When you click the Next button on the Cheat Engine Tutorial app you are presented with the first objective in the tutorial. You must click the "Hit me" button on the lower left bottom portion of Cheat Engine Tutorial app. Doing this changes the "Health" variable's value. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVLhmxiU8T0CZGvsFhX_uwFRnyZ3RITAEteQledBOyv4V4iP43VycTKGKAvwFZLCphqgZX83wj9WQ8B0mdea-5N6IIXebeO-nuONSdN7NQMAmLXjIACyuDdqBchazkcqGWn_7B8aeO89c/s1600/Hit_Me.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVLhmxiU8T0CZGvsFhX_uwFRnyZ3RITAEteQledBOyv4V4iP43VycTKGKAvwFZLCphqgZX83wj9WQ8B0mdea-5N6IIXebeO-nuONSdN7NQMAmLXjIACyuDdqBchazkcqGWn_7B8aeO89c/s1600/Hit_Me.jpg" height="322" width="400" /></a></div>
<br />
<h3 style="text-align: left;">
<span style="color: #073763;"> Changing a Known Value</span></h3>
<br />
In this example, you know the value of the variable. For example, if you start a game with 250 rounds of ammunition; you know the value--but you don't know the address of the value (i.e., where in memory the value is located). As shown in the following picture I clicked the "Hit me" button until the Health value changed from 100 to 73. The Next button, on the Tutorial app, will remain disabled until I locate the Health variable and change its' value back to 100. To begin I have to use the Cheat Engine app to open the Tutorial executable file (i.e., Tutorial-i386.exe). To open the .exe file I use the "Select a process to open" button, outlined using a red box in the picture below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEakqEN79yI_YWuYPw9VD3PGxOGPqnoBW5BMHpm0bHaLSdIRK2dHZsnU15JYDefDrU7G6KdxwblZyQMmcUlT00N0rUpAO47Sw0cJmtgLM9kJVXISVngutysQaSgXmK0-Z2vBxQ47-1iOU/s1600/select_a_process.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEakqEN79yI_YWuYPw9VD3PGxOGPqnoBW5BMHpm0bHaLSdIRK2dHZsnU15JYDefDrU7G6KdxwblZyQMmcUlT00N0rUpAO47Sw0cJmtgLM9kJVXISVngutysQaSgXmK0-Z2vBxQ47-1iOU/s1600/select_a_process.jpg" height="311" width="320" /></a></div>
<br />
When the Process List window opens I can select the Tutorial executable (highlighted in the picture below) and click the Open button.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhadc6WXpUokxh6HjWanZXXBYvD2HHxiTO84P-isNjltRPkC-B3kPDZOKEw94BOqKCnQTRQUrYnbGJ7XdJPDFtRWUmZ39I7HFTCO0j1QcIXTHcxC5OMPJ2rROcVPDl5zNq81SfilJSPWFk/s1600/open_tutorial_exe.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhadc6WXpUokxh6HjWanZXXBYvD2HHxiTO84P-isNjltRPkC-B3kPDZOKEw94BOqKCnQTRQUrYnbGJ7XdJPDFtRWUmZ39I7HFTCO0j1QcIXTHcxC5OMPJ2rROcVPDl5zNq81SfilJSPWFk/s1600/open_tutorial_exe.jpg" height="311" width="320" /></a></div>
<br />
The Cheat Engine opens the executable file and populates the Engine with the Start and Stop scan ranges and other values. There are three values that are primarily used for the Scan as follows: "Value", "Scan Type" and "Value Type". The "Value" field holds the value of the variable. The Scan Type indicates the type of scan that will be used to locate the value. And the Value Type, which is the same as a data type. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfXB90lxNibYBMLfQdiSzMEOsdi-PdaAK8ZLUQPyNlci3RgJ3KcLXEIjalY8GW6RHILkyNfaZzKOnS4ZEeSfN2JYxtDS4Ox_HW4ancuxO_J2W4tvjobZh6jMYBNLQxt2jC-5m8l4YTdgo/s1600/cheat_engine_populated.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfXB90lxNibYBMLfQdiSzMEOsdi-PdaAK8ZLUQPyNlci3RgJ3KcLXEIjalY8GW6RHILkyNfaZzKOnS4ZEeSfN2JYxtDS4Ox_HW4ancuxO_J2W4tvjobZh6jMYBNLQxt2jC-5m8l4YTdgo/s1600/cheat_engine_populated.jpg" height="311" width="320" /></a></div>
<br />
<br />
Note: If you are not familiar with Data Types (referred to
as "Value Type" in the Cheat Engine) Microsoft has an older reference
for C# that provides a brief and basic example of data types. This might
help clarify how one data type differs from another: <a href="http://msdn.microsoft.com/en-us/library/cs7y5x0x%28v=vs.90%29.aspx" target="_blank">http://msdn.microsoft.com/en-us/library/cs7y5x0x%28v=vs.90%29.aspx</a><br />
<br />
In the Value field, shown in the above picture, I entered 73, which is the current "Health" value based on the number of times I clicked the "Hit me" button. Since I am searching for the exact value "73" I leave the Scan Type value set to "Exact Value". Also the "Value Type" is set to 4 Bytes, which is feasible to search for the numeric value 73.<br />
<br />
<br />
When I click the First Scan button a list of values display in the left side of the window. This means more than one variable's value is currently set to 73. So I need to isolate the variable specific to the "Health" value.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivTcl16zuKk69JWu_OtsuNsN_5_0ViNTkwVhQ_t4y-L-cFMsLFya8-I5MDoBrXyRE3XQMrgSpn0RjQgzTEIB9nTn680qPS5JHB-c7ghX8GlUGr8WYy3AjHds-8M63jPegqQ3orJeeChps/s1600/list_of_values.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivTcl16zuKk69JWu_OtsuNsN_5_0ViNTkwVhQ_t4y-L-cFMsLFya8-I5MDoBrXyRE3XQMrgSpn0RjQgzTEIB9nTn680qPS5JHB-c7ghX8GlUGr8WYy3AjHds-8M63jPegqQ3orJeeChps/s1600/list_of_values.jpg" height="388" width="400" /></a></div>
<br />
To do this I will need to click the "Hit me" button. Clicking the button changed the Health value to 71. I enter 71 in the value field and then click Next Scan. The Cheat Engine rescans the variables already presented and searches for the variable whose value is now 71. As shown in the following picture, only one variable has a value of 71. So I know this is the Health variable.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixIoFf6qhZO2PYa0wQxo_bVwgZDqkJGhN7msMGQOGdwHll0jebGyyvPu51rIzEIncxGq9HNgSbHkkUqG4wOsZ3YCu9x8vHsuvvfTEZXk3o-7OTYKcXidQoUGk-3AOGEZpoLL-GNmwT8lg/s1600/value_isolated.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixIoFf6qhZO2PYa0wQxo_bVwgZDqkJGhN7msMGQOGdwHll0jebGyyvPu51rIzEIncxGq9HNgSbHkkUqG4wOsZ3YCu9x8vHsuvvfTEZXk3o-7OTYKcXidQoUGk-3AOGEZpoLL-GNmwT8lg/s1600/value_isolated.jpg" height="388" width="400" /></a></div>
<br />
I can either double-click the address value; OR, right click it. If I right-click the value a popup window displays. I can then select "Add selected addresses to the addresslist", as shown below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGWO5Cp_8sQUdH-QuJX9iUkiWzCr3ibqROCrT-DT-4D72Z9GZQ7QUWUGfpUjeGFTsir4Vrl0mp_b8-qwlmTrr5Jsahxj_RaMh3d0pvk54QTcGCdvCl568gS4nfYudWMI3K5twjyls7tL0/s1600/add_address.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGWO5Cp_8sQUdH-QuJX9iUkiWzCr3ibqROCrT-DT-4D72Z9GZQ7QUWUGfpUjeGFTsir4Vrl0mp_b8-qwlmTrr5Jsahxj_RaMh3d0pvk54QTcGCdvCl568gS4nfYudWMI3K5twjyls7tL0/s1600/add_address.jpg" height="388" width="400" /></a></div>
<br />
Whether I double-click the address value or use the popup window, the address is moved to the bottom portion of the window, as shown below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiONnC0wNU-ZDohWOTqQ-yJxbQSBHfqXfBiTwOXk_S97jIAYeTCTTf0IkLWJ74xe_D6egr24dAVvDHRph-PblBmqNiZqntlsQa6Vl_TuKYL2qaIGAOs2T693OlaPGfr9mKMWJ1cru6m14E/s1600/address_list_below.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiONnC0wNU-ZDohWOTqQ-yJxbQSBHfqXfBiTwOXk_S97jIAYeTCTTf0IkLWJ74xe_D6egr24dAVvDHRph-PblBmqNiZqntlsQa6Vl_TuKYL2qaIGAOs2T693OlaPGfr9mKMWJ1cru6m14E/s1600/address_list_below.jpg" height="388" width="400" /></a></div>
<br />
Right-click the value in the bottom window. The popup menu displays. Select Change record -> Value, as shown below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoSHTtKM0LVV4JRiOBZh9zXPtYyvUN6bvC57UhVAFkJ0dAHd1cMzNhWhRd6V4mGifLLzlWwWFvoaYnChhrVBdPTJPB_Fv4zYKR2kmwk64dXtTExbzGAPl0K2GvjSGMfyzPAv0xKgdRGD8/s1600/change_record.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoSHTtKM0LVV4JRiOBZh9zXPtYyvUN6bvC57UhVAFkJ0dAHd1cMzNhWhRd6V4mGifLLzlWwWFvoaYnChhrVBdPTJPB_Fv4zYKR2kmwk64dXtTExbzGAPl0K2GvjSGMfyzPAv0xKgdRGD8/s1600/change_record.jpg" height="236" width="400" /></a></div>
<br />
The Change Value window displays. I can now change the Health Value from 71 to 1000 and click OK to close the Change Value window<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaHKdk2LgEqyb4ZUIhsJbemOLJ2QMi8LZ0P4cb069LCpN7PPsdo_nHUMe1f1fEv-yiug72aqJDIR9x5lQ8n0Zgst2NaDBGdM0Ibw3d7lTW21rfqRiFrqKckB3UPFyGKsg4dA0qoND-af8/s1600/change_value_dialog.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaHKdk2LgEqyb4ZUIhsJbemOLJ2QMi8LZ0P4cb069LCpN7PPsdo_nHUMe1f1fEv-yiug72aqJDIR9x5lQ8n0Zgst2NaDBGdM0Ibw3d7lTW21rfqRiFrqKckB3UPFyGKsg4dA0qoND-af8/s1600/change_value_dialog.jpg" height="388" width="400" /></a></div>
<br />
The Next button is now enabled, which signifies that I have performed the step properly and can move on to the next step.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzj6_DDwPmqQ5wgri0XXL7UW7rKjIpK6h8qODMNr0Nhh0wEHeEZR8do2UbGc1l-u8341M9S-Sa2iZPpmkt9VLJLkYbGU4x9Hp9Yj16s6Cmute3luRFn4usPAoGXSd9wXabRSFYWtTg6P8/s1600/Cheat_Engine_Next.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzj6_DDwPmqQ5wgri0XXL7UW7rKjIpK6h8qODMNr0Nhh0wEHeEZR8do2UbGc1l-u8341M9S-Sa2iZPpmkt9VLJLkYbGU4x9Hp9Yj16s6Cmute3luRFn4usPAoGXSd9wXabRSFYWtTg6P8/s1600/Cheat_Engine_Next.jpg" height="200" width="400" /></a></div>
<br />
The following objectives show how to locate a variable whose address changes, how to use pointers and more. If there is enough interest in this topic I will post the information for the remaining steps associated with the Cheat Engine tutorial.</div>
Anonymoushttp://www.blogger.com/profile/11770164970801071498noreply@blogger.comtag:blogger.com,1999:blog-7793781044289546361.post-30805586167041132902014-01-01T22:31:00.000-08:002014-07-26T15:07:13.861-07:00Unity Game Engine's Mesh Renderer, Mesh Filter, Shaders and Materials Overview<div dir="ltr" style="text-align: left;" trbidi="on">
Unity Game Engine provides a way for game developers to apply shaders, textures and colors to a polygon mesh. From the user avatar to the get-a-way car or even the abandoned science lab with broken furniture, rabid dogs and glass vials--the mesh filter and mesh renderer turn polygon meshes into recognizable objects. This article provides an overview and examples related to Unity's mesh filter and mesh renderer. All of the examples included in this article are taken from the Unity Stealth Project, which can be downloaded at <a href="https://www.assetstore.unity3d.com/#/content/7677">https://www.assetstore.unity3d.com/#/content/7677</a>.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Meshes</span></h3>
<br />
A mesh is a collection of triangles used to create an impersonation of an object in a 3D world. The following picture shows a partial mesh.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXrUXJ1Wm2jAIbT_5fGb07IaclXvDutPNdSbkSUrDFFyPeF-ee9ZJR3Y9I3BTK3s3cor3sGoCsbZehNQV9Gq_1vXHdDvUMyCEOHxdYxh3x5YoLtcD8GJTFgE-BZruRuYq5tJzjA3Yr2jo/s1600/partial_mesh.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXrUXJ1Wm2jAIbT_5fGb07IaclXvDutPNdSbkSUrDFFyPeF-ee9ZJR3Y9I3BTK3s3cor3sGoCsbZehNQV9Gq_1vXHdDvUMyCEOHxdYxh3x5YoLtcD8GJTFgE-BZruRuYq5tJzjA3Yr2jo/s1600/partial_mesh.png" height="106" width="320" /></a></div>
<br />
Meshes
are used to define a 3D world because they render more quickly than images. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEyYHpeAex0YZp1A68sjKYg27BtsNsKZrnnDNYkYT1K3Qg09t4TvH_zAEd_HMQxHKHMGZ66YSIrBao9mxv1msamLxVqFbCM85RTZLybnUr3Cyi7eAvnsB0AgMx3DJxk9zdfZSYG0D_2_U/s1600/battlebus_mesh.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEyYHpeAex0YZp1A68sjKYg27BtsNsKZrnnDNYkYT1K3Qg09t4TvH_zAEd_HMQxHKHMGZ66YSIrBao9mxv1msamLxVqFbCM85RTZLybnUr3Cyi7eAvnsB0AgMx3DJxk9zdfZSYG0D_2_U/s1600/battlebus_mesh.png" height="198" width="320" /></a></div>
<br />
<br />
Each triangle, used to makeup the mesh has three corner points referred to as vertices. In programming, the mesh class (the interface to an object's mesh geometry) uses not only vertex arrays; but also triangle arrays. The vertices of the triangles that make up the mesh are stored as integers in a single vertex array. The vertices are assigned to the mesh. The developer can then build the triangle indices--3 indices in the vertex array for each triangle. The triangles are then assigned to the mesh and the vertex normals can automatically be calculated using RecalculateNormals(). <br />
<br />
<br />
While the triangles give the mesh shape; the vertex normal values assist in providing lighting from the appropriate angles. This lighting is required so the mesh can be seen. For more information about normal vectors see <a href="http://docs.unity3d.com/Documentation/Manual/ComputingNormalPerpendicularVector.html" target="_blank">http://docs.unity3d.com/Documentation/Manual/ComputingNormalPerpendicularVector.html</a>.<br />
<br />
In Unity, if an object is textured its wireframe can be seen (while using the Scene View) by selecting the Wireframe option, as shown in the picture below. Alternatively, you can select Textured Wireframe to see the materials associated with the mesh and the mesh as an overlay.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKbGOVCu6MwA6_Ta5zmhfaj7y7nSl_Nc7gGP5aeOAcClMCfYXnL-w5swOZEuV_eBrIvW1ioZXP9sGQVGZal4p9-U1CXQb67Ezs4Rh8anwkxsKlEILawYGdd5NUXFvO-jxxiNdu4smGbhw/s1600/wireframe.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKbGOVCu6MwA6_Ta5zmhfaj7y7nSl_Nc7gGP5aeOAcClMCfYXnL-w5swOZEuV_eBrIvW1ioZXP9sGQVGZal4p9-U1CXQb67Ezs4Rh8anwkxsKlEILawYGdd5NUXFvO-jxxiNdu4smGbhw/s1600/wireframe.jpg" height="235" width="320" /></a></div>
<br />
<br />
For more information on meshes see the Unity Script Reference Documentation at <a href="http://docs.unity3d.com/Documentation/ScriptReference/Mesh.html" target="_blank">http://docs.unity3d.com/Documentation/ScriptReference/Mesh.html</a> and the Unity Mesh documentation at <a href="http://docs.unity3d.com/Documentation/Manual/AnatomyofaMesh.html" target="_blank">http://docs.unity3d.com/Documentation/Manual/AnatomyofaMesh.html</a>.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Selecting a Mesh Filter</span></h3>
<br />
You can drag a mesh onto the Scene View in Unity to specify the mesh you want to render. (For more information on the Scene View you can read my previous article titled <a href="http://bussystemanalysis.blogspot.com/2013/11/building-games-for-facebook-playstation.html" target="_blank">Unity Engine - Building Games for Facebook, PlayStation, XBox 360, etc. (Overview)</a>. If you want to change a mesh, you can do so by selecting the Mesh Filter option on the Inspector window, which appears after you select a mesh or gameobject.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZSxahqlHWpVOkq1aAWBFWHcKxK_J6HesvqutzdrOJjjNNb7FuvIbTxxxMBM_uvnGP4R_If4VG93AUGLA5XuTEOGPkSmYMQaMgx0gaoxGVbI72cECtR62TgsaO1DpDQUksAC3KTYV6glE/s1600/prop_battle_bus.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZSxahqlHWpVOkq1aAWBFWHcKxK_J6HesvqutzdrOJjjNNb7FuvIbTxxxMBM_uvnGP4R_If4VG93AUGLA5XuTEOGPkSmYMQaMgx0gaoxGVbI72cECtR62TgsaO1DpDQUksAC3KTYV6glE/s1600/prop_battle_bus.jpg" height="171" width="320" /></a></div>
<br />
The above approach works well if you have a gameobject associated with materials; but want to change the selected mesh. To view the currently selected mesh, from the Inspector, select the gameobject using the Scene View. When the Inspector displays click the Select Mesh button (shown below). The Select Mesh window (shown in the picture above) displays. You can then view the currently selected mesh: or select a different mesh from the list of available meshes.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisnigJDQKBfqWL6iYN5Bqu55cJiX8yz2HkJLb9TKZWpp9RtCW2P5YSJzXEWr1dztu65ClNV_CyQ3ZS6kjawMai8wKw18oWFGYXFkXCU1DMj5x4nvv0o1BxbXTgBqci-qZhilVeb1bpIKE/s1600/select_mesh.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisnigJDQKBfqWL6iYN5Bqu55cJiX8yz2HkJLb9TKZWpp9RtCW2P5YSJzXEWr1dztu65ClNV_CyQ3ZS6kjawMai8wKw18oWFGYXFkXCU1DMj5x4nvv0o1BxbXTgBqci-qZhilVeb1bpIKE/s1600/select_mesh.jpg" height="320" width="200" /></a></div>
<br />
If you have imported a mesh from an application and want to apply shaders and textures you will need to use Unity's mesh renderer, which is discussed below.<br />
<br />
Note: Although Unity does not include modeling tools; you can import meshes and materials from other tools (such as <a href="http://www.autodesk.com/products/autodesk-softimage/free-trial" target="_blank">Autodesk SoftImage</a>) into Unity. But keep in mind that the Unity Asset store does include <a href="https://www.assetstore.unity3d.com/#/category/106" target="_blank">Editor Extensions/Modeling</a> plugins that provide a way to extend the Unity Engine to perform some 3D modeling tasks. <br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Mesh Renderer</span></h3>
<br />
Within Unity a mesh is rendered by applying a shader, which is a program that executes inside the graphics processing unit (GPU). The shader defines how data (associated with a graphic) is processed. For example, the shader defines how the graphic is rendered such as whether or not to cast shadows, lighting, color, etc. The following picture shows the properties associated with Unity's Bumped Specular Shader, which executes the commonly used vertex shader and fragment shader.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5nLNkOTUHmr2M3JYv1ALMjxMb31BPLD-5Qp6ISz5R_xfP48d2tqdDq0j4ECGAsMJ0pzo7VujZkxmf_p6NmWcXvi1GB4nY4VztyXDH7qJSgeW8N_jMinac8J-QDa0e4ewiquUw0Uq-Emw/s1600/shader_values.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5nLNkOTUHmr2M3JYv1ALMjxMb31BPLD-5Qp6ISz5R_xfP48d2tqdDq0j4ECGAsMJ0pzo7VujZkxmf_p6NmWcXvi1GB4nY4VztyXDH7qJSgeW8N_jMinac8J-QDa0e4ewiquUw0Uq-Emw/s1600/shader_values.jpg" height="231" width="400" /></a></div>
<br />
The shader also determines the render queue to which an object belongs.
This is done so objects are drawn in the proper sequence. Unity ships with four pre-defined render queues as follows:<br />
<ul style="text-align: left;">
<li><span style="color: #0b5394;"><b>Background queue</b></span>, which renders its objects first.</li>
<li><span style="color: #0b5394;"><b>Geometry queue</b></span>, which renders opaque geometry objects before the Alpha Test, Transparent and Overlay objects are rendered.</li>
<li><span style="color: #0b5394;"><b>Alpha Test queue</b></span>, which renders alpha-tested objects after the opaque geometry objects have been rendered.</li>
<li><span style="color: #0b5394;"><b>Transparent queue</b></span>, which renders objects such as glass and all other alpha-blended objects after the opaque geometry and alpha-tested objects are rendered.</li>
<li><span style="color: #0b5394;"><b>Overlay queue</b></span>, which renders lens flares and any other overlay effects after the Transparent objects are rendered.</li>
</ul>
<br />
The Stealth Project includes the prop_battlebus mesh, which uses 16 materials to apply shaders, textures and color to achieve the look shown below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrfC0cocsqv43gM5Cm7JDoKaJs_GU7AmInjD6NXcffKR2fzQNJew6qVdCLbnxBT3Bxtma0-Cg7w4_clux3xW2LMcfkrfjrhemlBOKCB1hJi6y2qNAHdrTjavtUVOOrBd8TEpMTVMc0cmg/s1600/prop_battlebus.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrfC0cocsqv43gM5Cm7JDoKaJs_GU7AmInjD6NXcffKR2fzQNJew6qVdCLbnxBT3Bxtma0-Cg7w4_clux3xW2LMcfkrfjrhemlBOKCB1hJi6y2qNAHdrTjavtUVOOrBd8TEpMTVMc0cmg/s1600/prop_battlebus.jpg" height="202" width="400" /></a></div>
<br />
To display a gameobject the mesh filter passes the mesh to the mesh renderer, which applies the shaders, textures and color values.<br />
<br />
To add shaders and textures you must first add a material element that will enable you to select the a material that includes the desired shader and texture files. The Stealth Project Battle Bus uses the following 16 materials, which can be applied by adding a material element for each material.<br />
<ol style="text-align: left;">
<li>prop_battlebus_body_mat</li>
<li>prop_battleBus_wheels_mat</li>
<li>prop_battleBus_lights_mat</li>
<li>prop_battleBus_tv_mat</li>
<li>prop_battleBus_sacks_mat</li>
<li>prop_battleBus_canister_mat</li>
<li>prop_battleBus_carpet_mat</li>
<li>prop_battleBus_barbedWire_mat</li>
<li>prop_battleBus_crates_mat</li>
<li>prop_battleBus_appendages_mat</li>
<li>prop_battleBus_tubes_mat</li>
<li>prop_battleBus_baggageFrame_mat</li>
<li>prop_battleBus_whiteMetal_mat</li>
<li>prop_battleBus_blackMetal_mat</li>
<li>prop_battleBus_boxes_mat</li>
<li>prop_battleBus_canvas_mat</li>
</ol>
<br />
The following picture shows the prop_battlebus mesh displayed in the Scene View. Notice there is only 1 default material element (Element 0) added to a mesh. Also, the Mesh Filter is the prop_battleBus.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-YWFCWkM8ljX_CM2xBCt9atJTMZxvMDFB38BrQ93r76dDzD53hfiqeVoqf10uMhAWZT32DPN_RqIDPblOXHfW0fbmOqnUr_A-WjcsTd1tnmz0H9ZyxT6T6eV48n6qnH9LJiFu8EO12iU/s1600/add_component1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-YWFCWkM8ljX_CM2xBCt9atJTMZxvMDFB38BrQ93r76dDzD53hfiqeVoqf10uMhAWZT32DPN_RqIDPblOXHfW0fbmOqnUr_A-WjcsTd1tnmz0H9ZyxT6T6eV48n6qnH9LJiFu8EO12iU/s1600/add_component1.jpg" height="143" width="320" /></a></div>
<br />
Click the Materials Size option to change the Size value from the default 1 to 16. Press enter to execute the change. Unity adds 16 materials so a material can be associated with each element until all materials have been added to the Battle Bus.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkI4AdwoXbEJ8g3-u3-mg-XtIfDkXS7GRAkNSXUltaWS1PMvto1ZJz_jNTjRpQ010zGjvrudYSXp2UkCbysN-tHUR_SJEp8E_rbMF_ZAniNY7IcPbeOg9EZhZIUIjxCNWvmHsaaduOiqE/s1600/no_of_materials.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkI4AdwoXbEJ8g3-u3-mg-XtIfDkXS7GRAkNSXUltaWS1PMvto1ZJz_jNTjRpQ010zGjvrudYSXp2UkCbysN-tHUR_SJEp8E_rbMF_ZAniNY7IcPbeOg9EZhZIUIjxCNWvmHsaaduOiqE/s1600/no_of_materials.jpg" height="320" width="144" /></a></div>
<br />
We can use the Select Material button to select the desired material for Element 0. I selected the prop_battlebus_body_mat material for Element 0, as shown in the following picture.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqXLFf8N_YQaV3aBMH4zX-4sHQeHyTcI2OBmVjQg9M0PvHkGZ4j3seoP3oZv-8Iu7GJclE61dqdUwuZCcaddw_M_5YsCk1tuCvTmjBJgblljT-uFiqwTNOaOaFjtGTk9YRWCDtqX8qCjo/s1600/material_element_0.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqXLFf8N_YQaV3aBMH4zX-4sHQeHyTcI2OBmVjQg9M0PvHkGZ4j3seoP3oZv-8Iu7GJclE61dqdUwuZCcaddw_M_5YsCk1tuCvTmjBJgblljT-uFiqwTNOaOaFjtGTk9YRWCDtqX8qCjo/s1600/material_element_0.jpg" height="257" width="400" /></a></div>
<br />
<br />
Once the material is associated with the prop_battleBus I can view the properties associated with the material, as shown in the following picture.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisR1C1ciG80EiuXY_VWUBnadrgoyeWMmr5kaMi7lXI-l03BM7MSLk9wOq1GhzFsb9TFhIJvd0VmBuChOziZ8YaSuLJAOMtoQ8W_dMCQxVa9S2YDVN_Ov79M0RcPUCdfmYvOMWgNFAU88Y/s1600/Element_0_battlebus_selected2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisR1C1ciG80EiuXY_VWUBnadrgoyeWMmr5kaMi7lXI-l03BM7MSLk9wOq1GhzFsb9TFhIJvd0VmBuChOziZ8YaSuLJAOMtoQ8W_dMCQxVa9S2YDVN_Ov79M0RcPUCdfmYvOMWgNFAU88Y/s1600/Element_0_battlebus_selected2.jpg" height="206" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
The shader associated with a material drives the properties available to the material. For example, the prop_battlebus_body_mat uses the <a href="http://docs.unity3d.com/Documentation/Components/shader-ReflectiveBumpedSpecular.html" target="_blank">Reflective Bumped Specular</a> shader (as shown in the following picture). The Reflective Bumped Specular shader is a member of the Reflective Shader Family and includes reflective properties used to simulate metal objects.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgew7c8vW9Je1bzpQEdDTkULs0gUg57s6HotgnWvcHJkJH2ca9t9S5WvINY0IBeStO__eZY8E3CkGlRqQmRtKzrUKjCUXfotTQe3i1hKeM6hLWMSL827AApsrwC68NlQNhBcHai1dd5lBs/s1600/reflective_bumped_shader.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgew7c8vW9Je1bzpQEdDTkULs0gUg57s6HotgnWvcHJkJH2ca9t9S5WvINY0IBeStO__eZY8E3CkGlRqQmRtKzrUKjCUXfotTQe3i1hKeM6hLWMSL827AApsrwC68NlQNhBcHai1dd5lBs/s1600/reflective_bumped_shader.jpg" height="270" width="400" /></a></div>
<br />
You can learn more about shaders and related properties by viewing Unity's Built-in Shader Guide at <a href="http://docs.unity3d.com/Documentation/Components/Built-inShaderGuide.html" target="_blank">http://docs.unity3d.com/Documentation/Components/Built-inShaderGuide.html</a>.<br />
<br />
If you click the Select button associated with the Base (RGB) Gloss (A) property I can see or change the 2D Texture .tif image associated with the prop_battlebus_body_mat material. You can also click the Select button associated with the Normalmap to see the normal map image used by normal map shaders to make low-polygon models appear to be more detailed. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMzWZMfp6uqF_jeh8O0GQmMqDufZbrB8-gytUt5MvP_ZOgQCLtYuSy95wPrD9Ji4ISpyHW_Fb-NPNphncAYcUn7VMan4ixrIZ_hO2AEU9P3Z5v9xD5kaWVfFi1tN_yrBJb1rZ1D3XqF-M/s1600/add_material_element0_prop2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMzWZMfp6uqF_jeh8O0GQmMqDufZbrB8-gytUt5MvP_ZOgQCLtYuSy95wPrD9Ji4ISpyHW_Fb-NPNphncAYcUn7VMan4ixrIZ_hO2AEU9P3Z5v9xD5kaWVfFi1tN_yrBJb1rZ1D3XqF-M/s1600/add_material_element0_prop2.jpg" height="270" width="400" /></a></div>
<br />
<br />
To add the remaining materials you click the Select Material button associated with the remaining elements (1 through 15) and select the applicable material from the list presented earlier in this article. Once you have added all of the materials the Battle Bus will look like the picture shown below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1dA_F0W0aKhZPuoQfWs0vdTRjxhm2AXIEqyjNSviV4grmq9FU3wXGOorgYL7nBvVkM1JWlCaz1BJ6GA9RX9Reo_WnL97rFriWnfaxTyH0OlyKEyUB1wFSOhcQIF2zEwsWqnzJflwuAJY/s1600/battle_bus_rebuilt.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1dA_F0W0aKhZPuoQfWs0vdTRjxhm2AXIEqyjNSviV4grmq9FU3wXGOorgYL7nBvVkM1JWlCaz1BJ6GA9RX9Reo_WnL97rFriWnfaxTyH0OlyKEyUB1wFSOhcQIF2zEwsWqnzJflwuAJY/s1600/battle_bus_rebuilt.png" height="214" width="320" /></a></div>
<br />
If you are new to Unity and/or 3D game development it helps to look at existing games to see how they are guilt and coded to get a better handle on the assets and capabilities your game can have. Unity's Asset Store provides a number of example projects that can be downloaded and used to learn more about Unity and 3D/2D games.<br />
<br />
<b>Happy New Year Everyone! </b></div>
Anonymoushttp://www.blogger.com/profile/11770164970801071498noreply@blogger.comtag:blogger.com,1999:blog-7793781044289546361.post-39446005783303264532013-12-19T19:56:00.002-08:002014-03-26T22:13:26.867-07:00Hire Microsoft for $5.00 Per Month: Office 365 & SharePoint<div dir="ltr" style="text-align: left;" trbidi="on">
As a Sr. Systems Analyst, a big part of my job has been to recommend business tools to national and international enterprises as well as government organizations. This article provides technology recommendations to help entrepreneurs, home businesses and small businesses gain a competitive edge to perform like a big business. <br />
<br />
There are three key areas that big businesses care about: saving moving (through efficiency), delivering quality customer service, and adopting business tools that bring the best value. Over the past couple of years big organizations like Home Depot, ABM Industries, Lockheed Martin, Turner Broadcasting, Dell, Northrop Grumman, SAIC, Sun Trust Banks, Ernst & Young, Sogeti USA, Hewlett Packard, General Dynamics, Federal Aviation Agency, the Department of Defense, and many others have paid well over $1,000,000.00 to implement Microsoft Office SharePoint Server Online, which is part of <a href="http://office.microsoft.com/en-us/business/compare-office-365-for-business-plans-FX102918419.aspx" target="_blank">Office 365</a>. And, there is a product package available for entrepreneurs, home businesses and small businesses. The cheapest package is $5.00-a-month. The most expensive package is $15.00-a-month.<br />
<br />
And, one of the most interesting aspects is this price includes access to Microsoft's support and system administration team. Yes, you read right! If you run into a problem, you contact Microsoft and one of their support persons will help you troubleshoot the issue. The following paragraphs provide additional information about Microsoft's Office 365, which includes access to Microsoft Office SharePoint Server and other office applications hosted in the Cloud.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Intranets & Extranets </span></h3>
<br />
Probably the most valued capability is the ability to easily create websites that meet a specific business objective. For example, entrepreneurs or small businesses that want to effectively manage customer problems can easily build a website customers can log into to submit a complaint. The organization can assign statuses to the complaint so the customer can monitor the organization's progress towards resolving the stated problem. As the solution is implemented the status is changed to keep the customer informed through notifications.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirChX9Qds-Ot3bOwbKNBHT_a_8LwFqmE4ApLNueBFYvDBUuFGg2rVJ8g1rQOiZ6xo43c22jThRQd6ITC7l-ECwe4O16BWca34uKFuoqxfwJCO-srnHd0AKwZ1sIzcMt9OXxiIZObu53q4/s1600/site-options.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirChX9Qds-Ot3bOwbKNBHT_a_8LwFqmE4ApLNueBFYvDBUuFGg2rVJ8g1rQOiZ6xo43c22jThRQd6ITC7l-ECwe4O16BWca34uKFuoqxfwJCO-srnHd0AKwZ1sIzcMt9OXxiIZObu53q4/s1600/site-options.png" height="186" width="320" /></a></div>
<br />
Or, entrepreneurs or small businesses may want to keep customers informed. Whenever a website is created SharePoint, which is a content management system, automatically creates a mobile version of the site. And, with two clicks content is syndicated and made available as an RSS feed to which users can subscribe.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2UCfqKuRbaGbw4X6BaI5N5EAWRPuSpO9Abti5QNN7EkoRf5D4574L2-8UuHoiT9HLULFv4-uIU9W7zrIwfb3vcalsWtud_kbjgfBvPIpWRJWQMYkK5l1g6FYxfsjNbxWE06iAQ5vGwEc/s1600/rss_feeds.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2UCfqKuRbaGbw4X6BaI5N5EAWRPuSpO9Abti5QNN7EkoRf5D4574L2-8UuHoiT9HLULFv4-uIU9W7zrIwfb3vcalsWtud_kbjgfBvPIpWRJWQMYkK5l1g6FYxfsjNbxWE06iAQ5vGwEc/s1600/rss_feeds.png" height="214" width="320" /></a></div>
<br />
<br />
Create a virtual meeting room website to host virtual meetings. Add <a href="http://office.microsoft.com/en-us/lync/lync-online-overview-and-features-online-meetings-and-instant-messaging-FX103789571.aspx" target="_blank">Microsoft Office Lync Online</a> to gain instant messaging (IM), the ability to make phone calls through your computer (with the appropriate hardware). And, moderate or join audio, video and web meetings with people you invite. You can give an online presentation by sharing your desktop.<br />
<br />
Or, if working with a customer to finalize a proposal give the upload the document to the meeting room so the customer can access the document and make changes. SharePoint can notify you when the customer has completed his or her revisions.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDOf9lGgARt0MeuSsiZiwToWBMA8EFLQHa10zB7i3gS8yU4WWk27oytiqOlQfi7XsBwWIdA9HcSBq1i32mYe6texI37gVCeCyRBPhEsR7mO-KDUamd2INSFOvodO9rtXgFZ78dIuBHm64/s1600/Virtual_meeting.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDOf9lGgARt0MeuSsiZiwToWBMA8EFLQHa10zB7i3gS8yU4WWk27oytiqOlQfi7XsBwWIdA9HcSBq1i32mYe6texI37gVCeCyRBPhEsR7mO-KDUamd2INSFOvodO9rtXgFZ78dIuBHm64/s1600/Virtual_meeting.png" height="214" width="320" /></a></div>
<br />
<br />
Speaking of sharing documents users can upload, organize and manage Microsoft Office documents using SharePoint's shared documents feature. Access those documents from any location using your laptop or hand-held device such as a mobile phone or tablet. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjf97WUG41jk7gTNA99sGqvUG5aXeR3DpCWV1BJZFKTd2VKvbZTMIZLfB-V2AoFGRxqNNGIOsiiECipLKbl1vQF_4ixW8cIIe0ZOp4Fh1VR1eQctjZeJ1lbh-qQNgzp61YrxuCH_W2u0AY/s1600/document_library.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjf97WUG41jk7gTNA99sGqvUG5aXeR3DpCWV1BJZFKTd2VKvbZTMIZLfB-V2AoFGRxqNNGIOsiiECipLKbl1vQF_4ixW8cIIe0ZOp4Fh1VR1eQctjZeJ1lbh-qQNgzp61YrxuCH_W2u0AY/s1600/document_library.png" height="164" width="320" /></a></div>
<br />
Manage your calendar and messages.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilU60bVXmb1c3o-LQiW7iJOT4xD48kYearMbI1hUCCdPZuzFQHYqBBlFe0VBfqNcCVrUTADcfVj-HxPo5D18p6M9ls3n76y2youvZkPLDFh-lY6Ajl1yi15Hk9_2W6WcYC1ARqi5xglDw/s1600/manage_calendar_calls.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilU60bVXmb1c3o-LQiW7iJOT4xD48kYearMbI1hUCCdPZuzFQHYqBBlFe0VBfqNcCVrUTADcfVj-HxPo5D18p6M9ls3n76y2youvZkPLDFh-lY6Ajl1yi15Hk9_2W6WcYC1ARqi5xglDw/s1600/manage_calendar_calls.png" height="198" width="320" /></a></div>
<br />
You can also manage photographs by uploading them to SharePoint online, which means they can be accessed from anywhere.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgz_LHMvIU3ILjrxrINbRduPmMa7n9h1oQSkU2SzhlKvgIjb_HyuImy-0HQ4giqzhbHt5Nt1CsJ0Kg0KBIusxC0eepYrX29pZwheetlCtvkl4Oc3eG6-Ind4lwSGwdP4UefCNwvdyiWrtw/s1600/photographs.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgz_LHMvIU3ILjrxrINbRduPmMa7n9h1oQSkU2SzhlKvgIjb_HyuImy-0HQ4giqzhbHt5Nt1CsJ0Kg0KBIusxC0eepYrX29pZwheetlCtvkl4Oc3eG6-Ind4lwSGwdP4UefCNwvdyiWrtw/s1600/photographs.png" height="207" width="320" /></a></div>
You can learn more about Office 365; or even test drive it by visiting: <a href="http://office.microsoft.com/en-us/business/office-365-small-business-small-business-software-FX103887194.aspx">http://office.microsoft.com/en-us/business/office-365-small-business-small-business-software-FX103887194.aspx</a></div>
Anonymoushttp://www.blogger.com/profile/11770164970801071498noreply@blogger.comtag:blogger.com,1999:blog-7793781044289546361.post-16574755952370791082013-12-02T10:09:00.000-08:002014-02-13T20:48:06.118-08:00Create a YouTube Video That Is Accessible From ANY Device<div dir="ltr" style="text-align: left;" trbidi="on">
One of the most frustrating things, to me, is to navigate to YouTube from my phone, select a video only to get the message "the owner has not made this video available to mobile users". That might not be the exact message; but it's something like that. This post provides instructions on one method that can be used to make a YouTube video available to any device.<br />
<br />
The tools I cover in this article is Adobe Premiere and Adobe Media Encoder. In the near future I will also create a post like this for Final Cut Pro. But for this post I will discuss how to make a YouTube video available for any device using Premiere.<br />
<br />
My first step was to use Premiere to create a new project--ensuring the HDV option was selected, as shown below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbfX-sp78kbrTxxe6ZKINguCW9id6yCMH-l-ix2i3Q0Z3L8fDeqoyiNMCqx5otaxXgJh_JlIFIgIFa6jgl6-J3u-nhA6m6S_JrUzQhxr_P5ifSiXrpPUORyWbW_vPhU2RCp3wgstzaj1o/s1600/create_project.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbfX-sp78kbrTxxe6ZKINguCW9id6yCMH-l-ix2i3Q0Z3L8fDeqoyiNMCqx5otaxXgJh_JlIFIgIFa6jgl6-J3u-nhA6m6S_JrUzQhxr_P5ifSiXrpPUORyWbW_vPhU2RCp3wgstzaj1o/s1600/create_project.jpg" height="242" width="320" /></a></div>
<br />
Next I imported my audio, still photographs and videos. I created a master sequence and nested sequences to develop my video. I used nested sequences (shown as green video clips below) for two reasons: 1. It would be easier to manage and work with clips overall because my project would, in a sense, include multiple smaller sequences used to create one main sequence. This approach would make it less cumbersome to make changes. For example, if I wanted to shorten or change the transition duration for a nested clip--I would be able to simply go to the sequence that includes the video and make the change. Adobe Premiere would then make the necessary adjustments so I would not have to slide clips closer together or push them further away to avoid black gaps or other problems. The change would then automatically show up in my master sequence.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8zdgQxd4vphE5bl9v79ecfaOs2k9KDsNHqvNlOmV_J9qgwsE5fe6V6DPv2aVmrxEJ-vWnsE4CknckPkv_DXqNeTl4JXRB2Gk0uXIY6oYxUQHWwdudgVU1dD7t77dWpejk9StmrsCgTNI/s1600/nested_sequences.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8zdgQxd4vphE5bl9v79ecfaOs2k9KDsNHqvNlOmV_J9qgwsE5fe6V6DPv2aVmrxEJ-vWnsE4CknckPkv_DXqNeTl4JXRB2Gk0uXIY6oYxUQHWwdudgVU1dD7t77dWpejk9StmrsCgTNI/s1600/nested_sequences.jpg" height="242" width="320" /></a></div>
<br />
2. I looked at the video clips I had to create the video. I noticed some clips were shaky. Using nested sequences would enable me to apply the Warped Stabilizer (highlighted using a red box in the picture below) to these clips so they would play more smoothly.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9puJfNPACE6_8O5CgYBdi3aiH0lp5cIS7G71E_rQV2wsAdbd9AwuQ5E3UzRsCJZ5FKSuEgbQGwTFrO4Nnm1XGXZzDADo6uLFbblq0NSwQ9dEDStRh0RtO4JSGSiH0KUEtGdIrrXoXHk/s1600/warp_stabelizer.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9puJfNPACE6_8O5CgYBdi3aiH0lp5cIS7G71E_rQV2wsAdbd9AwuQ5E3UzRsCJZ5FKSuEgbQGwTFrO4Nnm1XGXZzDADo6uLFbblq0NSwQ9dEDStRh0RtO4JSGSiH0KUEtGdIrrXoXHk/s1600/warp_stabelizer.jpg" height="246" width="320" /></a></div>
<br />
Once everything was in place and the video played the way I wanted it to I was ready to export it. I selected File -> Export -> Media to select the options that would enable me to convert my Premiere project to an MPEG-4 file that all devices could access.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWcXyyhfCwlwQs4eb_ngt7z1UiYTCNuZK9Ldf8bcmaZAhgxJ1AtXEkKZVXt5lq8eKTtkKJlAkgqoy1KyMWK0sfMciu3Gua801jEp_qPGK2-yAycYvmB0cbAcJZRagwSYqn8KaiT9SI_fE/s1600/export_video.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWcXyyhfCwlwQs4eb_ngt7z1UiYTCNuZK9Ldf8bcmaZAhgxJ1AtXEkKZVXt5lq8eKTtkKJlAkgqoy1KyMWK0sfMciu3Gua801jEp_qPGK2-yAycYvmB0cbAcJZRagwSYqn8KaiT9SI_fE/s1600/export_video.jpg" height="241" width="320" /></a></div>
<br />
After I selected File -> Export -> Media, the Export Settings page, shown below, displayed.The selections made on this page drive the size and quality of the video as well as the format. The option that drives whether or not all devices can access the video is the Format option. If you locate the Format option below you will see H.264 beside it.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5ugI0ElL9IB0QJw8XKK1FVPUEczI1Z_PQEVnhpPofsz4GnCevX0KIGJi4zFWpytp12yaiedFfUNeRonE_9a1uBCDcEkBQo5JgQEf_RGxYx6_90eE4ubXHh9bt_V8j5AAVAjsHsvNVoYw/s1600/export_settings_box.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5ugI0ElL9IB0QJw8XKK1FVPUEczI1Z_PQEVnhpPofsz4GnCevX0KIGJi4zFWpytp12yaiedFfUNeRonE_9a1uBCDcEkBQo5JgQEf_RGxYx6_90eE4ubXHh9bt_V8j5AAVAjsHsvNVoYw/s1600/export_settings_box.jpg" height="306" width="400" /></a></div>
<br />
<a href="http://www.adobe.com/cn/devnet/flashmediaserver/articles/h264_encoding.html" target="_blank">H.264</a> is one of several video compression standards. It is commonly referred to as MPEG-4 Part 10 OR MPEG-4 Advanced Video Coding (AVC). Both H.264 and AVC are MPEG-4 codecs that produce MPEG-4 files that contain video and audio clips. If you want your video to playback on not only computers and laptops; but also handheld devices you will want to select H.264 as the Format option, as highlighted by a red box in the following picture.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSTxNM8FaEBvw1-6o-tBWQHXPmBDqJBY_jQGooC74ZIkzvaaItSxB9BIpEFZAh5D15kUtc4PZfMCHydEnftugV9107ptBzuQUzLvjq6SrO7DJu7dFCye3LW4FmhcT9OCAEdR4dBwmzgiI/s1600/export_settings_format.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSTxNM8FaEBvw1-6o-tBWQHXPmBDqJBY_jQGooC74ZIkzvaaItSxB9BIpEFZAh5D15kUtc4PZfMCHydEnftugV9107ptBzuQUzLvjq6SrO7DJu7dFCye3LW4FmhcT9OCAEdR4dBwmzgiI/s1600/export_settings_format.jpg" height="232" width="320" /></a></div>
<br />
<br />
Adobe Media Encoder is the component within Adobe Premier that provides access to the formats used to convert the project to the H.264 or other format. However, you don't have to use Adobe Premiere to convert a video to the H.264 format. As previously mentioned, Adobe Media Encoder is available as a standalone application. It also comes included not only with Adobe Premiere Pro but also After Effects, Flash Professional, Soundbooth, and Encore.<br />
<br />
Note that you can access a free trial of Adobe Premiere by visiting: <a href="https://creative.adobe.com/products/premiere" target="_blank">https://creative.adobe.com/products/premiere</a>. And you can try Adobe Media Encoder free by visiting <a href="http://www.adobe.com/products/mediaencoder.html" target="_blank">http://www.adobe.com/products/mediaencoder.html</a>. <br />
<br />
So far I have tested the video using my Android and it played nicely<span class="st">. If you have an iPhone, Blackberry, tablet or other device pull it out and check out the video at <a href="https://www.youtube.com/watch?v=WkS1O-K3AFA">https://www.youtube.com/watch?v=WkS1O-K3AFA</a>, click the like button if you like it or leave a comment--all feedback is appreciated.</span> <br />
<br />
<br /></div>
Anonymoushttp://www.blogger.com/profile/11770164970801071498noreply@blogger.comtag:blogger.com,1999:blog-7793781044289546361.post-42194255919456431312013-11-20T22:23:00.002-08:002013-11-20T22:40:32.459-08:00Unity Engine - Building Games for Facebook, Playstation, XBox 360, etc. (Overview)<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
I know I'm not the only one intrigued by gaming, which is one reason I like to write about building games. So far I have written articles that include information on building games for <a href="http://bussystemanalysis.blogspot.com/2013/08/mobile-software-programming-designing.html" target="_blank">Android</a> and <a href="http://bussystemanalysis.blogspot.com/2013/09/get-started-with-kindle-fire.html" target="_blank">Kindle Fire</a>. This article provides an overview to the basics of Unity 4.<br />
<br />
Unity is a game engine that provides the ability to build games that can run on a variety of platforms including XBox, PlayStation, Windows Phone, Android , Blackberry, Webplayer, PC/Unix/Mac standalone and more, as shown in the following picture.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWmErfdvHXv_5zni8Dc1bKWHz0EmvZmvAiU8RI1VBtE1JW10g1xqv3vEzA1gbB15VDA0lM8fNE3ezM4Pi9eW6mb_I52pbfeDynciauCeGr1xWuhWinIfItS6SalcdaCYTBIM-koCh99wU/s1600/export_games.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWmErfdvHXv_5zni8Dc1bKWHz0EmvZmvAiU8RI1VBtE1JW10g1xqv3vEzA1gbB15VDA0lM8fNE3ezM4Pi9eW6mb_I52pbfeDynciauCeGr1xWuhWinIfItS6SalcdaCYTBIM-koCh99wU/s400/export_games.jpg" width="395" /></a></div>
<br />
I think it's exciting to be able to build a game once and distribute it to multiple platforms because that means developers can distribute a game more widely, which equals a much larger audience and, ultimately, more money.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #073763;">Unity Development Environment</span></h3>
<br />
<br />
Unity's core user interface includes the Project, Assets, Inspector, Hierarchy, Scene and Game windows. The following paragraphs discuss these windows in greater detail.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Project</span></h3>
<br />
In Unity you create a project to build a game. When a new project is created, you select a package to import. When you import a package the assets associated with the package are automatically included as part of the project when Unity opens. Sharing assets, such as audio files, 3D buildings, player avatars (humanoids) and other files decrease development time since some GameObjects are already completed. Developers then place and use the GameObjects the way they want to within their game. For example, if you create a new project and import the Stealth package; all of the assets associated with the Stealth project will import into your new project including the 3D buildings, a 3D bus, humanoids, and more . Developers can then create a new game using one or more of the existing Stealth game assets; or even modify some of the assets before using them. Developer can then create new assets and incorporate them into the game.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8c4Y3pfrvBBrR3J7qYqR9gN3X7gNbygTNuLCZk72Knfi1PUWV4cXRPvnrudcwpyvQ-bV0nXjZABKiuNj7YNXFndT0cEZ06FO0oyjsBaCQzjh3UDcL38DaKw2HdXrws9kgBpDlCwRSRw0/s1600/create_new_project.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8c4Y3pfrvBBrR3J7qYqR9gN3X7gNbygTNuLCZk72Knfi1PUWV4cXRPvnrudcwpyvQ-bV0nXjZABKiuNj7YNXFndT0cEZ06FO0oyjsBaCQzjh3UDcL38DaKw2HdXrws9kgBpDlCwRSRw0/s1600/create_new_project.jpg" /></a></div>
<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Assets</span></h3>
<br />
In Unity, assets are files included in a project. Assets are available from the Project Browser. Unity has an Assets window that provides a way to view the assets within a folder displayed by the Project Browser window.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBEbQYGJI1EX84YaVOyGeq77LumjiVZuI0dxt5SCQbjvN3kzLopdxyNLQ0gxMILWBr7xpT7oovFxjg_RgFopHAnJXS6WP380gMplknQKnIX6gqBILlO3OZvEtqbFvWnQzAhIKGLRvulTs/s1600/assets.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBEbQYGJI1EX84YaVOyGeq77LumjiVZuI0dxt5SCQbjvN3kzLopdxyNLQ0gxMILWBr7xpT7oovFxjg_RgFopHAnJXS6WP380gMplknQKnIX6gqBILlO3OZvEtqbFvWnQzAhIKGLRvulTs/s400/assets.jpg" width="400" /></a></div>
<br />
Note that assets may or may not be physically added to a scene. Although GameObjects are usually added to a scene. For example, audio files are assets and scripts are assets. Scripts reference GameObjects but you would not drop a script onto a game scene and expect to see the script do something.<br />
<br />
Assets can be shared across multiple games because they are included in the game from a file that resides on your computer. Developers can buy assets, sell assets or even download free assets. Assets are available from the Asset Store at <a href="https://www.assetstore.unity3d.com/">https://www.assetstore.unity3d.com/</a>. And, developers can learn more about selling Unity assets by navigating to <a href="http://unity3d.com/asset-store/sell-assets">http://unity3d.com/asset-store/sell-assets</a>.<br />
<br />
<h4 style="text-align: left;">
<span style="background-color: #0b5394;"><span style="background-color: white;"><span style="color: #073763;"> GameObjects, Components & the Inspector Window</span></span></span></h4>
<br />
The Inspector Window provides a way to manipulate GameObjects by providing access to the GameObject's components. Notice the scene window below shows a GameObject selected (a red arrow points to the GameObject). Notice the Inspector window, which is highlighted with a red box, shown in the picture below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZDZ1EcEVuZfpB-Xs3mJAhNV1_ZDFyY9X6DPhciU7nskMthgi4QLdV2FLC49579NdR4hD2fZ7b_lRwNsuZpXcTmR2OutQqLz0hbvVGJfKD3ZabSYPG8HzfajUvnvrJLpK7AjGtcG6HTNE/s1600/inspector.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="315" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZDZ1EcEVuZfpB-Xs3mJAhNV1_ZDFyY9X6DPhciU7nskMthgi4QLdV2FLC49579NdR4hD2fZ7b_lRwNsuZpXcTmR2OutQqLz0hbvVGJfKD3ZabSYPG8HzfajUvnvrJLpK7AjGtcG6HTNE/s400/inspector.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<span style="background-color: #0b5394;"><span style="background-color: white;">The Inspector window shows the components and related properties that can be manipulated to achieve a desired result. The Inspector window includes a Transform component used to indicate the position of the GameObject. The Transform component of the GameObject can also be used to scale or rotate the GameObject, as can be seen by viewing the Transform properties shown in the above picture. The following picture shows script components associated with the GameObject. Also notice a sound clip (named weapon_sciFiGun_fire) is part of the Done Enemy Shooting component and is used to bring shooting to life in the game. </span></span><br />
<span style="background-color: #0b5394;"><span style="background-color: white;"><span style="color: #073763;"><br /></span></span></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxUdvlLnRKJErj9Vho86RvOLNn5JeZ1NWGxLGH453Td4hVgShnrIdcC5OrO5f0x1SyrUIkmBkA-3KsvUSKjUKfUmEqPHYTj27hb5RtFAWmumRr8d0JaeNXmIuN82gQf1ZsQjcngLIFXv4/s1600/inspector_2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxUdvlLnRKJErj9Vho86RvOLNn5JeZ1NWGxLGH453Td4hVgShnrIdcC5OrO5f0x1SyrUIkmBkA-3KsvUSKjUKfUmEqPHYTj27hb5RtFAWmumRr8d0JaeNXmIuN82gQf1ZsQjcngLIFXv4/s1600/inspector_2.jpg" /></a></div>
<br />
<span style="background-color: #0b5394;"><span style="background-color: white;">In
the example below, the script components were written using C#.
However, developers can also use JavaScript to program games in Unity. </span></span>To learn more about GameObjects read the documentation titled "GameObject" at <a href="http://docs.unity3d.com/Documentation/Manual/GameObjects.html" target="_blank">http://docs.unity3d.com/Documentation/Manual/GameObjects.html</a>.<br />
</div>
<h4 style="text-align: left;">
<span style="background-color: #0b5394;"><span style="background-color: white;"><span style="color: #073763;">Hierarchy</span></span></span></h4>
<br />
The Hierarchy window includes a list of gameobjects used to create a scene. For example, let's say you downloaded the Stealth game for Unity (<a href="https://www.assetstore.unity3d.com/#/content/7677" target="_blank">https://www.assetstore.unity3d.com/#/content/7677</a>). If you add the completed Stealth scene (called DoneStealth as shown in the following picture) to the Scene View, the Hierarchy shows all of the GameObjects used to complete the scene. It also shows parent/child relationships (as applicable) between objects. You can then click on each GameObject to view its related components in the Inspector window.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhujEK4sKDDLvb9cf_TbB4Kv5BngTqUTjyGxzDREfaKQ3ba2ypIVx2sbgAFmvwDrNr9r9S-LpPRFGpBqFtFlSMsT2z6jQqMlrb307eNIHgO8j0gpJWG0k0hcrkcYfJNY3gJy0FrHSw1N-g/s1600/STEALTH.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="467" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhujEK4sKDDLvb9cf_TbB4Kv5BngTqUTjyGxzDREfaKQ3ba2ypIVx2sbgAFmvwDrNr9r9S-LpPRFGpBqFtFlSMsT2z6jQqMlrb307eNIHgO8j0gpJWG0k0hcrkcYfJNY3gJy0FrHSw1N-g/s640/STEALTH.jpg" width="640" /></a></div>
<br />
In addition, the Hierarchy window also includes a Create option. Developers use the Create menu to create GameObjects that display in a Scene. For example, a camera is added to a scene by selecting Create -> Camera.The camera is the GameObject through which players view the world built by the developer. One or more camera's are added to a scene so that players may view the entire world that makes up a scene.<br />
<br />
In addition to Cameras additional GameObjects can be added such as spotlights, area lights, terrain, trees, or even cubes (that may be manipulated to serve as the ground a player walks on). The following picture shows the Create menu on the Hierarchy window.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2poHOLgQHz0pFJbNxtVqlB9E3jaTQ4UgInbzy9Dp6GkIsNv2dizj04rjBeppT8KOvdNEgv2h3yD140xed0J2iTn-ewiFQ5qeh_EIRB85EsZiNn35mVf0rLc1mONrQKvcmQwuE8X4K2LI/s1600/CreateGameObjects.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="234" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2poHOLgQHz0pFJbNxtVqlB9E3jaTQ4UgInbzy9Dp6GkIsNv2dizj04rjBeppT8KOvdNEgv2h3yD140xed0J2iTn-ewiFQ5qeh_EIRB85EsZiNn35mVf0rLc1mONrQKvcmQwuE8X4K2LI/s320/CreateGameObjects.jpg" width="320" /></a></div>
<br />
<h4 style="text-align: left;">
<span style="color: #073763;">Scenes</span></h4>
<br />
When a player plays a game, the game environment is delivered as a Scene. In Unity the Scene tab provides access to the Scene View. Through the Scene View developers can build what the user will see and the GameObjects with which the user will interact.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj91sIqPUGtZm10NwXFp19narI0mvsm9iUx7DqJWnX87UM0QlryCTWHwB_eIVmPsHEL7UCgLka2dzUKejdueKjEHo6Dtrwnt4d8jqNA1KnVrXiMW1GHu7YrAmKaQopYsUy-2u3SwBTUOoM/s1600/SceneViewNavigation.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj91sIqPUGtZm10NwXFp19narI0mvsm9iUx7DqJWnX87UM0QlryCTWHwB_eIVmPsHEL7UCgLka2dzUKejdueKjEHo6Dtrwnt4d8jqNA1KnVrXiMW1GHu7YrAmKaQopYsUy-2u3SwBTUOoM/s1600/SceneViewNavigation.jpg" /></a></div>
The toolbar (shown above) provides the tools developers use to manipulate and navigate to GameObjects. The hand tool enables developers to move around in the scene. The Translate tool (second from the left) provides a way to select GameObjects and drag them or enter values to place the object in a specific location. Developers can rotate GameObjects using the Rotate tool (third from the left); and, they can resize GameObject using the Scale tool (fourth from the left).<br />
<br />
If you have downloaded the Stealth game for Unity you can see the Scene View in action by creating a new project (File -> New Project from within Unity) that includes the Stealth assets you downloaded.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8c4Y3pfrvBBrR3J7qYqR9gN3X7gNbygTNuLCZk72Knfi1PUWV4cXRPvnrudcwpyvQ-bV0nXjZABKiuNj7YNXFndT0cEZ06FO0oyjsBaCQzjh3UDcL38DaKw2HdXrws9kgBpDlCwRSRw0/s1600/create_new_project.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8c4Y3pfrvBBrR3J7qYqR9gN3X7gNbygTNuLCZk72Knfi1PUWV4cXRPvnrudcwpyvQ-bV0nXjZABKiuNj7YNXFndT0cEZ06FO0oyjsBaCQzjh3UDcL38DaKw2HdXrws9kgBpDlCwRSRw0/s1600/create_new_project.jpg" /></a></div>
<br />
To view the GameObjects and even the scripts used to build the game, navigate to the Done folder and locate the DoneScenes folder. Drag and drop the completed Stealth scene onto the Unity Scene view, as shown in the following picture. You can then play the game to see how it works.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqIr4uJ_ba4kj3uwaJIGmhdQuWtNNFYzk6Ed6t5BU_cYzliZmSNPzUbZx7Cumv0TYKBPMi-ogxCvF2KUzmoiD8XtnertqTkqqahUQmG_N5SogdE8vQbZCZFnFIGTeGCFUE5ui3XQQv-KA/s1600/drag_done_scene.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="292" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqIr4uJ_ba4kj3uwaJIGmhdQuWtNNFYzk6Ed6t5BU_cYzliZmSNPzUbZx7Cumv0TYKBPMi-ogxCvF2KUzmoiD8XtnertqTkqqahUQmG_N5SogdE8vQbZCZFnFIGTeGCFUE5ui3XQQv-KA/s400/drag_done_scene.jpg" width="400" /></a></div>
<span style="color: #073763;"><br /></span>
<br />
<h3 style="text-align: left;">
<span style="color: #073763;">Game </span></h3>
<br />
You can then use the Game View to run and test games in Unity. To begin you must click on the Game tab, as shown by a red circle below. You then click
the Play button, as highlighted by the red arrow in the following picture, to run the game. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCec_49YeUs8OSZWNCZSV-r9mNFH216cKKnUSfvrM90rNQZhLqDIN4weCGS16b2nwYeLEsc3r9X2GA91YKhcUQ247V_O5-kkLBsk8CQfLV9RGf3rXqZUiqQeqdMBMEbphI0BMLAkccnlc/s1600/play_game.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="316" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCec_49YeUs8OSZWNCZSV-r9mNFH216cKKnUSfvrM90rNQZhLqDIN4weCGS16b2nwYeLEsc3r9X2GA91YKhcUQ247V_O5-kkLBsk8CQfLV9RGf3rXqZUiqQeqdMBMEbphI0BMLAkccnlc/s400/play_game.jpg" width="400" /></a></div>
<br />
When the game is running it behaves as it would behave if it were built and distributed to a platform. As a developer, you can use the Game View to perform all of the actions you have programmed the game to perform. You can learn more about the Game View by reading the article located at <a href="http://docs.unity3d.com/Documentation/Manual/GameView40.html" target="_blank">http://docs.unity3d.com/Documentation/Manual/GameView40.html</a>.<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;"><br /></span></h3>
<h3 style="text-align: left;">
<span style="color: #0b5394;">Using Unity to Build Facebook Games</span></h3>
<br />
Developers can download the Facebook SDK to use Unity to create games for Facebook. For more information about the Facebook SDK for Unity view the Unity - Facebook Developers article at <a href="https://developers.facebook.com/docs/unity/" target="_blank">https://developers.facebook.com/docs/unity/ </a><br />
<br />
To learn more about the Unity game engine visit <a href="http://unity3d.com/unity" target="_blank">http://unity3d.com/unity</a>. </div>
Anonymoushttp://www.blogger.com/profile/11770164970801071498noreply@blogger.comtag:blogger.com,1999:blog-7793781044289546361.post-61881210435248646452013-10-23T14:17:00.001-07:002013-10-23T14:17:22.581-07:00Business Intelligence With Excel PivotTable, PivotChart & PowerPivot (Part 2)<div dir="ltr" style="text-align: left;" trbidi="on">
This is part two of my previous article titled, "<a href="http://bussystemanalysis.blogspot.com/2013/10/business-intelligence-with-excel.html" target="_blank">Business Intelligence With Excel PivotTable, PivotChart & PowerPivot (Part 1)</a>" In this article I will discuss more advanced PowerPivot features for Excel.<br />
<br />
PowerPivot offers features that provide a way for business users to access and analyze business intelligence data more easily. For example, users can use PowerPivot to create hierarchies that provide complex data-grouping capabilities. Also, advanced PowerPivot users can create Perspectives that make it easier to work with large tables. These are just two of several features that make PowerPivot a powerful tool for business intelligence professionals and Excel users.<br />
<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;"><span style="background-color: white;">Accessing Data From Within PowerPivot
</span></span></h3>
<br />
PowerPrivot provides a way to access business intelligence data from a variety of sources, as discussed in my previous article "<a href="http://bussystemanalysis.blogspot.com/2013/10/business-intelligence-with-excel.html" target="_blank">Business Intelligence With Excel PivotTable, PivotChart & PowerPivot (Part 1)</a>". However, for the purpose of this article I am going to discuss using PowerPivot to access a data warehouse in SQL Server. In this example I use PowerPivot to create a connection to AdventureWorksDW. I also create a SQL Server connection and select the following tables to access the same data I used in Part 1 of this article: DimProductSubcategory, DimProduct, DimSalesTerritory, FactInternetSales, DimPromotion, DimTime.<br />
<br />
<h4 style="text-align: left;">
<span style="color: #0b5394;">SQL Server Connection </span></h4>
<br />
When you first access PowerPivot you are presented with a blank window that has a menu. To begin you select File and use any of the "Get External Data" options that meet your needs. For the purpose of this article I selected "Get External Data From Database" and then I selected "From SQL Server" as the data source.<br />
<br />
As you step through PowerPivot's Table Import (or other) Wizard you are presented with options that help you build a connection that would, otherwise, require technical skills. If you connect to a data warehouse in SQL Server PowerPivot provides the ability to select the tables you want to work with. In addition, you can specify the table columns that contain the data you need. This is useful because you don't have to import all columns into PowerPivot. Instead, you can specify the columns for a table while using the Select Tables and Views window shown below. To begin you select a table and then click the Preview & Filter button to access a window that lets you specify that table columns to include.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNySUiu4ix2zVs-FsuY7MV9ILe9L_v2s4En4gw4T8NGa8As304BPJaJWZDe-8ac7e6ECtWUId7RA5KHAZNNk4Hhdcv-3nchWDBCEFxx2Pjm12V-5F4aBIu8DyZ22kUmLpXuQVHK2khmpk/s1600/powerpvt_pamela_v_langford06.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNySUiu4ix2zVs-FsuY7MV9ILe9L_v2s4En4gw4T8NGa8As304BPJaJWZDe-8ac7e6ECtWUId7RA5KHAZNNk4Hhdcv-3nchWDBCEFxx2Pjm12V-5F4aBIu8DyZ22kUmLpXuQVHK2khmpk/s1600/powerpvt_pamela_v_langford06.png" height="314" width="400" /></a></div>
<br />
<br />
The Preview Selected Table window, shown below, displays all of the columns for the selected table. By default all columns that makeup the table are selected. You can deselect ALL table columns by clicking the button highlighted below with an arrow. You can then select the desired table columns. This approach is useful for tables that may have numerous columns; but you only want to select two or three columns. Note that if all table columns are deselected you can click the button, shown below, to select all columns.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOofMMigHK6ZV8xfkPgB-55upVnn2avuOKF7XOsEFRLPvl1oP8Vrf937TsbBaKhHEiAp1zInGlNOOUyH4CwuxBpSXBQv7VHadD08-NRQXdXmJSiysZT7Tu5tQq8_gDFN-ARF8jRvFZLxY/s1600/DeselectUnwantedColumns2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOofMMigHK6ZV8xfkPgB-55upVnn2avuOKF7XOsEFRLPvl1oP8Vrf937TsbBaKhHEiAp1zInGlNOOUyH4CwuxBpSXBQv7VHadD08-NRQXdXmJSiysZT7Tu5tQq8_gDFN-ARF8jRvFZLxY/s1600/DeselectUnwantedColumns2.png" height="258" width="400" /></a></div>
<br />
<h4 style="text-align: left;">
<span style="color: #0b5394;">Relationships </span></h4>
<br />
<br />
When you work with a SQL Server database there are four types of Key columns you will encounter:<br />
<br />
<ul style="text-align: left;">
<li>The <b>Primary Key</b> in a database table is a column that contains a unique value to identify each row in a table. Without a unique key the database cannot tell one row from the next. </li>
<li>Another Key type is an <b>Alternate Key</b>, which is also called a Candidate Key. This is a column, besides the Primary Key, that also contains unique values. For example, a customer table may have a Customer ID column and it may have an Account Number column that stores each customer's account number. The Customer ID may be the Primary Key. However, each customer may also have a unique account number. In this example, the Account Number column would be the Alternate or Candidate Key because it also uniquely identifies each row in the database. </li>
<li>Another Key type is the <b>Composite Key</b>, which uses multiple columns to return a unique value. For example, an order details table might use the Order Number and Product ID as a Composite Key. When you place an order online (i.e., using Amazon) you are assigned 1 order number every time you place an order. An order may contain one or multiple products. When you place an order each product ordered is associated with the same order number. To do this, the order number is repeated in the database. However, if a customer orders 2 units of the same product--the Product ID is never repeated for the same order. Instead, the Quantity column tells "how many" items were ordered. Therefore, the order number and the Product ID combined uniquely identify each row. In this example, the Order Number and Product ID together makeup the Composite Key. (Note that PowerPivot does not support Composite Keys.) </li>
<li>The last key type is the <b>Foreign Key</b>, which is discussed below.</li>
</ul>
<br />
As previously mentioned two of the tables I use are DimProductSubcategory and DimProduct. The DimProduct table maintains a list of products. The DimProductSubcategory table includes a list of subcategories for the products. To relate the DimProduct table and the DimProductSubcategory table the Primary Key from the DimProductSubcategory table is added to the DimProduct table. The ProductSubCategoryID is a Foreign Key column, in the DimProduct table, because it belongs to the DimProductSubcategory table. But, it is is placed in the DimProduct table to relate the DimProduct table to the DimProductSubCategory table; and, ultimately relate each product to a subcategory. As the database displays a product the Foreign Key column, in this example, allows the database to also display the Subcategory for each product.<br />
<br />
Once the desired tables (and columns) have been selected users can click the OK button to close the Preview Selected Table window. The Select Tables and Views window becomes visible again.
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNySUiu4ix2zVs-FsuY7MV9ILe9L_v2s4En4gw4T8NGa8As304BPJaJWZDe-8ac7e6ECtWUId7RA5KHAZNNk4Hhdcv-3nchWDBCEFxx2Pjm12V-5F4aBIu8DyZ22kUmLpXuQVHK2khmpk/s1600/powerpvt_pamela_v_langford06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNySUiu4ix2zVs-FsuY7MV9ILe9L_v2s4En4gw4T8NGa8As304BPJaJWZDe-8ac7e6ECtWUId7RA5KHAZNNk4Hhdcv-3nchWDBCEFxx2Pjm12V-5F4aBIu8DyZ22kUmLpXuQVHK2khmpk/s1600/powerpvt_pamela_v_langford06.png" height="314" width="400" /></a></div>
<br />
Note that when you select the columns you want to work with keep in my that you
will need to maintain the relationship between tables when you work with
data stored in multiple related tables. If you select the
Primary and Foreign Key columns, PowerPivot will create the
relationships (between tables) for you. When you click the Finish button on the Select Tables and Views window, PowerPivot processes the tables and columns. When the processing is completed a "Success" message is displayed. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_F5BrEOVBopDVyAvc0H762N_-1bpydvr_kPEw77wseJZ9KG3nF90EEB3UOvJxUbuh5X9NkfrAH84w-vJeQA-deLeho0s3oR57hA5RfSCqtH2FI06NymF8o8PTjIohXkpm9MM2Gn882ho/s1600/powerpvt_pamela_v_langford07.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_F5BrEOVBopDVyAvc0H762N_-1bpydvr_kPEw77wseJZ9KG3nF90EEB3UOvJxUbuh5X9NkfrAH84w-vJeQA-deLeho0s3oR57hA5RfSCqtH2FI06NymF8o8PTjIohXkpm9MM2Gn882ho/s1600/powerpvt_pamela_v_langford07.png" height="314" width="400" /></a></div>
<br />
You can click the Details link (shown above) to see additional
information about the actions PowerPivot has performed based on the
columns you selected. In my example, I selected the Primary Keys and
Foreign Keys to ensure PowerPivot built a relationship between my selected tables (as shown in the Details window below).
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnzSY8CCb8JMGt4h1Eqx1zkq2HNvxApSq39nb-Qe-8m7mmDKq0-LNpfRwHCWy66BQU7IK9iI-l7W4dRmAFODwRbNtvCbUfCA0u-nNS_MQSMUsD3a0l2LRJawqkZ8kQMA2viy62Iks098Y/s1600/powerpvt_pamela_v_langford08.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnzSY8CCb8JMGt4h1Eqx1zkq2HNvxApSq39nb-Qe-8m7mmDKq0-LNpfRwHCWy66BQU7IK9iI-l7W4dRmAFODwRbNtvCbUfCA0u-nNS_MQSMUsD3a0l2LRJawqkZ8kQMA2viy62Iks098Y/s1600/powerpvt_pamela_v_langford08.png" height="251" width="320" /></a></div>
<br />
<br />
Once PowerPivot displays the "Success" message you can close the Table Import Wizard and start to work with the data. You can then use PowerPivot to prepare you data for analysis.<br />
<br />
Just one quick note. If you did not select the Primary (or Alternate) Key columns and Foreign Key columns when you selected the tables you can still create relationships among the tables. From within PowerPivot select Table -> Relationships -> Create Relationships to access the Create Relationship window (shown below). You can then select the tables and Key columns used to relate the tables.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoDg80DvQCadhrnus2Yp-ufnE2ne6ULGspy6s0us5R4L9sRvOm8YMeF4yNuwgMV9X8cwm0Gj63NVadx2TodiqmQVMht8MGSEbQd8nH1ky40It-X1bpUOfial3SAdZtMQnOtCG96BF6x8I/s1600/CreateRelationship.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoDg80DvQCadhrnus2Yp-ufnE2ne6ULGspy6s0us5R4L9sRvOm8YMeF4yNuwgMV9X8cwm0Gj63NVadx2TodiqmQVMht8MGSEbQd8nH1ky40It-X1bpUOfial3SAdZtMQnOtCG96BF6x8I/s1600/CreateRelationship.png" height="308" width="400" /></a></div>
<br />
<br />
Also you can select Table -> Relationships -> Manage Relationships to open the Manage Relationships window. The Manage Relationships window shows a list of table relationships that exist. To edit a relationship select a relationship and then click the Edit button to display the Edit Relationship window (which looks like the Create Relationship window shown above).
You can then edit relationships between tables by selecting a different Primary (or Alternate) Key column and/or Foreign Key column.<br />
<br />
In PowerPivot for Excel the Primary (or Alternate) Key is called Column. The Foreign Key is referred to as the Related Lookup Column. <br />
<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Working With Measures & Calculated Fields</span></h3>
<br />
PowerPivot provides a way to create measures from standard aggregations such as sum, avg (average), count, min, max, etc. To create custom measures (or expressions) in PowerPivot you use a Data Analysis Expression (DAX). <br />
<br />
<h4 style="text-align: left;">
<span style="color: #0b5394;">Data Analysis Expressions (DAX)
</span></h4>
<br />
PowerPivot formulas provides a way for you
to add measures as well as calculated columns. To do this you use
Data Analysis Expressions (DAX). DAX formulas start with an equal sign
followed by the function name or expression. You also add any values
required by the expression. With DAX you can perform basic or complex
calculations; and, your calculations can be based on numbers, string
values, date/time values, etc.
<br />
Although DAX is similar to Excel formulas they differ in a few ways. For example, a DAX function always references a complete column or a table. And, if
you want to only use specific values from a table or column, you can
add filters to the formula.With DAX you can also write functions that return a table as its
result; and, then feed the results to other functions.<br />
<br />
<h4 style="text-align: left;">
<span style="color: #0b5394;">Working With Calculated Columns</span></h4>
<br />
In PowerPivot you can create calculated columns that
return a numeric, text or other value. In my example I created a
calculated column that returns a string. My calculated column joins the
customer’s First Name column and
Last Name column into one column. To do this I create a DAX Function.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_NJHLNdRwF6a8_jy29pTAcWPWKyhP1psj_2gw4IUPwFkAmun0e4haisTTC6jvpNILRFECPxzRat_aC1T6bviEX9V0779-4oQyajpuKXPmOmiaU1VaDxfS0r8W3SbLy-5xWOiF_jDWpBU/s1600/powerpvt_concatenate_funct.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_NJHLNdRwF6a8_jy29pTAcWPWKyhP1psj_2gw4IUPwFkAmun0e4haisTTC6jvpNILRFECPxzRat_aC1T6bviEX9V0779-4oQyajpuKXPmOmiaU1VaDxfS0r8W3SbLy-5xWOiF_jDWpBU/s1600/powerpvt_concatenate_funct.png" height="314" width="400" /></a></div>
<br />
<br />
Notice,
in the picture above,
when I select a function PowerPivot shows me the values the function
requires. In programming a function returns a value. In this
example I'm using the Concatenate function to return the customer's
First and Last Name with a comma and space between the two. Since I
want to concatenate the DimCustomer FirstName and LastName columns I can
locate the columns by typing a "D" for DimCustomer where Text1 goes.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhnU4GHNXa__yuzGGqe-kAl3AQAwkIG4PhBE-hsBI6KY5OqeTX04vrVb0V0dXyFBgH4ngi3OQbqPDN81TQBmzfhHfE4Rmz4Vj2NjHQGRxa7-yIXxCM895MICCePQMKqJ0B3r95knTFG_E/s1600/powerpvt_pamela_v_langford12.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhnU4GHNXa__yuzGGqe-kAl3AQAwkIG4PhBE-hsBI6KY5OqeTX04vrVb0V0dXyFBgH4ngi3OQbqPDN81TQBmzfhHfE4Rmz4Vj2NjHQGRxa7-yIXxCM895MICCePQMKqJ0B3r95knTFG_E/s1600/powerpvt_pamela_v_langford12.png" height="119" width="320" /></a></div>
<br />
PowerPivot
automatically displays a list of available values that start with "D". I
can select my columns based on how I want the customer’s name to
display. If I want the customer’s last name then first name I would
select DimCustomer[LastName] first. I can type a comma to tell PowerPivot I
want to add the second value the function expects. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi14Wng76LoqCQHjSdX8DAy4bPnlV7Q6BReBFBLkN7Lz6LNJ-xMCE9K4vuO3noRbDYuLcSOusb1YYUqBBKNAbLDhBkd_9mv9xaerEWbunUn4YToAbjCJG40U6qLBDcwrYhdoIcaQIwtAi0/s1600/powerpvt_pamela_v_langford14.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi14Wng76LoqCQHjSdX8DAy4bPnlV7Q6BReBFBLkN7Lz6LNJ-xMCE9K4vuO3noRbDYuLcSOusb1YYUqBBKNAbLDhBkd_9mv9xaerEWbunUn4YToAbjCJG40U6qLBDcwrYhdoIcaQIwtAi0/s1600/powerpvt_pamela_v_langford14.png" height="125" width="320" /></a></div>
<br />
<br />
I can rename the column by simply
right-clicking the calculated column and selecting Rename Column. I am
then able to give the column a more meaningful name.
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPktEyX_rgx24XtCBhX_q2trJ4lYXbDe1drzgliyrV7DNW_a_ifdrpcnRqHJCXTcfqhSNvcc0ajYpnnYHbOUvGTpxKFWJ7F6UdmBwzhFNePxXwBaPOkPXiHv0xZ7RuxZo5Z0BrxRqPyuE/s1600/powerpvt_pamela_v_langford15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPktEyX_rgx24XtCBhX_q2trJ4lYXbDe1drzgliyrV7DNW_a_ifdrpcnRqHJCXTcfqhSNvcc0ajYpnnYHbOUvGTpxKFWJ7F6UdmBwzhFNePxXwBaPOkPXiHv0xZ7RuxZo5Z0BrxRqPyuE/s1600/powerpvt_pamela_v_langford15.png" height="132" width="320" /></a></div>
<br />
<br />
Now from within PowerPivot I can
select View -> PivotTable. The Create PivotTable displays. I can
create a new Excel workbook; or, create the Pivot Table in the
existing workbook as discussed later in this article. You can read more about DAX by reading the DAX Overview article located at <a href="http://technet.microsoft.com/en-us/library/gg399181.aspx" target="_blank">http://technet.microsoft.com/en-us/library/gg399181.aspx</a>. <br />
<br />
<h4 style="text-align: left;">
<span style="color: #0b5394;">Working with Measures </span></h4>
<br />
As previously mentioned in addition to creating calculated columns you can use DAX to create measures. By default, PowerPivot is set to automatically create some standard
measures for you. However, you can manually create a measure using the following
syntax: <span class="input"><measurename>:<formula></span>
where <measure> is the name you want to give the measure; and,
<formula> is the DAX.When you create a measure by entering a
DAX, as shown in the following picture, the measure is added to the
calculation area.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhI2jdsoVOBzJg0F_9dohQiKEdJlyH_jBcrJ3zjypMK0wFesTZ5mMqdD7HuMU8JuUnLQySMakE4r24-K5-6FWyfvvgvQcPdob-eIAwEJtr_ba6j-gzWEt0ni_9tThlUABYRK8_LVWqQxxI/s1600/Calculation_Area.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhI2jdsoVOBzJg0F_9dohQiKEdJlyH_jBcrJ3zjypMK0wFesTZ5mMqdD7HuMU8JuUnLQySMakE4r24-K5-6FWyfvvgvQcPdob-eIAwEJtr_ba6j-gzWEt0ni_9tThlUABYRK8_LVWqQxxI/s1600/Calculation_Area.png" height="232" width="320" /></a></div>
<br />
Alternatively,
you can create your PivotTable (in Excel) and create measures from
there. To do so you right-click a table. You can then select Add New
Measure from the menu that displays (as shown below). <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPoiikQSkqUN_z_6HjlAtTRBQerUQNyZytjx9Ua1WZZUra5VSVBcMUbtDFHcdQDD9f4prDXwQyDO91y-vzoB0Z972rnlwJPDoAiuHqAES9GzAQfG9salYwg07WEW4BUuzJU6x3srSnr-Q/s1600/Add_New_Measure.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPoiikQSkqUN_z_6HjlAtTRBQerUQNyZytjx9Ua1WZZUra5VSVBcMUbtDFHcdQDD9f4prDXwQyDO91y-vzoB0Z972rnlwJPDoAiuHqAES9GzAQfG9salYwg07WEW4BUuzJU6x3srSnr-Q/s1600/Add_New_Measure.png" height="213" width="400" /></a></div>
<br />
The
Measure Settings window displays. You can then add a name for your
measure and use the Formula button to add a formula and even check your
formula.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR4-8aDtNHAOVJ2vG-RYJX1xZAibRMc4Vy6Lfz0iJTSYbHYi5iKmwAS9YRaiclX7CHZXbFijO7l0kXwk6HLKeL6hDrp0Om0qK32xNO6bzJBSffV5ng-nbSgmHv93PXApgxRUM8V9Z_8co/s1600/measure_settings_window.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR4-8aDtNHAOVJ2vG-RYJX1xZAibRMc4Vy6Lfz0iJTSYbHYi5iKmwAS9YRaiclX7CHZXbFijO7l0kXwk6HLKeL6hDrp0Om0qK32xNO6bzJBSffV5ng-nbSgmHv93PXApgxRUM8V9Z_8co/s1600/measure_settings_window.png" height="231" width="320" /></a></div>
<br />
<br />
You can learn more about PowerPivot measures by reading the article title Measures in PowerPivot at <a href="http://technet.microsoft.com/en-us/library/gg399077.aspx" target="_blank">http://technet.microsoft.com/en-us/library/gg399077.aspx</a>.
You can also learn more about creating measures and follow the
instructions to create a similar example shown in this article by visiting the
following <a href="http://technet.microsoft.com/en-us/library/gg399161.aspx" target="_blank">http://technet.microsoft.com/en-us/library/gg399161.aspx</a> .<br />
<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Key Performance Indicators (KPIs)</span></h3>
<br />
Within PowerPivot Organizations can create Key Performance Indicators (also called KPIs) to support their performance measurement program. Performance measurement enables companies to better compete by becoming the best at what they do. For example, Company A might specialize in software development. Company B, an unknown company, would compare its processes and performance against the processes, techniques, etc. used by Company A. Company B can then use the information it learned about Company A to set targets and standards to also become counted among the best. Company B continually monitors its data and targets and executes process improvement measures to, ultimately, become the best too. In a different scenario, a member of the executive team may set goals and targets that the company must meet.<br />
<br />
Although the most commonly used KPIs are sales related; there are many other types of KPIs. For example, there are performance KPIs One example of a performance KPI might be as follows: Achieve a 98% customer satisfaction rating in Technical Support. A company that sets this KPI would provide customers access to an online Technical Support survey and then capture the survey results. The company then tracks and manages customer responses to the survey. The results are then compared to the KPI, complaints are noted, processes are improved, as necessary, until the company reaches its KPI target.<br />
<br />
A KPI typically indicates a single goal or target for a company. People within the organization than continually view data and manage related processes to improve performance. PowerPivot provides a way for users to create and manage KPIs. In PowerPivot KPIs are created from a base measure that evaluates to value. You can then build the KPI from the base measure, as shown in the paragraphs below.<br />
<br />
Note: To create a KPI you must work with measures, which are displayed in the Calculation Area. If the Calculation Area is not visible select View -> Model View -> Show Calculation
Area (as shown below).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUO5H6SmmgUwm1tl-o5hrkNURdpXbyk3nMYRYlQqsGbFQTmpdHplKpkkKfiJzuR_VvEHO8A9CD4MgAT2Sx5BwHGxc3QKsgEIdGAymzjwbnO4Re2YxWsxhoLFczy-KkcubdFdd5z5P3IcE/s1600/show_calculation_area.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUO5H6SmmgUwm1tl-o5hrkNURdpXbyk3nMYRYlQqsGbFQTmpdHplKpkkKfiJzuR_VvEHO8A9CD4MgAT2Sx5BwHGxc3QKsgEIdGAymzjwbnO4Re2YxWsxhoLFczy-KkcubdFdd5z5P3IcE/s1600/show_calculation_area.png" height="272" width="320" /></a></div>
<br />
To begin right-click the measure from which you want to create the KPI. Select Create KPI.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjt5jKlsOa1BpudC92YZ_t6uObEV8icjHvwneGZv-W1MdMj1t5VjrF3RQCVKgOTqSAC9gHu2M9DegQoXMIJSvkBJWEVOvMAsvLe9BU5UMu791AsDs6CZ5NZ83ONsfWLRTM3R2xRWVfNQrY/s1600/create_kpi.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjt5jKlsOa1BpudC92YZ_t6uObEV8icjHvwneGZv-W1MdMj1t5VjrF3RQCVKgOTqSAC9gHu2M9DegQoXMIJSvkBJWEVOvMAsvLe9BU5UMu791AsDs6CZ5NZ83ONsfWLRTM3R2xRWVfNQrY/s1600/create_kpi.png" height="249" width="320" /></a></div>
<br />
<br />
The Key Performance Indicator window displays, as shown below.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDi2_aNObZ4vvt8JIajz_uxmqapShxtsV7FvgoWmCLcNKmsUvZrIq6cV4IMEzqEguO0pu1kWY9bv_e_VC_Ncxkhv4Nwto0DGyLrWedwESNMs4BM2tFI1taUKFm7UYyPfqE2uiEG_pP_hA/s1600/kpi_window.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDi2_aNObZ4vvt8JIajz_uxmqapShxtsV7FvgoWmCLcNKmsUvZrIq6cV4IMEzqEguO0pu1kWY9bv_e_VC_Ncxkhv4Nwto0DGyLrWedwESNMs4BM2tFI1taUKFm7UYyPfqE2uiEG_pP_hA/s1600/kpi_window.png" height="264" width="320" /></a></div>
<br />
Select the Measure, from the Measure drop-down, that the KPI will extend. As previously mentioned a key element about a KPI is that it provides a way to easily track a company's (or department's) progress in meeting a goal. KPIs use color-coded icons so viewers can easily determine the status of a KPI. PowerPivot provides a way to define status thresholds so the colors that icons display provide meaningful information based on what a company decides the KPI is showing:<br />
<ul style="text-align: left;">
<li>Unsatisfactory progress (red)</li>
<li>Progress within a specific range--but KPI has not been met (Yellow)</li>
<li>Target has been met or exceeded (green)</li>
</ul>
<br />
To define what color a KPI shows (based on the measure value associated with the KPI) PowerPivot uses low and high threshold values. For example, if the KPI icon should display red if measure value associated with the KPI is 34% below the target; then the KPI low threshold value should be set to 34%. If the KPI icon should display green when the measure value is 98% within the target--then the high threshold value is changed from 80% to 98%. Any value between the low threshold and high threshold causes the KPI icon to display yellow.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzrBpt9ujKMOlKvJUex7i2pKVSuTptSUxKA6xffbUHhbke17-Yn-4RJohlLMSRkiFEUouxSHGYL30gAZfy4y6UBvpLF1dfl-GkuW6JN-G2amesyhT4YDJsHR3MR4JMsGwvShht8MKwIGk/s1600/select_measure.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzrBpt9ujKMOlKvJUex7i2pKVSuTptSUxKA6xffbUHhbke17-Yn-4RJohlLMSRkiFEUouxSHGYL30gAZfy4y6UBvpLF1dfl-GkuW6JN-G2amesyhT4YDJsHR3MR4JMsGwvShht8MKwIGk/s1600/select_measure.png" height="330" width="400" /></a></div>
<br />
In the Select icon style section you select the icons you want the KPI to display to reflect the status. Below, PowerPivot shows a measure that has been extended by a KPI.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrRZaiH_n_G1i2wcAERi522BHNDncsIWBp3XFY_3nSK7XwI1pQjNSrbGwL-3ndZPwMVxoaN4cJwA0yQFp-WsRIl-H66SfTRF2l7TWf75rPGVcBVhfxRJ4fOz7zqswRxcRI0XCLpg6ca70/s1600/power_pivot_kpi.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrRZaiH_n_G1i2wcAERi522BHNDncsIWBp3XFY_3nSK7XwI1pQjNSrbGwL-3ndZPwMVxoaN4cJwA0yQFp-WsRIl-H66SfTRF2l7TWf75rPGVcBVhfxRJ4fOz7zqswRxcRI0XCLpg6ca70/s1600/power_pivot_kpi.png" height="222" width="320" /></a></div>
<br />
Once you create the PivotTable you can select the KPI. The following picture shows a single icon displaying the value, status and target. Notice how, at a glance, an executive or other employee can tell whether or not the organization has met its target. Also notice that the PowerPivot Field List also notes the KPI with the icon that makes it easy to spot.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA7nWb-zqCpbrR6IPrKJsqiDWYv6LiLNqRswhcgmvICoODDfqIT7LBMu2kPA0kwBGM2GhovhGjrMJkedWcg0zJkrDqFFz_eCZm-T3sMF97wPv7xyVMTMJurkaUDq2B8cF05zWqdIIa49g/s1600/kpi_pivot_table.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA7nWb-zqCpbrR6IPrKJsqiDWYv6LiLNqRswhcgmvICoODDfqIT7LBMu2kPA0kwBGM2GhovhGjrMJkedWcg0zJkrDqFFz_eCZm-T3sMF97wPv7xyVMTMJurkaUDq2B8cF05zWqdIIa49g/s1600/kpi_pivot_table.png" height="278" width="400" /></a></div>
<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Creating Hierarchies
</span></h3>
<br />
Hierarchies enable you to select columns within a table and organize those columns in a hierarchical way. To create a hierarchy you must be in Design view. One way to navigate to design view is to select View -> Model View -> Diagram View. You can then right click on the table that contains the columns for which you want to create a hierarchy and select Create Hierarchy.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgC_MomEpTnnqt5E3DrLU9Npn4HHhstPY3fuTct7IBIzBkC6SeTQ-1sag6-gDcvMyLr4hHJ9UOKILN6arY1-QzvrC6fNvhDPXWu2KgCIK0OX7yaSiOE0Ri4ax43rJOUCHM9CRUi3UVSB44/s1600/powerpvt_hierarchy_create21.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgC_MomEpTnnqt5E3DrLU9Npn4HHhstPY3fuTct7IBIzBkC6SeTQ-1sag6-gDcvMyLr4hHJ9UOKILN6arY1-QzvrC6fNvhDPXWu2KgCIK0OX7yaSiOE0Ri4ax43rJOUCHM9CRUi3UVSB44/s1600/powerpvt_hierarchy_create21.png" height="159" width="320" /></a></div>
<br />
By default the first Hierarchy created is called Hierarchy
1. Select Rename to change the name of the hierarchy (as shown below). You can use the Move Up/Move Down options to change the order of the columns in the hierarchy.
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2vDVPGWGFQky9as06mqYMzu72_XTkkdiR_nuPV_HZ4OLrFkB9lWda7mj3q0h4Kt01kWeHIiYq6F2M9d89ugk6tgHYqUie3iURVyOdW9V3NoslbVjr7cen2e-E-yTOf9SxxxnQuVBFn00/s1600/powerpvt_hierarchy_create22.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2vDVPGWGFQky9as06mqYMzu72_XTkkdiR_nuPV_HZ4OLrFkB9lWda7mj3q0h4Kt01kWeHIiYq6F2M9d89ugk6tgHYqUie3iURVyOdW9V3NoslbVjr7cen2e-E-yTOf9SxxxnQuVBFn00/s1600/powerpvt_hierarchy_create22.png" height="178" width="320" /></a></div>
<br />
When you view the PowerPivot Field List you will notice that your hierarchy appears along with the table columns.(In my example I created the Hierarchy under the DimSalesTerritory table so that is where I go to find the Hierarchy I created.)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlOHJyoBogeDWaz2saxS4kND5zbrvt668ayJAGbLEPjE2wEFphCL0PPzEZlZyEyYtbdb72HiYcXXbNsRgjO2oq-QBOH1aH_zQjsoN3RvJE80AOJzbAMj_MLR5dJgJn3KGEejSDQ0jB6uk/s1600/powerpvt_hierarchy_create23.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlOHJyoBogeDWaz2saxS4kND5zbrvt668ayJAGbLEPjE2wEFphCL0PPzEZlZyEyYtbdb72HiYcXXbNsRgjO2oq-QBOH1aH_zQjsoN3RvJE80AOJzbAMj_MLR5dJgJn3KGEejSDQ0jB6uk/s1600/powerpvt_hierarchy_create23.png" height="387" width="400" /></a></div>
<br />
The associated data is automatically added to the applicable group. The
following picture shows my example. On the right side of the picture I
highlighted (using a partial red box) the hierarchy I created called
Sales Regions. The left side of the picture shows the hierarchy added to
the PivotTable. Notice the territories are grouped so the user can
drill-down by expanding each group, which is highlighted using a
complete red box. I added SalesTerritoryGroup as the parent in the
hierarchy. I then added SalesTerritoryCountry and lastly I added
SalesTerritoryRegion, which is the lowest level in the group. I renamed
the items in the hierarchy to omit the "SalesTerritory" prefix. I then
clicked Sales Amount to add a measure to the PivotTable.
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjs5tHKq0YikVl3HPVMCxl2V_idWDx8l5k1NaN_wySem_XP_sMN_JFX4UusNEd35uddB5hKOy540v1nk_dsZ4eV1gh3gtkv5pzV4xvwNbblVMj-EvW3xXS4sKyQKrjo4EjHfLtZ8eGwIE/s1600/powerpvt_hierarchy_create24.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjs5tHKq0YikVl3HPVMCxl2V_idWDx8l5k1NaN_wySem_XP_sMN_JFX4UusNEd35uddB5hKOy540v1nk_dsZ4eV1gh3gtkv5pzV4xvwNbblVMj-EvW3xXS4sKyQKrjo4EjHfLtZ8eGwIE/s1600/powerpvt_hierarchy_create24.png" height="159" width="320" /></a></div>
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Working With Perspectives </span></h3>
<br />
A perspective provides a way for users to create a View of the data. For example, someone with more advanced PowerPivot skills may create perspectives so that less experienced business users can use PowerPivot for analysis. However, instead of finding columns and filtering unwanted columns a perspective can be created to include the tables and columns a group of business users would want to use. To create a perspective you must first switch to diagram mode. Then you have to switch to advanced mode by selecting File -> Switch to Advanced Mode. (Make sure you select the Primary key and Foreign keys to maintain relationships within the perspective.)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8xJKZrNF_FC51ubD4tLjb1Cpr0BfqwBz14oL12SBZ6ZGLE_WupXyYSiDAEwfhcZ8kyqF3fNeHXnXJ-HzpM4gIQtabjsKH0bknCaOcAmbNSulTvJuWCTMqYwLV0SA5K1Q-LxWY5M4po7c/s1600/powerpvt_perspectives18.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8xJKZrNF_FC51ubD4tLjb1Cpr0BfqwBz14oL12SBZ6ZGLE_WupXyYSiDAEwfhcZ8kyqF3fNeHXnXJ-HzpM4gIQtabjsKH0bknCaOcAmbNSulTvJuWCTMqYwLV0SA5K1Q-LxWY5M4po7c/s1600/powerpvt_perspectives18.png" height="365" width="400" /></a></div>
<br />
Once you have determined the tables, columns,
hierarchies, etc. to be included in the perspective you can select
Advanced -> Perspectives. The Perspectives window (shown in the
picture below) displays. You can then select the New Perspective button
and select the objects to be included in the perspective. Notice table
columns, calculated columns and hierarchies are all available and can be
included in a perspective. By default the perspective is called New
Perspective. Click the Rename "New Perspective button. You can then
change the default New Perspective name. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJsHawQQaIulchF0os34LS3oF9oJmczuzvzx3EOfkcSThzQHDoVQfu2MmocaXmoSooMA0exsNrdsPiSVfyAOgawE7GD-TftBEB-LPCjLDRbgeisptIlCUsyOmlquyh_gI-E5pOA5EHwwc/s1600/powerpvt_perspectives_create19.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJsHawQQaIulchF0os34LS3oF9oJmczuzvzx3EOfkcSThzQHDoVQfu2MmocaXmoSooMA0exsNrdsPiSVfyAOgawE7GD-TftBEB-LPCjLDRbgeisptIlCUsyOmlquyh_gI-E5pOA5EHwwc/s1600/powerpvt_perspectives_create19.png" height="367" width="400" /></a></div>
<br />
Once you have created a
perspective you can select the perspective using the Select perspective
drop-down. Creating a perspective makes it easier to find table and
column data when creating a PivotTable. As shown in the following
picture, you can select a Perspective and use the objects in the Perspective to populate your PivotTable. When you use this approach you have to view the tables and columns associated with the Perspective regardless of the number of tables and columns saved in PowerPivot.
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbrvfwf60_AvV7RfZsxCF3fehb_f_Z92OLkKxHFs25RpHkVGBnJAN24CMdzeqBQb0L_gekHrCHC7N1qIHQsBveDMt7DV_Zm5kTUQ3Es0EG0_WPdDTwmUhyrRApExOYDj2WR_MyN5JSR3w/s1600/powerpvt_perspective_pivottable.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbrvfwf60_AvV7RfZsxCF3fehb_f_Z92OLkKxHFs25RpHkVGBnJAN24CMdzeqBQb0L_gekHrCHC7N1qIHQsBveDMt7DV_Zm5kTUQ3Es0EG0_WPdDTwmUhyrRApExOYDj2WR_MyN5JSR3w/s1600/powerpvt_perspective_pivottable.png" height="207" width="400" /></a></div>
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Adding Tables To Existing Data in PowerPivot
</span></h3>
<br />
If you determine that you need to add more tables and columns to PowerPivot you can do so by selecting Table -> Existing Connections to open the Existing Connections window you used to initially add the tables and columns. Select the connection you previously used then click the Open button to access the Table Import Wizard. You then follow the steps you previously followed to add tables and filter columns.
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidu97BT99aBpqNntka0kWcyOElQXovaqaOcqGhIl9xrPeja96Js4HthHwrLHkRVps1YvBumY6KAJWe9vSHhruDj2Gl77UiGb2f9UG99vKuAArE_PY1V9VCzoZ9ItG0RypG4U63C3hyphenhyphen1PU/s1600/existing_connections.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidu97BT99aBpqNntka0kWcyOElQXovaqaOcqGhIl9xrPeja96Js4HthHwrLHkRVps1YvBumY6KAJWe9vSHhruDj2Gl77UiGb2f9UG99vKuAArE_PY1V9VCzoZ9ItG0RypG4U63C3hyphenhyphen1PU/s1600/existing_connections.png" height="320" width="298" /></a></div>
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Working With PowerPivot PivotTables</span></h3>
<br />
Once you have created all of the components you need to analyze the data you can create a PivotTable. From within PowerPivot you can select View -> PivotTable, or PivotChart, or Table and Chart, etc. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhJRtik8yoWWsFF046NYOZFMQFgXnHOoJskPkIkUr806q0GIfxrBStoByi3McS6UVJNzk3KACB-nclfEhBypI_iS5jqaYYUsZLRE22GgHC9mQY-kH2lT0Egl6Shfvoh0Xmpq-I9AbTrOg/s1600/view_pivottable.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhJRtik8yoWWsFF046NYOZFMQFgXnHOoJskPkIkUr806q0GIfxrBStoByi3McS6UVJNzk3KACB-nclfEhBypI_iS5jqaYYUsZLRE22GgHC9mQY-kH2lT0Egl6Shfvoh0Xmpq-I9AbTrOg/s1600/view_pivottable.png" height="222" width="320" /></a></div>
<br />
If I select View -> PivotTable, PowerPivot opens Excel (if it isn't already launched) and provides the options needed to build a PivotTable. The PivotTable created using PowerPivot looks like the PivotTable created using out-of-the-box Excel--except you have more options. For example, you can use the Perspectives and Hierarchies you created to populate your PivotTable. To create your PivotTable you either select values from the PowerPivot Field List; or, you can drag and drop fields from the List. You can remove selected options from the PivotTable by deselecting them in the PowerPivot Field List.
<br />
<br />
Within Excel you can also create slicers by moving values to the slicers horizontal or slicers vertical field. Slicers enable users to easily filter data. In the example my vertical slicers displays Regions and my horizontal slicer displays customers. When I click a Region, only the customers associated with the region displays in the horizontal slicer. I can then click on a customer to view the products the customer purchased and the amounts of the purchase. This approach provides users with a way to quickly and easily filter data. <br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhg3OL6kR9QkYYPFSiPTmUqgPgxkRh_yZ8tjc__2xa5kzeDq-e6o3ZVxe1Smh1Mci3xF-XpfEzsDqmfq7XWnAOFMSBk6Pn3b9j_Tt9ZfkhwkcFh_aypVCLVwGMhzAXQuGvdUCmqXmDr9ic/s1600/slicers_to_pivottable.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhg3OL6kR9QkYYPFSiPTmUqgPgxkRh_yZ8tjc__2xa5kzeDq-e6o3ZVxe1Smh1Mci3xF-XpfEzsDqmfq7XWnAOFMSBk6Pn3b9j_Tt9ZfkhwkcFh_aypVCLVwGMhzAXQuGvdUCmqXmDr9ic/s1600/slicers_to_pivottable.png" height="268" width="400" /></a></div>
<br />
<h3>
<span style="color: #0b5394;">PowerPivot Chart</span></h3>
User can also create PowerPivot Charts to display data. From within PowerPivot users can select one of several chart options. Once the PowerPivot Chart page displays in Excel, users can select the values for which they want to create a chart.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDZCzrid6Cr-7GI260qI8lik1hchXuRjBMEqCx6Fthxrl12p0tJrzREEybYEKaolnkqWjyz39Py3WFb5x7VuAxlbZloHZ8bD_31QifNExLvBP5K0-XIcKD_yL4QAo1dW9PISlBaJLzHEM/s1600/powerpivot_chart.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDZCzrid6Cr-7GI260qI8lik1hchXuRjBMEqCx6Fthxrl12p0tJrzREEybYEKaolnkqWjyz39Py3WFb5x7VuAxlbZloHZ8bD_31QifNExLvBP5K0-XIcKD_yL4QAo1dW9PISlBaJLzHEM/s1600/powerpivot_chart.png" height="214" width="320" /></a></div></div>
Anonymoushttp://www.blogger.com/profile/11770164970801071498noreply@blogger.comtag:blogger.com,1999:blog-7793781044289546361.post-64815482998436642452013-10-11T14:59:00.004-07:002013-10-11T15:01:40.512-07:00Business Intelligence With Excel PivotTable, PivotChart & PowerPivot (Part 1)<div dir="ltr" style="text-align: left;" trbidi="on">
Over the years Microsoft Excel has managed to become a very popular tool--especially within the analytical community. In this article we will look at how the average business user can use Excel PivotTable, PivotChart or PowerPivot to view and analyze business intelligence data.<br />
<br />
Contrary to popular belief, you don't have to be extremely technical to access and analyze business intelligence data using PowerPivot. But you do need to have a good understanding of the business objectives you want to achieve when you sit down to access business intelligence data. <br />
<br />
In this article we will look at how to create PivotTables and PivotCharts using out-of-the-box Excel capabilities, which can automatically create measures from selected datasets. We will then discuss how you can view and work with business intelligence data using the PowerPivot add-in, which (last I checked) could be downloaded from the following page: <a href="http://technet.microsoft.com/en-us/library/gg413462.aspx" target="_blank">http://technet.microsoft.com/en-us/library/gg413462.aspx</a>.<br />
<br />
If you haven't had a chance to check out my previous business intelligence articles you may want to look at <a href="http://bussystemanalysis.blogspot.com/2013/07/business-intelligence-overview.html" target="_blank">Business Intelligence Overview: Companies Remove Guess-Work To Make Sound Decisions</a> and <a href="http://bussystemanalysis.blogspot.com/2013/08/business-intelligence-using-mining.html" target="_blank">Business Intelligence: Using Mining Structures, Models, Cubes & Dashboards</a>. These articles provide some basic insight to business intelligence data and a few of the tools used to access and transform data.<br />
<br />
<h3 style="text-align: left;">
<b><span style="color: #0b5394;">Microsoft Excel & PivotTables/Chart</span></b></h3>
<br />
Microsoft Excel is a popular spreadsheet application that provides the ability to not only copy and paste data; but also to connect to external data sources. It's PivotTable capability provides a way to view measures such as total sales or total customers for comparison or other purposes. Excel's basic PivotTable even provides some basic ability to measure results. In this section we'll take a quick look at how you can connect to an external data source and work with data using Excel's built-in PivotTable.<br />
<br />
In my example I connect to a SQL Server database
(throughout this article I continue to use the AdventureWorksDW). I plan to access my data using a data source so I will create one that I can use over and over again. To do this I have to use Window's Administrative Tools, which can be accessed from the Control Panel. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjR-6dO4IZB1BwiZ__8hBYzh7vOKEK-SnHON9sy8AiPkTzQTtXZcKznEBa6br5opVgIRUwV1RN-YkUT7UksrdMsq5YalxczGKSWli2nN8iZ8EOSy_x90otyUxOXcuctR39aQ7G6MeOO074/s1600/admin_tools.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjR-6dO4IZB1BwiZ__8hBYzh7vOKEK-SnHON9sy8AiPkTzQTtXZcKznEBa6br5opVgIRUwV1RN-YkUT7UksrdMsq5YalxczGKSWli2nN8iZ8EOSy_x90otyUxOXcuctR39aQ7G6MeOO074/s1600/admin_tools.png" height="274" width="320" /></a></div>
I can then use the ODBC Data Source Administrator to add a new File DSN. In my example I created a File DSN that connects to the AdventureWorksDW database. This DSN provides access to all of the tables and views in the AdventureWorksDW database. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirY8ac1swjyJL6bqz-AhrRGWsxKTdLGnOm1frS-ozuOVrLV6pZjVCMl0G6AofHV6iMDa76Ms22NyEph_EkhzNe6pKhlA2Hn3z8e9Jn88S9lgs-r2fNSsj6EtbBEt2Ap-z876_Th-U_-RI/s1600/odbc_data_source_admin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirY8ac1swjyJL6bqz-AhrRGWsxKTdLGnOm1frS-ozuOVrLV6pZjVCMl0G6AofHV6iMDa76Ms22NyEph_EkhzNe6pKhlA2Hn3z8e9Jn88S9lgs-r2fNSsj6EtbBEt2Ap-z876_Th-U_-RI/s1600/odbc_data_source_admin.png" height="269" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<br />
Now, from within Excel, I can select Insert -> PivotTable to display the Create PivotTable dialog used to connect to a data source. (Alternatively, the dialog can also be used to select a range of cells in a spreadsheet already populated with data or open a new worksheets.) After I select "Use an external data source" and then click the "Choose Connection" button (on the Create PivotTable dialog) I am able to select the File DSN I created. (Notice I can create as many Excel PivotTables or PivotCharts as I want to
and I never have to create another connection to the database because I
can just select the file I created instead.) <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXK6sNtByafjUhS19kCDLENqdY_dQuCEdsMrsoK5hqJIjG3zY9Eh1yx6bnmmL7giD6WGN_7iZHvAvF-4w37ATspO_rhkPzDBCFOlLcqJSdvdOIm9BfrLcHsKVjPmrNsm38JDr6ky5AJyo/s1600/create_new_datasource_selec.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXK6sNtByafjUhS19kCDLENqdY_dQuCEdsMrsoK5hqJIjG3zY9Eh1yx6bnmmL7giD6WGN_7iZHvAvF-4w37ATspO_rhkPzDBCFOlLcqJSdvdOIm9BfrLcHsKVjPmrNsm38JDr6ky5AJyo/s1600/create_new_datasource_selec.png" height="210" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
I can then select the database table or view that contains the data I want to view. In this example I selected a view I created because, unlike PowerPivot, Excel's out-of-the-box PivotTable lets you add one table or view at a time. (For those who are wondering, a view is a database object made up of tables or other views and can include specific fields from each table or view).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh15FrGV0z2nZ5b-WtwRzPpUuNp5MyAiDVrEhI3YJ8_T8gwFXmEG5LBImPEvrKIuLjoNXcEG5LDUu6VWmxqJRofEVF8-gEOd_D_dEMoFYWUAeGuY9QSe6gxYPGbDWEgmLUGLeq9nL_jQ2A/s1600/select_table.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh15FrGV0z2nZ5b-WtwRzPpUuNp5MyAiDVrEhI3YJ8_T8gwFXmEG5LBImPEvrKIuLjoNXcEG5LDUu6VWmxqJRofEVF8-gEOd_D_dEMoFYWUAeGuY9QSe6gxYPGbDWEgmLUGLeq9nL_jQ2A/s1600/select_table.png" height="229" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
Once the desired table or view is selected you can then build the PivotTable in one of two ways: You can drag and drop the columns onto the PivotTable. Or, you can click the checkbox beside each column in the "Choose field to
add to report" area. The fields are added to the PivotTable in the order
they are selected or dropped.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMQq-T7AhYB0jRLNhMCy3gAQfh9p4ZSUPVfxVFrPFD1kxJ-mxsbxuIylZokkSytHk3bMaMbdq8CkJtlO-xD2e1Rj8Lr7PqaVykXKOytr7X7eVpwAp3DPFyHxiF7LdDPECwf8nAgot1r3c/s1600/create_pivot_table.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMQq-T7AhYB0jRLNhMCy3gAQfh9p4ZSUPVfxVFrPFD1kxJ-mxsbxuIylZokkSytHk3bMaMbdq8CkJtlO-xD2e1Rj8Lr7PqaVykXKOytr7X7eVpwAp3DPFyHxiF7LdDPECwf8nAgot1r3c/s1600/create_pivot_table.png" height="320" width="273" /></a></div>
<br />
<br />
Below is a picture of a PivotTable with the columns added. The PivotTable automatically creates measures (i.e., total or count columns) as a <span class="parameter">calculated member using </span>standard SUM aggregation. In this example, business users can analyze total sales for a customer. Once the PivotTable is created users can use Excel's Design tab to select and apply a PivotTable style if the table will be included in a presentation.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgA8PM2QJyerpUwCnKkamncR_miB9zjseNXFS3mWmSjEK40pEl6kH_6baxr-80YMiMPIEWi5jie3PFS8CsQ4Awc_c1bUHfkOuZYi7G3hqh76dTjk4Y78cy5pgoBuESLP2mNeBxdTy_yqD0/s1600/salesbyregion.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgA8PM2QJyerpUwCnKkamncR_miB9zjseNXFS3mWmSjEK40pEl6kH_6baxr-80YMiMPIEWi5jie3PFS8CsQ4Awc_c1bUHfkOuZYi7G3hqh76dTjk4Y78cy5pgoBuESLP2mNeBxdTy_yqD0/s1600/salesbyregion.png" height="305" width="400" /></a></div>
<br />
In the following example I moved two columns to the Report Filter area so business users could measure total sales by region and product. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-sfOBS0zN3M2YQusrlrQBSubEGpWb3mL2ngds7db99VpSsLFnZj1YBecUZf5hNwYVnx-X_rLJ1d9HQekVATMBKNmYBj21VYe2S6R8ZpVqXNCUrDaJGtRk8md132ybmkRgE54XtlVea60/s1600/create_filter.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-sfOBS0zN3M2YQusrlrQBSubEGpWb3mL2ngds7db99VpSsLFnZj1YBecUZf5hNwYVnx-X_rLJ1d9HQekVATMBKNmYBj21VYe2S6R8ZpVqXNCUrDaJGtRk8md132ybmkRgE54XtlVea60/s1600/create_filter.png" height="381" width="400" /></a></div>
<br />
Notice the PivotTable adds the drop-down's business user's need to select a Region and/or Product Subcategory to filter the PivotTable.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVI4kkWVmSY3-t2OBeeJmYKOA4bByaWjajg2A0YQk01Vwo7f_FazZgQyASSkGklJj44Gxkian_ICDQ7ZU7fCTRzw17RyEjKZ3cLLAJ5-QMHf3-rZb8xgCFa_qsj1aws3TvMAJlfi1bQpA/s1600/select_filter.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVI4kkWVmSY3-t2OBeeJmYKOA4bByaWjajg2A0YQk01Vwo7f_FazZgQyASSkGklJj44Gxkian_ICDQ7ZU7fCTRzw17RyEjKZ3cLLAJ5-QMHf3-rZb8xgCFa_qsj1aws3TvMAJlfi1bQpA/s1600/select_filter.png" height="232" width="400" /></a></div>
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;"> PivotTable & PivotChart</span></h3>
<br />
If you need to present PivotTable in a chart format Excel's PivotChart feature can help. To create a PivotChart from a PivotTable you can select Insert -> PivotChart. You would then follow the same steps used to create the PivotTable (i.e., select the connection or data on the existing spreadsheet, select the database object (table or view) then select the columns). If you create the PivotChart from a new connection, Excel creates a PivotTable and then creates a PivotChart from the PivotTable, as shown below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjO_H2jzOQAUSosL4ia9W2snTaz8iUnblVMGFNE76w5OBueqpC93GpSQky5aZO3Iy8UUv81hZ7uRb8j17YIM3AaYqav8ca7TD9zkXvyxKeOwUPh6bg7e6Cjew3NNHFnPIgOMlLks1O7LA8/s1600/pivot_chart.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjO_H2jzOQAUSosL4ia9W2snTaz8iUnblVMGFNE76w5OBueqpC93GpSQky5aZO3Iy8UUv81hZ7uRb8j17YIM3AaYqav8ca7TD9zkXvyxKeOwUPh6bg7e6Cjew3NNHFnPIgOMlLks1O7LA8/s1600/pivot_chart.png" height="320" width="317" /></a></div>
<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Working With PivotTables in PowerPivot</span></h3>
<br />
In the previous section I created a view (using SQL Server and Transact SQL (T-SQL)) for my PivotTable because I wanted to use data from a view and multiple tables. If you do not have SQL Server skills and you need a solution that is more robust than Excel's out-of-the-box PivotTable, PowerPivot is a viable option. PowerPivot provides business users some of the same
capabilities offered through <span class="st">SQL Server Business Development Studio and a BI project created with Visual Studio 2010 or higher</span>. This section provides an overview of PowerPivot.<br />
<br />
<h4 style="text-align: left;">
<span style="color: #0b5394;">Connecting to the Data Warehouse</span></h4>
<br />
In the previous section I created a DSN file and used it to make the connection between Excel and SQL Server. In this section I use PowerPivot to create a connection directly to SQL Server. Still, PowerPivot provides a wide range of data sources users can connect to,
including the ability to connect to an Analysis Services Cube. The following picture shows a few of the many data sources users can connect to using PowerPivot.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFoHieT5ioKQIo0QJ_zurGNPLMsNReP0ETJi6QsBp8h8PCwE_Gtcf-YBnQQap7SBfzjQae9QZrdW322uhJPcPcIiGOUaywUyLyEnlvvL7Gl0R-3GEBCdC2XOk2QsVqeWwhq1PgGyB2k30/s1600/PowerPivot3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFoHieT5ioKQIo0QJ_zurGNPLMsNReP0ETJi6QsBp8h8PCwE_Gtcf-YBnQQap7SBfzjQae9QZrdW322uhJPcPcIiGOUaywUyLyEnlvvL7Gl0R-3GEBCdC2XOk2QsVqeWwhq1PgGyB2k30/s1600/PowerPivot3.png" height="400" width="378" /></a></div>
<br />
In my example, I selected Microsoft SQL Server as my data source. PowerPivot locates the servers available and automatically populates the Server Name field with the list of available servers. Once a user selects the Server Name PowerPivot then displays a list of available databases on the server. The user can then select the data warehouse database. For more information on connecting to data sources see the article titled <a href="http://technet.microsoft.com/en-us/library/gg413468.aspx" target="_blank">Add Data To Your PowerPivot Workbook</a>. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0vDNBhpdMdOIqTdYmI14Lc8EUdGm2IlNvluBEQGgKeGiLvQr-usDXa-H9k3nkdrUaZTXXd42OxcuPqoA2c7A2i86paA00NRbd36em9aom_0tyATtl5vsuS3TA3gpuEBEuHJfFqDGNP2I/s1600/ConnectToServer.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0vDNBhpdMdOIqTdYmI14Lc8EUdGm2IlNvluBEQGgKeGiLvQr-usDXa-H9k3nkdrUaZTXXd42OxcuPqoA2c7A2i86paA00NRbd36em9aom_0tyATtl5vsuS3TA3gpuEBEuHJfFqDGNP2I/s1600/ConnectToServer.png" height="320" width="298" /></a></div>
<br />
<br />
Note that PowerPivot also supports connections to a SQL Server Parallel Data Warehouse (also called SQL Server PDW). This connection type is used to connect to large data warehouses that span across multiple servers. When this connection type is used to create a connection--the connection is made to the primary data warehouse server used to manage the data warehouse. <br />
<br />
<h4 style="text-align: left;">
<span style="color: #0b5394;">Selecting & Filtering Database Tables</span></h4>
<br />
Once the user has selected the server and the data warehouse database; the user can then select the desired tables (shown in the picture on the left). Users can use the Preview & Filter option to deselect the table fields that should not be included in the PivotTable (shown in the picture on the right). In the previous section as the user selects the fields to be included in the PivotTable--Excel automatically creates the report. PowerPivot, however, requires more interaction because users have more options available. <br />
<br />
<table>
<tbody>
<tr>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKbfXdjBJN5W3ry1PEXf1kr-gYU2JRLf67huBDPOwsm9nR4zJEW7UXqdq72YWhSu3R9dk9kXtpw-8XW2bDdvNpWH5OeT_CbeuaosnND2lq1EiLhosZNvImxcsmc3bPjKVJGKMlcPSET9g/s1600/SelectTable.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKbfXdjBJN5W3ry1PEXf1kr-gYU2JRLf67huBDPOwsm9nR4zJEW7UXqdq72YWhSu3R9dk9kXtpw-8XW2bDdvNpWH5OeT_CbeuaosnND2lq1EiLhosZNvImxcsmc3bPjKVJGKMlcPSET9g/s1600/SelectTable.png" height="320" width="298" /></a></div>
</td>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqNVuDHtoyhaB6MxDrf_POunnf6TW8mG8WUuq1swvDFai3l2KukiQs5J_ehB5dfY9DzLta-xEtp8QT7wQT3Y8ftH0H_v32X9K3mhHVi_4eKfxCJhOyU7qfPUhcyvZw73h0K066YcVRA-4/s1600/DeselectUnwantedColumns.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqNVuDHtoyhaB6MxDrf_POunnf6TW8mG8WUuq1swvDFai3l2KukiQs5J_ehB5dfY9DzLta-xEtp8QT7wQT3Y8ftH0H_v32X9K3mhHVi_4eKfxCJhOyU7qfPUhcyvZw73h0K066YcVRA-4/s1600/DeselectUnwantedColumns.png" height="306" width="320" /></a></div>
</td>
</tr>
</tbody></table>
<br />
Once the user has deselected the columns that should not be included in the PivotTable; updates can be made by selecting Table -> Table Properties. This displays the Edit Table Properties window, shown below, so users can select/deselect table fields.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMzXxcpk0A7P8_QKsdUsxe95htJTL-BvUPm_P-IkV9rWqBs5bi2gVoqekZQSBQ1a6ji0pKeZGXXEc0jx9IEFGjssatXVDsKHFCdofWFWqHdWBHnOuchxTcKc9-_Tqb-mGdZxYbwIB3XcA/s1600/edit_table_properties.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMzXxcpk0A7P8_QKsdUsxe95htJTL-BvUPm_P-IkV9rWqBs5bi2gVoqekZQSBQ1a6ji0pKeZGXXEc0jx9IEFGjssatXVDsKHFCdofWFWqHdWBHnOuchxTcKc9-_Tqb-mGdZxYbwIB3XcA/s1600/edit_table_properties.png" height="246" width="320" /></a></div>
<br />
<br />
Once the user selects the desired tables and fields the user can chose to create calculated fields (which can also be done using Excel's out-of-the-box PivotTable feature). However, the user can also create relationships between tables and perform several other tasks not available when using Excel's out-of-the box PivotTable.<br />
<br />
To effectively cover all of PowerPivot's capabilities my next article, which will be Part 2 of this article, will discuss the following topics in detail and include examples: <br />
<ul style="text-align: left;">
<li>Working With PivotTables in PowerPivot (Continued)</li>
<ul>
<li>Creating relationships between tables.</li>
<li>Creating measures (calculated fields). </li>
<li>Creating Hierarchies. (Note that with Analysis Services users can create hierarchies to work with different views of dimension members<span class="st"></span>. PowerPivot also supports this capability, as will be seen in Part 2 of this article.)</li>
<li>Working With Perspectives (which may include dimensions, hierarchies, measures, etc.).</li>
</ul>
<li>Working With PivotCharts in PowerPivot</li>
</ul>
</div>
Anonymoushttp://www.blogger.com/profile/11770164970801071498noreply@blogger.comtag:blogger.com,1999:blog-7793781044289546361.post-47798302822079074182013-09-27T20:18:00.000-07:002013-09-27T20:18:41.772-07:00Incorporate Twitter & Facebook Widgets/Buttons/Plugins into a Website<div dir="ltr" style="text-align: left;" trbidi="on">
A few people have asked me about Facebook plugins. So this article discusses a few of the Facebook plugins; and, it also includes information on Twitter widgets and buttons. This post is directly related to web plugins, which are used on regular and mobile websites.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Widgets Overview </span></h3>
<br />
You will rarely come across a company or entrepreneur's website that hasn't incorporated Twitter widgets and/or Facebook plugins. Widgets/plugins are code snippets that add functionality to a website. In this article these snippets are directly related to adding Twitter and/or Facebook functionality to any website that provides the ability to edit the HTML code.<br />
<br />
For this article I am going to add widgets, buttons and
plugins to my commercial website. It isn't published publicly yet so I
am running it locally (on localhost). I'm using Microsoft Visual Studio to create the website; and, my website is running on Internet Information Services (IIS).
However, note that you can use any HTML editor to incorporate the
widgets and it doesn't matter what technology the website uses because
the code used throughout this article is HTML and JavaScript.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Twitter Widgets</span></h3>
<br />
Twitter widgets are an easy way to add Twitter functionality to any website. To get started the person who wants Twitter functionality added to their website must have a Twitter account. This means, if you are working for a company or entrepreneur to build a website your Twitter account won't do that company/person any good. The company/person must have a Twitter account and you will need to log into their Twitter account to create the widget(s).<br />
<br />
To begin navigate to the Twitter account that has the content to be included on the website. Select "Settings" from the drop-down menu as shown in the following picture.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijkDqVALROyiOAGXkZamiqgUPozvUyx5hlgJ_tfHDmkbUpoJ3RfCasMwCKK_bQNhZeXM-y3KmV6SBRCM7PIAHBnwAUgQJM-ePFcdSq5w54U578wsUFh0oDruSELWE-t3NlDcCHRuHzzjc/s1600/twitter.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijkDqVALROyiOAGXkZamiqgUPozvUyx5hlgJ_tfHDmkbUpoJ3RfCasMwCKK_bQNhZeXM-y3KmV6SBRCM7PIAHBnwAUgQJM-ePFcdSq5w54U578wsUFh0oDruSELWE-t3NlDcCHRuHzzjc/s320/twitter.png" width="229" /></a></div>
<br />
Then select Widgets (noted by a number 1 below). When the Widgets page displays (noted by a number 2 below); click the Create New button. This opens the Create a User Widget page, as shown below below noted by the number 3.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWf6zdDHbW9KL1TC3C73_XdrNjf2GW_6IInlj_BrsV_h9MJDdvuQmDKnXeg7KXQLUpThbwfruLq3PM2ZIOzSFPKc4Dl_RFmV9WTUziOgqf6xTDkECYIJQsoRtLikOx0WdC2VntkZDWdBQ/s1600/select_widgets.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="325" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWf6zdDHbW9KL1TC3C73_XdrNjf2GW_6IInlj_BrsV_h9MJDdvuQmDKnXeg7KXQLUpThbwfruLq3PM2ZIOzSFPKc4Dl_RFmV9WTUziOgqf6xTDkECYIJQsoRtLikOx0WdC2VntkZDWdBQ/s400/select_widgets.png" width="400" /></a></div>
<br />
There are four types of widgets you can create, as discussed in the paragraphs below:<br />
<ul style="text-align: left;">
<li><span style="color: #0b5394;"><b>User Timeline</b></span> - Add this widget to a website if you want a website to display the tweets/retweets added by the user who owns the account.</li>
<li><b><span style="color: #0b5394;">Favorites</span></b> - Use this widget if the website is to display the tweets the account-holder marked as "Favorite".</li>
<li><span style="background-color: white;"><b><span style="color: #0b5394;">List</span> </b></span>- You can add this widget to a website if the account holder has created a List in twitter and added people to the list. This widget then displays all the tweets posted by the people in the list.</li>
<li><span style="color: #0b5394;"><b>Search</b></span> - Add this widget if you want a website to display all of the tweets that include a specific trend phase or Twitter handle. For example, a technology professional might want to configure the Search widget to display all #technology tweets. Or, a tweeter handle may be included in the Search Query field to display a list of tweets posted by account holder.</li>
</ul>
<br />
Once you've identified the widget you want to add to the website; open the website you are incorporating the widget into. Determine where you want to place the widget. Create an area to hold the widget. For example you can place it in a table that has 1 row/1 column; or, place it in a table cell, a divider (i.e., <div> tag), a frame, etc.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYcq5CcSHgZOslz-UfUWbqA6XW3Wk7uTAl01oeZZ4-R4avBWNQ3NStrvreoOWKb7BRTVKTWQVBYC4HWiqLyKh7ZVkiEE4we2VDbRQ4TqWpUYo6EYIp125YCTzOKThYkyaqy14hdWmHBmQ/s1600/VS_homepage.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="261" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYcq5CcSHgZOslz-UfUWbqA6XW3Wk7uTAl01oeZZ4-R4avBWNQ3NStrvreoOWKb7BRTVKTWQVBYC4HWiqLyKh7ZVkiEE4we2VDbRQ4TqWpUYo6EYIp125YCTzOKThYkyaqy14hdWmHBmQ/s320/VS_homepage.png" width="320" /></a></div>
<br />
You can then click the Create Widget button at the bottom of the Create a User Widget page (shown as number 3 in the previous picture). Twitter generates the code. Copy the code (as shown below) from Twitter. Paste it into the area you want it to appear in on the website you are design/updating. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdHkrQN7VwDtnrpIONtkCbXaT1cenv_4GBk57kvJzA5-dK0HDQFqlZUWo8sV5PNYbCnbA6Sy-5Xgqd3SA2iNxjbB6LhR_7hFbgx4KulT0ItzfBr0WryKhKLzPI3jTmOeymqLanCXpmDDc/s1600/add_code_widget.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="284" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdHkrQN7VwDtnrpIONtkCbXaT1cenv_4GBk57kvJzA5-dK0HDQFqlZUWo8sV5PNYbCnbA6Sy-5Xgqd3SA2iNxjbB6LhR_7hFbgx4KulT0ItzfBr0WryKhKLzPI3jTmOeymqLanCXpmDDc/s320/add_code_widget.png" width="320" /></a></div>
<br />
You can click the Save Changes button to save the widget.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidMt_GaU1iF_UqWkN7IV6ptHZi8i5_56z2xhkJofSm6osvti_Q1z98THoHNBvtU6KCVN0IwuU0uibvHr9ykCR5l_S2OAQD_HaagMeX20gZ1qzE3Klr_wJD-63TRMQyTS1d7Ss2sG4KHyg/s1600/widgets.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="80" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidMt_GaU1iF_UqWkN7IV6ptHZi8i5_56z2xhkJofSm6osvti_Q1z98THoHNBvtU6KCVN0IwuU0uibvHr9ykCR5l_S2OAQD_HaagMeX20gZ1qzE3Klr_wJD-63TRMQyTS1d7Ss2sG4KHyg/s320/widgets.png" width="320" /></a></div>
<br />
<br />
Paste the code into the area you prepared on the website. I placed my code in a table cell between the <td> tags. (Note that in my example, I created a table with two columns and two rows. The top row is a single column that spans two columns (i.e, <td colspan="2">). The bottom row has two columns.) After you paste the code into the website save your changes. You can then display the page in a web browser. The widget displays the applicable Twitter data. In my example below I used the User Timeline widget. Notice my tweets/retweets now display on my website; and, a Follow button has been added. Visitors can now view my tweets without going to Twitter. And, users can Follow me by clicking the Follow button provided by the widget. You can follow the same steps above to add any of the other Twitter widgets.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGVIa3DzfZPUi4Jn63grsmEnvukdSykxeVMvuuJiTZVOxi2yFU_Yid4I7nRmdgXjejafTZxKQIHTeERfvzUg_c5dnr8RdvvkdSwnPWxqO-uu8Acdw21XoL6zg7uweS8_x6kp8kVREIqUY/s1600/timeline_on_page.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="315" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGVIa3DzfZPUi4Jn63grsmEnvukdSykxeVMvuuJiTZVOxi2yFU_Yid4I7nRmdgXjejafTZxKQIHTeERfvzUg_c5dnr8RdvvkdSwnPWxqO-uu8Acdw21XoL6zg7uweS8_x6kp8kVREIqUY/s400/timeline_on_page.png" width="400" /></a></div>
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Twitter Buttons</span></h3>
<br />
Twitter also provides the code needed for web designers/developers to incorporate Twitter buttons into a website. The Twitter buttons are located on the following page: <a href="https://twitter.com/about/resources/buttons" target="_blank">https://twitter.com/about/resources/buttons</a>.<br />
<br />
You can incorporate buttons into a website using the same steps you follow to incorporate a widget. Create a space on the website for the button. You can then navigate to the <a href="https://twitter.com/about/resources/buttons" target="_blank">Twitter Buttons</a> page to select the button you would like to include.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmqbJaUogObobOvj0ow4YdwWGhv0YonS3lkr1kaLa69KU41g2PRLbRCNh9b8P9F4iFACaKFuFFcWN2w3XUpFs4MRxJimQMcNMk187nRZdwo8iQ1Msu1bkDvWIWjeQdVjRG0FenWexY55U/s1600/buttons.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="135" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmqbJaUogObobOvj0ow4YdwWGhv0YonS3lkr1kaLa69KU41g2PRLbRCNh9b8P9F4iFACaKFuFFcWN2w3XUpFs4MRxJimQMcNMk187nRZdwo8iQ1Msu1bkDvWIWjeQdVjRG0FenWexY55U/s320/buttons.png" width="320" /></a></div>
<br />
The Twitter Buttons are as follows: Share a link; Follow; Hashtag (shown below); Mention (adds the account-holder's handle to a new tweet).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgV-AkWG-W7C1chKk3WDmf1OWb7lNeTwls1c2LucfEnTH9ww2ismCJlhTPnXKbYmJyXDGbo0YjAEuqAEQ7XkQPBSVqy3VRuahBa7aFDvSqjpKKSVEdkVqUMQQfFCDgYzrjubswB9d8mCJw/s1600/select_widgets.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgV-AkWG-W7C1chKk3WDmf1OWb7lNeTwls1c2LucfEnTH9ww2ismCJlhTPnXKbYmJyXDGbo0YjAEuqAEQ7XkQPBSVqy3VRuahBa7aFDvSqjpKKSVEdkVqUMQQfFCDgYzrjubswB9d8mCJw/s320/select_widgets.png" width="306" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
When you click on a button Twitter gives you a preview button to click (to see how the button works). It also provides the code you can copy and paste to add the Twitter functionality to your website.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdpTFtMC4BvI0quvZpUns0Sx9u1IJ7i5-nRTIPi7e1f9KiwzRrLijleKc2dIMamxSI4DHmnQIw7Y1hFBBw3ke9x1QxBbMxzk_Aql3BjkmfOALIr9YDqcc56O_8KBpaljLDhbdc3NLl0ko/s1600/follow_button.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="259" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdpTFtMC4BvI0quvZpUns0Sx9u1IJ7i5-nRTIPi7e1f9KiwzRrLijleKc2dIMamxSI4DHmnQIw7Y1hFBBw3ke9x1QxBbMxzk_Aql3BjkmfOALIr9YDqcc56O_8KBpaljLDhbdc3NLl0ko/s320/follow_button.png" width="320" /> </a></div>
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Facebook Social Plugins</span></h3>
<br />
Facebook offers a range of plugins you can add to a website to incorporate Facebook functionality. You can embed a Facebook post on a website. People can then Like the post. You can add a Like buttons so people can Like a page. Facebook has a broad range of plugins that can be added to a website. You can find the plugins by visiting the following page: <a href="https://developers.facebook.com/docs/plugins/" target="_blank">https://developers.facebook.com/docs/plugins/</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxC8cCgUPYM2OLiY_jz1FZoZ7cxntJQEDgJV4taMZmel8XLX08AD_GM873anYNTNdsltEArKe3CMt8UinM_Dltwm0vpH4y-M6Ismid5KhwGqjrWfV5pfZrVSSTwLpld0RYloCPVITuaU4/s1600/facebookWidgets.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="253" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxC8cCgUPYM2OLiY_jz1FZoZ7cxntJQEDgJV4taMZmel8XLX08AD_GM873anYNTNdsltEArKe3CMt8UinM_Dltwm0vpH4y-M6Ismid5KhwGqjrWfV5pfZrVSSTwLpld0RYloCPVITuaU4/s320/facebookWidgets.png" width="320" /></a></div>
<br />
Note that some, not all, of the plugins require you to provide an app ID. To do get an app ID you must create a developer account; and, then create an app on Facebook. For more information on creating a developer account and a Facebook app you can see my previous article <a href="http://bussystemanalysis.blogspot.com/2013/09/how-to-build-facebook-apps-and-games.html" target="_blank">How to Build Facebook Apps and Games for Android</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrfOC-yovPrw0hHuIr6gDGAl-OCyamUJi4ys7OjrpUmV2SkrTwpfE0OCbt9d3PxxsEB1hnizlX-G80lxuzhaHegI7CDc1gEtJ5PpAcBBCPW_VJ3aG5CnDFC154S6S4tO8Ihdf2pdw2Oug/s1600/createapp.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrfOC-yovPrw0hHuIr6gDGAl-OCyamUJi4ys7OjrpUmV2SkrTwpfE0OCbt9d3PxxsEB1hnizlX-G80lxuzhaHegI7CDc1gEtJ5PpAcBBCPW_VJ3aG5CnDFC154S6S4tO8Ihdf2pdw2Oug/s320/createapp.png" width="320" /></a></div>
<br />
The Facebook Like button is probably one of the most popular plugins. It provides an easy way for people to Like a page while navigating outside of Facebook. The steps to create a Like button and add it to a website are similar to the steps followed to create a Twitter button.<br />
<br />
To begin visit the Like Button page at <a href="https://developers.facebook.com/docs/reference/plugins/like/" target="_blank">https://developers.facebook.com/docs/reference/plugins/like/</a>. Scroll down to the middle of the page to a section called Get the Code. Under the Configurator section there are fields that allow you to enter values or select values from a drop-down. In the URL to like field enter the URL of the site or page you want people to like. For example, if I want people to like www.pamelavlangford.com that is the URL I would add to the "URL to Like" field. You can define the layout style, width, whether or not the profile picture displays for those who click the Like button, etc. You can also indicate whether or not the Send button is to be added. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMf2W-moo2RUnbEzslyiU63lJAWYN4Z93H0jlQaZFvcv3WFR9cwXPdF21Kkh9EdtZQNuK89KI4CXrRGsmVJRR8KsPG4xFvIf8c2s1tmGUGFgUZGlaiCt9BRSPlb9XwJQ2AUeGBkfiSxpw/s1600/like_button.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="237" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMf2W-moo2RUnbEzslyiU63lJAWYN4Z93H0jlQaZFvcv3WFR9cwXPdF21Kkh9EdtZQNuK89KI4CXrRGsmVJRR8KsPG4xFvIf8c2s1tmGUGFgUZGlaiCt9BRSPlb9XwJQ2AUeGBkfiSxpw/s320/like_button.png" width="320" /></a></div>
<br />
<br />
The Send button lets users send a message to friends. The body of the message is automatically populated with the same URL used in the "URL to Like" field. If you look at the Social Plugins page you will see that the Send button can be implemented by itself. The following picture shows the Send button behavior. You can read move about the Send button by visiting <a href="https://developers.facebook.com/docs/reference/plugins/send/" target="_blank">https://developers.facebook.com/docs/reference/plugins/send/</a>.<br />
<br />
<blockquote class="tr_bq">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtgRXI3PC9QtkTDh_y77_H0WnuwTG_4Z77eBtRIsPHpcWuabryXIQfvDTDmVMBUZtviLk30mqakgyYmuE_0gvAuGbHaLPOli0AhAM1cf2n9lk6HuAizXd5NN2CLLK8hscn0y9JfteFf8A/s1600/send_button.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtgRXI3PC9QtkTDh_y77_H0WnuwTG_4Z77eBtRIsPHpcWuabryXIQfvDTDmVMBUZtviLk30mqakgyYmuE_0gvAuGbHaLPOli0AhAM1cf2n9lk6HuAizXd5NN2CLLK8hscn0y9JfteFf8A/s320/send_button.png" width="320" /></a></div>
</blockquote>
To generate the code for the Like button click the Get Code button Under the Configurator section. This prompts Facebook to generate the code you need for your website. Facebook gives you a choice of generating HTML5, XFBML (Facebook Markup Language) or IFRAME.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6Asj3Oknn8CURlohfSj-LQF9KTWcqzXSeWsb9sCGqOIjQ16A7UtjVPE5QjaFMEZwoNmkeuhinbjdQzcgA9oRJMBcqQCsTBQpRcDQCg6CoZasFGWUDOtARTbM1oE3zBPc4s0rjTgonLYw/s1600/code.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="234" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6Asj3Oknn8CURlohfSj-LQF9KTWcqzXSeWsb9sCGqOIjQ16A7UtjVPE5QjaFMEZwoNmkeuhinbjdQzcgA9oRJMBcqQCsTBQpRcDQCg6CoZasFGWUDOtARTbM1oE3zBPc4s0rjTgonLYw/s320/code.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
Notice, in the above picture, Facebook provides two code snippets. The top code snippet (marked as number 1) is from the <a href="https://developers.facebook.com/docs/javascript/gettingstarted/" target="_blank">Facebook SDK for JavaScript</a>. It should be placed immediately below the <body> tag on the web page. The second code snippet (marked as number 2 above) is placed where you want the Like button to display. The following picture shows the website with the Like button with the Send button enabled. If you add several Facebook plugins to a page you only need to add the JavaScript snippet once. But keep in mind that each page you add a Facebook plugin to must have the JavaScript snippet if the plugin requires it (as shown in the above example).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPXCYV0fXARJ2YwYr6FPXBvKzx5tbGrpIH3YfBcf23B6Q9Ti04R2vll45-K2ZY9-GQnFI2rIlcafsX0VY-eHltt4RVsSVFP2cg3w1lp-OnqFmeWb5co7X697Pzac3J5mW3oGPvuDEzZfI/s1600/Likebutton.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="282" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPXCYV0fXARJ2YwYr6FPXBvKzx5tbGrpIH3YfBcf23B6Q9Ti04R2vll45-K2ZY9-GQnFI2rIlcafsX0VY-eHltt4RVsSVFP2cg3w1lp-OnqFmeWb5co7X697Pzac3J5mW3oGPvuDEzZfI/s320/Likebutton.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
You can also embed a Facebook post on a website page. To begin navigate to the Embedded Posts plugin page at <a href="https://developers.facebook.com/docs/plugins/embedded-posts/" target="_blank">https://developers.facebook.com/docs/plugins/embedded-posts/</a>. The Embedded Posts plugin requires the URL of the Story, which must include not only the URL but also the ID of the post. To get the post URL and ID navigate to a Facebook post and click the date of the post, which is included immediately below the profile picture as shown below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4O27R2rJoRB9vKxnQAt0ajf3Qlf-w4LTtZGcJkuG6gmvLUCU_hAFosWvgB0WQAq9rmM9dqV_E_eiVzZwaEIEOrG7imX4zkhAYln-OEkvOvQIrv0iUIshrPYWsmp4ES7jaZOYbxP71yZ8/s1600/click_on_post.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="215" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4O27R2rJoRB9vKxnQAt0ajf3Qlf-w4LTtZGcJkuG6gmvLUCU_hAFosWvgB0WQAq9rmM9dqV_E_eiVzZwaEIEOrG7imX4zkhAYln-OEkvOvQIrv0iUIshrPYWsmp4ES7jaZOYbxP71yZ8/s320/click_on_post.png" width="320" /></a></div>
<br />
The post then appears on a page by itself. The complete URL is included in the address field, circled below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTOlk7dMmsrW9LS3ZDEU6hevFcs4iM3OTGRxTH_XogBewJuxhfqZ9895Z_St7St1RM7en1VEZpOXUFpcxU3sNdPoLFnGk2o553tRZaaS1rKlWeqOOHRwCQQBtWu9tVtoyQHarCrP1KeEM/s1600/urlpostid.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="202" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTOlk7dMmsrW9LS3ZDEU6hevFcs4iM3OTGRxTH_XogBewJuxhfqZ9895Z_St7St1RM7en1VEZpOXUFpcxU3sNdPoLFnGk2o553tRZaaS1rKlWeqOOHRwCQQBtWu9tVtoyQHarCrP1KeEM/s320/urlpostid.png" width="320" /></a></div>
<br />
Copy the entire URL and paste it into the URL of Story field. You can then click the Get Code button and follow the same steps used above to add the Like button to the website page.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZs97o8dRE8Uh6JxYQrzmRw6XfoZVff2DdV6Z4GTndwtAE5oE5o8W3cQvhHpMHYV_NmyPFVvGL8_jlcQ57o_OfgB1EmTyqv5QTo-VDhAXpLVc-2iYcMipbsqjQKycher36D8EAKb9xzxw/s1600/embedd_post_code.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="233" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZs97o8dRE8Uh6JxYQrzmRw6XfoZVff2DdV6Z4GTndwtAE5oE5o8W3cQvhHpMHYV_NmyPFVvGL8_jlcQ57o_OfgB1EmTyqv5QTo-VDhAXpLVc-2iYcMipbsqjQKycher36D8EAKb9xzxw/s320/embedd_post_code.png" width="320" /></a></div>
<br />
The embedded post now displays on the website so people can view the post and Like it.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh92pfpxyK2kcPpIFi-SKJv0QdphkdP9EfItVhbjhwPcQ8AT-_DWuXZ1muiYMtAI2m9LKH8eeIAsJ1nO_JNIuQOBC1XJkm-AcJEPo5UHv73tzML5GgEAYI-2AKiYMWXZZhG5B-wW70ypFY/s1600/embedded_code.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="289" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh92pfpxyK2kcPpIFi-SKJv0QdphkdP9EfItVhbjhwPcQ8AT-_DWuXZ1muiYMtAI2m9LKH8eeIAsJ1nO_JNIuQOBC1XJkm-AcJEPo5UHv73tzML5GgEAYI-2AKiYMWXZZhG5B-wW70ypFY/s320/embedded_code.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<br />
In our last example, we want to add the Comments plugin to our website so people can add comments using Facebook, Yahoo or other site. The Comments Box is located at <a href="https://developers.facebook.com/docs/reference/plugins/comments/" target="_blank">https://developers.facebook.com/docs/reference/plugins/comments/</a>. The Comments Box plugin works like the previous two plugins we discussed. Add the URL of the page you want people to comment on and adjust the other settings as desired. Then click the Get Code button.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNX4bOtp2RUaQYS7VXdflNPtUv7Rl4HIQnJs464nh8hkh7inoxAxtKUfExW-xPgRkya_BM9DAJCI7aJxeJ4w4U4ncWgOFBfWcV16yCRbCo8RcJt-AJ7I9X0LBrLgueHuCEBPiPS_AAjaI/s1600/comment_plugin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="167" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNX4bOtp2RUaQYS7VXdflNPtUv7Rl4HIQnJs464nh8hkh7inoxAxtKUfExW-xPgRkya_BM9DAJCI7aJxeJ4w4U4ncWgOFBfWcV16yCRbCo8RcJt-AJ7I9X0LBrLgueHuCEBPiPS_AAjaI/s320/comment_plugin.png" width="320" /></a></div>
<br />
When the Comment box is implemented it does not assume the person wants to be authenticated using Facebook. The user must select the site that will authenticate him/her.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjxnSI_C-SuC0efD_2hZ8jJjnL9IRusSmaMmeuI4_xiG9qMoYeO1L3Z7b49I-dI4NjQ7Q59tBWp5dDCuRGcvPx4wVypmHd1jbQDj1qo_rmeiYAqZVwEc7DPfM0vRuhpRtWepk3LsFPvOg/s1600/comments_implemented.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="245" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjxnSI_C-SuC0efD_2hZ8jJjnL9IRusSmaMmeuI4_xiG9qMoYeO1L3Z7b49I-dI4NjQ7Q59tBWp5dDCuRGcvPx4wVypmHd1jbQDj1qo_rmeiYAqZVwEc7DPfM0vRuhpRtWepk3LsFPvOg/s320/comments_implemented.png" width="320" /></a></div>
<br />
<br />
<br />
In the example below the user selected Facebook. The user is then prompted to log into Facebook so the site can collect information about the user.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyBdoWSYlOaOEi45De5xXrPK4vfT_KMHa8bkEfM9uMJpRLLT_2RHi1GaJFCGZWYLrFrfxNUCQNpFKLrSTF01IFyJnuDa-4-T-ArlCOOPxG7gwDY3c0V4FllWbn_7pNOv4iLIvZ1HF9wxo/s1600/comments_implemented2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="245" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyBdoWSYlOaOEi45De5xXrPK4vfT_KMHa8bkEfM9uMJpRLLT_2RHi1GaJFCGZWYLrFrfxNUCQNpFKLrSTF01IFyJnuDa-4-T-ArlCOOPxG7gwDY3c0V4FllWbn_7pNOv4iLIvZ1HF9wxo/s320/comments_implemented2.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
If the user adds a comment, the comment is added to the website. Other users can then reply to the user's comment, like the user's comment or add their own comments (as shown in the picture below). </div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDVl95XtShNZqVCNbvw0MDKpdobD3CYCI_WSdP_jIpMe3hmS2KVZScUhJeiW219YhAWVUZeSNwTIH3-9ogfy7tsfupS60h3WkNi06lUz0MAc43HIX4mQtOnFYJclnVzuGlBzzSAJbWaLg/s1600/comments_implemented3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="298" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDVl95XtShNZqVCNbvw0MDKpdobD3CYCI_WSdP_jIpMe3hmS2KVZScUhJeiW219YhAWVUZeSNwTIH3-9ogfy7tsfupS60h3WkNi06lUz0MAc43HIX4mQtOnFYJclnVzuGlBzzSAJbWaLg/s320/comments_implemented3.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br /></div>
Anonymoushttp://www.blogger.com/profile/11770164970801071498noreply@blogger.comtag:blogger.com,1999:blog-7793781044289546361.post-53955244488921312922013-09-24T23:07:00.005-07:002013-09-26T10:38:58.873-07:00How to Build Facebook Apps and Games for Android<div dir="ltr" style="text-align: left;" trbidi="on">
This article focuses on building Facebook apps and games for Android. For those of you already versed in Android programming; or, those of you who have started to learn Android programming you can learn to build Facebook apps to extend your skills and increase your marketability. This article provides you with an overview of application and game programming for Facebook. To get started with Android programming you may want to read my article titled <a href="http://bussystemanalysis.blogspot.com/2013/09/programming-mobile-apps-for-android.html" target="_blank">Programming Mobile Apps for Android With Eclipse</a>.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Create a Facebook Developer Account</span></h3>
<br />
<br />
If you don't have a Facebook account, you must create one to become a Facebook developer. You can then log into your Facebook account and visit the Facebook Developer home page <a href="https://developers.facebook.com/" target="_blank">https://developers.facebook.com/</a>. You will need to click the Register button and follow the Registration wizard steps that will walk you through "1. Accepting the terms", "2. Verifying your account", "3. Telling us about you" and "4. Building your integration", which is actually your Congratulations message because you can create an application to get started. (For more information you can refer to the documentation called: <a href="https://developers.facebook.com/docs/create-developer-account/" target="_blank">"How to Create a Facebook Developer Account"</a> .) <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEik6BiY-EeWDK-p1Wu04_L81v2tAL-MVWjA2F2gLCzRPH-BMukDG1nwoWVjJgUb79O7YnIJ6GvDev0-SCiLrRKsviCKHBkfNOIVQdECeUkDN22cvTlJ8PgJBCETFGZ1HqI0ncQH-5Q1HRc/s1600/register_now.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="299" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEik6BiY-EeWDK-p1Wu04_L81v2tAL-MVWjA2F2gLCzRPH-BMukDG1nwoWVjJgUb79O7YnIJ6GvDev0-SCiLrRKsviCKHBkfNOIVQdECeUkDN22cvTlJ8PgJBCETFGZ1HqI0ncQH-5Q1HRc/s1600/register_now.png" width="320" /></a></div>
<br />
<br />
Once you have created a Developer account you will be presented with the Facebook Dashboard, as shown below. You can then use the Create New App button to begin creating your Facebook app (as discussed later in this post).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOk_Jfv-umjg0fvq9JH3sMwZuFJ_nly42tukGnSiHtm5UNMMhLdIRusfkZW5iTkooA-Ifw5pYlAHzOcqsykneERF1IOJ9aODM-QP17C3ZEjZJJ1NRgWAJNFx0cDHAlPsfzezg-E0dPKII/s1600/developer_dashboard.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="241" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOk_Jfv-umjg0fvq9JH3sMwZuFJ_nly42tukGnSiHtm5UNMMhLdIRusfkZW5iTkooA-Ifw5pYlAHzOcqsykneERF1IOJ9aODM-QP17C3ZEjZJJ1NRgWAJNFx0cDHAlPsfzezg-E0dPKII/s1600/developer_dashboard.png" width="320" /></a></div>
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Facebook Software Development Kits </span></h3>
<br />
Facebook provides a number of software development kits (SDK's). Developers can download the SDK that corresponds with the type of applications and/or games developers want to create. Following is a list of the available SDKs used to build Facebook apps and games for mobile devices or the web:<br />
<ul style="text-align: left;">
<li><a href="https://developers.facebook.com/docs/android/" target="_blank"><span style="color: #0b5394;"><b>Facebook SDK for Android</b></span></a> - Developers can install this SDK to use Eclipse to build Facebook apps and games for Android.</li>
<li><a href="https://developers.facebook.com/docs/javascript/gettingstarted/" target="_blank"><b><span style="color: #0b5394;">Facebook SDK for JavaScript</span></b></a> - Developers can install this SDK to build Facebook web-based apps and games for desktops and mobile devices. (For information on the difference between a mobile app and a mobile web app see my article titled <a href="http://bussystemanalysis.blogspot.com/2013/08/mobile-software-programming-designing.html" target="_blank">Mobile Software Programming: Designing & Building Mobile Apps (Android)</a>.)</li>
<li>Facebook SDK for PHP - Developers can install this SDK to build web-based Facebook apps and games for desktops and mobile devices using PHP.</li>
<li><a href="https://developers.facebook.com/docs/ios/" target="_blank">Facebook SDK for iOS</a> - Developers can install this SDK to build Facebook apps and games for the iPhone, iPad and iPod.</li>
</ul>
To build Facebook application you will download and install the Facebook SDK for Android.<br />
<br />
<ul style="text-align: left;">
</ul>
<h4 style="text-align: left;">
<span style="color: #0b5394;">Facebook SDK for Android</span></h4>
<br />
If you haven't configured your development environment to build Android apps you will want to see my article titled <a href="http://bussystemanalysis.blogspot.com/2013/08/mobile-software-programming-designing.html" target="_blank">Mobile Software Programming: Designing & Building Mobile Apps (Android)</a> to get started. You can then read the article <a href="http://bussystemanalysis.blogspot.com/2013/09/programming-mobile-apps-for-android.html" target="_blank">Programming Mobile Apps for Android With Eclipse</a>) before performing the steps outlined in this article. To build Facebook apps or games you must have an environment capable of building Android apps. You can then install the Facebook SDK for Android to get started. The Facebook SDK for Android includes sample code for apps so developers have examples that show how to properly code and design for Facebook as well as use Facebook authentication. And, the Facebook website has tutorials and provides links to working samples.<br />
<br />
Once you have configured Eclipse to build Android apps you are ready to further configure your environment to build Facebook apps and games. The remainder of this article will outline how to create an emulator that can run Facebook (so you can test your apps and games), how to use a real Android to run your apps and games, how to import the SDK and samples into Eclipse and how to find sample code and tutorials so you can learn from existing projects.<br />
<br />
<span style="color: #0b5394;"><i><b>Download & Extract the Facebook SDK for Android</b></i></span>
<br />
<br />
The Facebook SDK for Android includes sample apps and the FBAndroid-3.5.apk file, which you can install on an emulator to test your Facebook apps. To use an emulator you will need to install the Android 2.2 (API 8) package, create and start the emulator and install the FBAndroid-3.5.apk onto the emulator as discussed below.<br />
<br />
You can download the Facebook SDK for Android by visiting<a href="https://developers.facebook.com/docs/android/" target="_blank"> https://developers.facebook.com/docs/android/</a>. <br />
<br />
<span style="color: #0b5394;"><i><b>Install Android 2.2 (API 8)</b></i></span><br />
<br />
To test your Facebook application using an Android Virtual Device you will need to install the Android 2.2 (API 8). To do this from within Eclipse select Window -> Android SDK Manager (alternatively you can access the SDK Manager by locating and clicking the SDK Manager.exe file on your computer). When the Android SDK Manager displays select the Android 2.2 (API 8) options, as shown in the following picture. Then click the button to install the packages.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvMeasNlgp1IFgpG9jUB7gO1JpJkF5fpz5mU_q3TRmLo4ZWQ4stHInIXWkWcz8-b3tvFcs7-zLEBUYW1_ZvVA4EYaGUfk6Pri72kqgIWmI-QTzRTQVlKgV18iwGKG5FY8zh5a7LwWvGxE/s1600/androidSDKManager.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="229" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvMeasNlgp1IFgpG9jUB7gO1JpJkF5fpz5mU_q3TRmLo4ZWQ4stHInIXWkWcz8-b3tvFcs7-zLEBUYW1_ZvVA4EYaGUfk6Pri72kqgIWmI-QTzRTQVlKgV18iwGKG5FY8zh5a7LwWvGxE/s320/androidSDKManager.png" width="320" /></a></div>
<br />
<br />
<span style="color: #0b5394;"><i><b>Create and Start the Android Virtual Device</b></i></span><br />
<br />
Once you have installed the Android 2.2 (API 8) you can create an emulator device that uses the Android 2.2 (API 8) as the target so you can run the Facebook samples.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhD1m51tqcj5GcsAxOVB-2JJW8sZSF8JQzuF4ur8v8NFDIOIH5d7pTy-RqwoFSgA5we8kcaUJWAEzmFtW8aasubeGRTprHYk5Q9vxhdN1f4bOJsNykQBjTjPFNm5SlRm1hYBHrBhNbL_Fg/s1600/virtual_device.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhD1m51tqcj5GcsAxOVB-2JJW8sZSF8JQzuF4ur8v8NFDIOIH5d7pTy-RqwoFSgA5we8kcaUJWAEzmFtW8aasubeGRTprHYk5Q9vxhdN1f4bOJsNykQBjTjPFNm5SlRm1hYBHrBhNbL_Fg/s320/virtual_device.png" width="210" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
Once you have created the emulator you can start the emulator. The emulator must be running to install the FBAndroid-3.5.apk file.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRQ6Bnx7lesVDHUraIu3qnSnSuj0GWOV1BbZTcjAFj5prLOaKGcZh0OdgE6F1-rUNR5hmY-8v0_pwHd702XUzjAKZzL6kPlsG04nmsAEjYKsx-v_de6vzmqhb6k7nohwL4_3Guz_AcHCs/s1600/start_the_emulator.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="205" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRQ6Bnx7lesVDHUraIu3qnSnSuj0GWOV1BbZTcjAFj5prLOaKGcZh0OdgE6F1-rUNR5hmY-8v0_pwHd702XUzjAKZzL6kPlsG04nmsAEjYKsx-v_de6vzmqhb6k7nohwL4_3Guz_AcHCs/s320/start_the_emulator.png" width="320" /></a></div>
<br />
<br />
<span style="color: #0b5394;"><i><b>Install Facebook on the Android Virtual Device</b></i></span>
<br />
<br />
Once the emulator is running you can use the adb.exe file, which was installed when you installed the <a href="http://developer.android.com/sdk/index.html" target="_blank">Android SDK</a>.The adb.exe is the <a href="http://developer.android.com/tools/help/adb.html" target="_blank">Android Debug Bridge</a>, which is a command-line tool used to communicate with an instance of an emulator or Android devices that are connected to computer running the development environment. If you are a Windows user you will need to launch the Command window (as shown below). (Note that Macintosh users will want to launch the Terminal window in Utilities.)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrGO_PZMZ1XX2Hqer4YOXcMckoM6nR6EREoqh1MlZPz7Lai96Bc7c2ZH9wV3SsE6KS4tP0bD1tKERGJL-hIxsD7I_eSH8H_XLGRFEi2JqGlRLvykS5LdE-uRH6OxYrBknOrK9GaKzWtYA/s1600/command_prompt_window.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrGO_PZMZ1XX2Hqer4YOXcMckoM6nR6EREoqh1MlZPz7Lai96Bc7c2ZH9wV3SsE6KS4tP0bD1tKERGJL-hIxsD7I_eSH8H_XLGRFEi2JqGlRLvykS5LdE-uRH6OxYrBknOrK9GaKzWtYA/s320/command_prompt_window.png" width="257" /></a></div>
<br />
You will need to change to the directory that has the adb.exe file, which is the <i><b>sdk\platform-tools</b></i> folder created when you installed the <a href="http://developer.android.com/sdk/index.html" target="_blank">Android SDK</a>. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgu2jSgsjfnmsRWjRpya0DesRqbtG3e3CTCNjODi7UYSYs_jh9Xwl6vGbBEquUfyYGhF_C8-dHyPB9occwxFzK8tgEpysr3LzO3twhPIulgvIpnRQqdIqdDCyM8K8ides0K229NyOqD7bw/s1600/installSDK.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="140" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgu2jSgsjfnmsRWjRpya0DesRqbtG3e3CTCNjODi7UYSYs_jh9Xwl6vGbBEquUfyYGhF_C8-dHyPB9occwxFzK8tgEpysr3LzO3twhPIulgvIpnRQqdIqdDCyM8K8ides0K229NyOqD7bw/s400/installSDK.png" width="400" /></a></div>
<br />
<br />
After you have installed the FBAndroid-3.5.apk file you will notice the emulator can be used to access Facebook.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhimd-Of6FC2zPlJu0LFrEsYWpOxLcrJVd7ngIfWzGh0EeAzVzLh0xWUxuntIb_XZZtOZymQIa1a4N8bcZHZE1lCn1_RcIc43Fawpu4kxxCruyjMZSLrs2Bq20RnHtDiPzgGd_YVORP7rU/s1600/emulator_with_facebook.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhimd-Of6FC2zPlJu0LFrEsYWpOxLcrJVd7ngIfWzGh0EeAzVzLh0xWUxuntIb_XZZtOZymQIa1a4N8bcZHZE1lCn1_RcIc43Fawpu4kxxCruyjMZSLrs2Bq20RnHtDiPzgGd_YVORP7rU/s320/emulator_with_facebook.png" width="170" /></a></div>
<br />
If you plan to use a real Android device to test your apps you can
download the Facebook app onto your Android device, if you haven't done
so already. Whether you use an emulator or real Android device you will be able to run the Facebook SDK samples after you have imported the
Facebook SDK into Eclipse.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Using the Facebook SDK & Samples in Eclipse</span></h3>
<br />
To setup Eclipse to use the Facebook SDK and import the samples you must import the Facebook SDK folder into Eclipse. This section provides an overview on how to import the Facebook SDK. However, before importing the Facebook SDK you will want to create a new workspace for the Facebook samples.<br />
<br />
To import the Facebook SDK and sample apps select File -> Import from the Eclipse menu. Then select <b><i>Existing Projects Into Workspace</i></b> and click Next.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfG28wTAc-59hNtr1T2pYlH2IbCbAUGxIcFV-Y7YQuFa0StMcEF44SlWKFohCWAh76hWmA_wqox8GifzKK0MAEMOhz5gz0ugQFoGVrhiQNA26rMxV69muS0qBBM4YfQI-BFcoxXJm7tyA/s1600/import_existing_project.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfG28wTAc-59hNtr1T2pYlH2IbCbAUGxIcFV-Y7YQuFa0StMcEF44SlWKFohCWAh76hWmA_wqox8GifzKK0MAEMOhz5gz0ugQFoGVrhiQNA26rMxV69muS0qBBM4YfQI-BFcoxXJm7tyA/s400/import_existing_project.png" width="340" /></a></div>
<br />
Browse to the location that contains the extracted Facebook SDK for Android folder. Select the Facebook-android-sdk-3.5 folder and click Next. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUoDYQkJUOch20HG_F3JTeNQRwKoBGHHoDnc2KoOCuSz6ynh_cxWcA33I22LWGDFFekN2SYXFrbI9eLfJi-p6BNbCat6OlQgSBcRb6bZDY5TC3jpQ5oVb6FxNcvI-so0xC3mU3EYIJ3xE/s1600/select_facebook_sdk.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUoDYQkJUOch20HG_F3JTeNQRwKoBGHHoDnc2KoOCuSz6ynh_cxWcA33I22LWGDFFekN2SYXFrbI9eLfJi-p6BNbCat6OlQgSBcRb6bZDY5TC3jpQ5oVb6FxNcvI-so0xC3mU3EYIJ3xE/s400/select_facebook_sdk.png" width="341" /></a></div>
<br />
<br />
A window displays a list of all the projects to be imported into
Eclipse. This window has a "Copy projects into workspace" option, which
should be left unselected. Click the "Select All" button to select the
Facebook SDK and all projects; next, click Finish. The projects are all imported into Eclipse. You can now run the sample apps and view the code.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpJC0BjKy37ltfhIqi5uJRY8p_x-9B2MoyofYTYskXCJIXpxOXsvIuxeeEHP-B8O0drjyJc6Am47zLVN1hjkdU2_H8yCNAUw1rUSp23y6S4Ch6V6xnUi7ivMUo4g30siqYJPpmcT1pOjs/s1600/Java_explorer.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="277" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpJC0BjKy37ltfhIqi5uJRY8p_x-9B2MoyofYTYskXCJIXpxOXsvIuxeeEHP-B8O0drjyJc6Am47zLVN1hjkdU2_H8yCNAUw1rUSp23y6S4Ch6V6xnUi7ivMUo4g30siqYJPpmcT1pOjs/s320/Java_explorer.png" width="320" /></a></div>
<br />
To select a target device; or, have Eclipse prompt you for a device you can select Run -> Run Configurations. The Android tab lets you select the project for which you want to select a device; or, have Eclipse prompt you for a device.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo-k6Xkiok-qDhCsaIxk6rjcBQ_MHJAgA_k-CwtQX_pVEMnzTu0Q7zuDkiKbZLcWozNDyZqQDGfi4JkNAJ-cQIVdXcsodPQQVjYAk1zrlecw6GEmim56qhmBaaEU81he7W8jBnRnoxVRw/s1600/select-the-application.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="321" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo-k6Xkiok-qDhCsaIxk6rjcBQ_MHJAgA_k-CwtQX_pVEMnzTu0Q7zuDkiKbZLcWozNDyZqQDGfi4JkNAJ-cQIVdXcsodPQQVjYAk1zrlecw6GEmim56qhmBaaEU81he7W8jBnRnoxVRw/s400/select-the-application.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
After you have selected a project, click the Target tab and select the applicable option. In the following example, the "Always Prompt for a Device" option was selected so Eclipse will always ask the developer what device the project is to run on. Alternatively, you can select the Android emulator running the API 8 package.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZE0cfrZ65jKV7sNB9yMTq4YREK6PY1cg6rNv77EGrjvhYZGjRwe_BJHiCm3SYDnEU3B-I6_ITpFKmJP5NQL_y54apHLwDJdTrJKOyI6Y9Ek3EM2Ra5nk4oUoXilrMEC2GLXUSh8FQfJY/s1600/run_configurations.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="322" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZE0cfrZ65jKV7sNB9yMTq4YREK6PY1cg6rNv77EGrjvhYZGjRwe_BJHiCm3SYDnEU3B-I6_ITpFKmJP5NQL_y54apHLwDJdTrJKOyI6Y9Ek3EM2Ra5nk4oUoXilrMEC2GLXUSh8FQfJY/s400/run_configurations.png" width="400" /></a></div>
<br />
<br />
If the sample projects show any errors you can clean the projects by selecting <i><b>Project -> Clean</b></i> from within Eclipse. You can read more on getting started with the Facebook SDK for Android by visiting <a href="https://developers.facebook.com/docs/android/getting-started/facebook-sdk-for-android/" target="_blank">https://developers.facebook.com/docs/android/getting-started/facebook-sdk-for-android/</a>.<br />
<br />
If you want to run the samples using an emulator device be sure to start the emulator and make sure it is properly running before running the application. If you intend to use an Android device make sure the device is connected and that you have configured the Developer options (for more information see <a href="http://bussystemanalysis.blogspot.com/2013/09/programming-mobile-apps-for-android.html" target="_blank">Programming Mobile Apps for Android With Eclipse</a>).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiznfAIlo-ZcKra-PzWIP8i2A1JAQnxt85nrLZmDazGf5UHC5lp-Vf8dvBoPGlHFhV10hiBBeE-GkteSLseX3AQ0YkzDtVgdFAvHWJXqEGQWRoVox4sK6Q8rFGaDzMD6hkGHef5jAMEUfY/s1600/2013-09-23+22.13.56.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiznfAIlo-ZcKra-PzWIP8i2A1JAQnxt85nrLZmDazGf5UHC5lp-Vf8dvBoPGlHFhV10hiBBeE-GkteSLseX3AQ0YkzDtVgdFAvHWJXqEGQWRoVox4sK6Q8rFGaDzMD6hkGHef5jAMEUfY/s320/2013-09-23+22.13.56.png" width="192" /></a></div>
<br />
Note that you run the Facebook apps for Android the same way you run any other Android app (i.e., Run As -> Android Application).<br />
<br />
In addition to code samples, Facebook provides a number of tutorials that will walk you through building Facebook applications for Android. When you are ready to start learning you can visit <a href="https://developers.facebook.com/docs/android/scrumptious/">https://developers.facebook.com/docs/android/scrumptious/</a> . This series of tutorials will teach you how to add Facebook login to your app, personalize an app by displaying the user's Facebook profile picture and name, retrieve and display a user's friends, add a user's location and and publish an <a href="https://developers.facebook.com/docs/opengraph/overview/" target="_blank">Open Graph Story</a>.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Creating a Facebook App Details Page</span></h3>
<br />
Prior to using Eclipse to create a Facebook application you will want to create the application settings in Facebook. To do this, navigate to Developer Dashboard and click the Create New App button. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinpAMP4jUlXbMRyUIBSFMlMFDeoTciergAS8vsSWpUKfmrY1zLVT_vuZYmBndBwyJcEheC-xSlXDqkBY5DleKuTg4V5ea1kquV5JXbpJk31UnXgKawbMBvXFP9Wio3YFGE60OZrFhMpEs/s1600/developer_dashboard.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinpAMP4jUlXbMRyUIBSFMlMFDeoTciergAS8vsSWpUKfmrY1zLVT_vuZYmBndBwyJcEheC-xSlXDqkBY5DleKuTg4V5ea1kquV5JXbpJk31UnXgKawbMBvXFP9Wio3YFGE60OZrFhMpEs/s400/developer_dashboard.png" width="400" /></a></div>
<br />
The Create New App window displays so you can specify the name for your application, a unique App namespace and a category for your application.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJKnykCimN1BgM-K93bB9LHeWUE8cNADHF7fOkqOny19lrkP6El_tYArqF7WZLhyu2Evr6oYdU74IMfIL-4WudNJn8LOHsbWMGsEUDM1-4bDBLcAVIlTe1Yh76pB3U1xBX7079cnVmxP8/s1600/create_new_app.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="128" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJKnykCimN1BgM-K93bB9LHeWUE8cNADHF7fOkqOny19lrkP6El_tYArqF7WZLhyu2Evr6oYdU74IMfIL-4WudNJn8LOHsbWMGsEUDM1-4bDBLcAVIlTe1Yh76pB3U1xBX7079cnVmxP8/s320/create_new_app.png" width="320" /></a></div>
When you click the Continue button Facebook assigns your application an App ID. This is the value you will add to the strings.xml file in the res -> values folder in Eclipse (as shown in the following picture).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhG0ympwx_KYufo0wBHcmaWRQt3_im2uMEWXDteG5njhIMIg_jxxAdygVLvZXhYxCGGqFO8ue4BF4YhZVNjaRWV7S4_10JHVbCg-CORfChkLTKgD1ZVHj6LdVMBYoUjfSZhOG9P5CDUkJo/s1600/app_ID.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="276" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhG0ympwx_KYufo0wBHcmaWRQt3_im2uMEWXDteG5njhIMIg_jxxAdygVLvZXhYxCGGqFO8ue4BF4YhZVNjaRWV7S4_10JHVbCg-CORfChkLTKgD1ZVHj6LdVMBYoUjfSZhOG9P5CDUkJo/s320/app_ID.png" width="320" /></a></div>
<br />
<br />
As shown in the following picture your app is automatically placed in Sandbox mode, which means only administrators, developers and testers can see it. If you disable Sandbox mode your application is moved to a "live" state, which means everyone can see it. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizS07EuM1h4evEZV470_3UhxFtJEObl_9LknXgOSmUcHallog9hINdM7WJG37Dv8bQJG6BWnbEBS4-CNARQXs65daP8NvG89uUI_aHMyVRGD40-NyoTc05wJV9CxL0fDy-2O3CGfFVdSM/s1600/create_new_app3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="186" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizS07EuM1h4evEZV470_3UhxFtJEObl_9LknXgOSmUcHallog9hINdM7WJG37Dv8bQJG6BWnbEBS4-CNARQXs65daP8NvG89uUI_aHMyVRGD40-NyoTc05wJV9CxL0fDy-2O3CGfFVdSM/s320/create_new_app3.png" width="320" /></a> </div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
Notice a left menu becomes available. The menu includes additional options that enable you to enter all of the information required for your application including the App Details (for additional information visit <a href="https://developers.facebook.com/docs/guides/appcenter/#creating" target="_blank">https://developers.facebook.com/docs/guides/appcenter/#creating</a>). You can also create the <a href="https://developers.facebook.com/docs/opengraph/overview/" target="_blank">Open Graph</a> for your application. If you use Facebook you have most likely seen an Open Graph for other products. The main page collects additional information about your application. One of the fields you will complete is <i><b>Key Hashes</b></i>. This field enables you to register the app's hash key with Facebook. If more than one hash key will be used (i.e., a hash key for debugging and one for production); both keys can be added to the field.<br />
<br />
To generate the key you will use the keystore.exe tool that was added to your computer when you installed the Java Development Kit (JDK). Also, when you installed the Android SDK a debug.keystore file was
added to your computer. The keystore.exe is also a command-line tool so you will need to use the command window (Windows users) or the terminal window (Macintosh users) to execute the commands needed to retrieve the hash key.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi178JqThyKroDuRq8qFmeUdOrhqsgKbny_WXA-YFORuL6bCr2ATpJFtRFLFD-9-yCjiiNret3_3TXmLDxonG08P1k3sqiBKLuWHy_g5IoLewP2qZn1pLsJpNZJCye9C811uUY9DIDwDNU/s1600/keystore.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="218" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi178JqThyKroDuRq8qFmeUdOrhqsgKbny_WXA-YFORuL6bCr2ATpJFtRFLFD-9-yCjiiNret3_3TXmLDxonG08P1k3sqiBKLuWHy_g5IoLewP2qZn1pLsJpNZJCye9C811uUY9DIDwDNU/s400/keystore.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
If necessary, you can use your computer's search feature to
find these files. For more information on the keystore.exe tool and the debug.keystore file you can see my previous article titled <a href="http://bussystemanalysis.blogspot.com/2013/09/get-started-with-kindle-fire.html" target="_blank">Get Started With Kindle Fire Programming: Apps & Games</a> and you can see <a href="http://computer.howstuffworks.com/encryption5.htm" target="_blank">Hashing Algorithm (How Stuff Works)</a>.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">The Games People Play (Using Android to Build Facebook Games)</span></h3>
<br />
Nearly everyone I know "FREQUENTLY" plays games on Facebook. Daily I receive numerous invitations to play a game on Facebook. And, while I'm not a big Facebook gamer I can vouch for many people who are. So, building Facebook games for Android is no doubt a great skill to acquire. The thing I like most about Facebook's game tutorials is that you can learn to build a game not only for Android; but also for the web and the iPhone, which is pretty cool because it enables you build a game that can reach a broader audience if you want to. And, with Facebook the audience is already in place all you have to do is market to them.<br />
<br />
To get you started with building Android games for Facebook, the Facebook tutorial teaches you to build a game called Friend Smash, which requires Android 3.0 and higher. To prepare my environment to run the game I used Android 4.3 (API 18), which was already installed on my environment. If you need to download it you can do so using the SDK Manager.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2_rsht4yzvJtCsG7Jm8nT8If33d8eFgyTackQ9Up-Ux3RTUWZuOMG3lATBCVAcJNs2RVlZrvFtZCt2OmgODKFmKFHunrs8l6SZZ-gOFR4xnti3TaZownTvSpswjkSW752NJyNLcg3RSs/s1600/SDK_4_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="270" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2_rsht4yzvJtCsG7Jm8nT8If33d8eFgyTackQ9Up-Ux3RTUWZuOMG3lATBCVAcJNs2RVlZrvFtZCt2OmgODKFmKFHunrs8l6SZZ-gOFR4xnti3TaZownTvSpswjkSW752NJyNLcg3RSs/s1600/SDK_4_3.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
I then created an emulator using Android 4.3 as the Target. I then started the device and installed the Facebook SDK onto this device (using the instructions in the section above titled <i>Install the Facebook on the Android Virtual Device</i>) so I could run the game.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9hQtIFX8owdGe6E3J1hr6NmJxc_XK23x-RZ6bbCSObek6jiHA-OBaytrn6LKf5o5zVKiFK9qQP8aHOgsPctMuuGu760AjFpUpHw6fTywgboayHmgXpsaxOQbFfCl5JloOkEoxXqfy0KI/s1600/API18.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9hQtIFX8owdGe6E3J1hr6NmJxc_XK23x-RZ6bbCSObek6jiHA-OBaytrn6LKf5o5zVKiFK9qQP8aHOgsPctMuuGu760AjFpUpHw6fTywgboayHmgXpsaxOQbFfCl5JloOkEoxXqfy0KI/s1600/API18.png" width="213" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYDSrZdsJ9avQnO_Fc26kn3CVRMhDyix3Uyx6VrNbrdPx9_ROS9_vlvKbevCN7WybG9QYBS4Cw-Ue1_VhroHGmomRu4b3nZEnjbSEFYCol55f6baJCspE7ZGXYjrhqxwi-ioC46dqTDLM/s1600/API_16.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<br />
You can then clone the Friend Smash repository from GitHub.com at <a href="https://github.com/fbsamples/android-friend-smash" target="_blank">https://github.com/fbsamples/android-friend-smash</a>. (You can gain access to an online published book and additional Git resource by accessing my previous article titled <a href="http://bussystemanalysis.blogspot.com/2013/09/programming-mobile-apps-for-android.html" target="_blank">Programming Mobile Apps for Android With Eclipse</a>.)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7OTHV0xRC60HjXBjGeGk6AwQDXtoP6dLEeE1LKehKcjKshSp-1gOukJbyrO3_81YiSWSFCF0-WT7x4jgxVugGI_AbfFnHk32A5IdbX2rUdEcmkoSBxuaCEs-4rcDl9gSIevWAC9_YL_s/s1600/GitHub.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="137" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7OTHV0xRC60HjXBjGeGk6AwQDXtoP6dLEeE1LKehKcjKshSp-1gOukJbyrO3_81YiSWSFCF0-WT7x4jgxVugGI_AbfFnHk32A5IdbX2rUdEcmkoSBxuaCEs-4rcDl9gSIevWAC9_YL_s/s320/GitHub.png" width="320" /></a></div>
<br />
OR, you can download the zipped file and extract the files into a folder you create on your computer.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKo7Rd5LAOuS-qM-ojTug3Wbrc0cMa5fncTdfsZwPIfZFqHiz-AipbdmkRXXNGfZehdoOY69r-N_LQk0_U7S9ZWgTrEp_pptDefreY3nOe23Q6COJZQpVTUsxgc-k1ZZje1ufcCVZbn7Q/s1600/download_zip_file.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="268" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKo7Rd5LAOuS-qM-ojTug3Wbrc0cMa5fncTdfsZwPIfZFqHiz-AipbdmkRXXNGfZehdoOY69r-N_LQk0_U7S9ZWgTrEp_pptDefreY3nOe23Q6COJZQpVTUsxgc-k1ZZje1ufcCVZbn7Q/s1600/download_zip_file.png" width="320" /></a></div>
<br />
<br />
Once you have the files on your computer you can import the projects using the same steps discussed above to import the Facebook SDK and sample projects. Once you complete those steps you can configure the game to use the device you created and then run the game.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOBdrXjq2FDOY7jfxBKibbuujffpzwVQLUE7OhltkohQkN2qPDXADy7Cf8K56IFCWQ3CYl4_d-6L-rIOCMScEmizUI-PJmxq9hk4pn1HNamZXIWn-4xyiKVvGUjbcXU2O4xUG7fXQwj8g/s1600/friendsmash2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOBdrXjq2FDOY7jfxBKibbuujffpzwVQLUE7OhltkohQkN2qPDXADy7Cf8K56IFCWQ3CYl4_d-6L-rIOCMScEmizUI-PJmxq9hk4pn1HNamZXIWn-4xyiKVvGUjbcXU2O4xUG7fXQwj8g/s1600/friendsmash2.png" width="318" /></a></div>
<br />
You can follow the Friend Smash game tutorial for Android by visiting <a href="https://developers.facebook.com/docs/android/games/" target="_blank">https://developers.facebook.com/docs/android/games/</a>. <br />
<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Beta Tier Testing </span></h3>
<br />
Facebook publishes major code changes every Tuesday; and, it publishes the push schedule for code changes as well as fixes made throughout the week. The Beta Tier and Testing documentation provides additional information on regression testing your applications. Regression testing is done to determine whether or not code changes or fixes impact your application(s); and, if so you can make the necessary updates. For more information visit <a href="https://developers.facebook.com/docs/support/beta-tier/" target="_blank">https://developers.facebook.com/docs/support/beta-tier/</a>.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Related Articles</span></h3>
<br />
See also <a href="http://bussystemanalysis.blogspot.com/2013/09/get-started-with-kindle-fire.html" target="_blank">Get Started With Kindle Fire Programming: Apps & Games</a>, which is an article that tells you how to configure Eclipse and Android programming to build Kindle Fire applications and games.</div>
Anonymoushttp://www.blogger.com/profile/11770164970801071498noreply@blogger.comtag:blogger.com,1999:blog-7793781044289546361.post-13052950925128879062013-09-14T01:27:00.003-07:002013-09-14T09:28:51.735-07:00Get Started With Kindle Fire Programming: Apps & Games<div dir="ltr" style="text-align: left;" trbidi="on">
You may be wondering whether it's worth your time to learn about Kindle programming. If so, you can consider two things: 1. If you have learned (or are going to learn) <a href="http://bussystemanalysis.blogspot.com/2013/08/mobile-software-programming-designing.html" target="_blank">Android mobile app</a> programming you are (or will be) well on your way to programming for Kindle. 2. While hundreds of iPhone and Android customers have taken time to add comments, on Amazon, for their devices--over 17,000 customers have taken time to pledge their allegiance and declare their love for Kindle. This means, there are a lot of customers out on the lookout for new apps or games to install on their beloved Kindle. So, if you want to learn Kindle programming basics this article will help you get started. <br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Introducing Amazon Kindle</span></h3>
<br />
Amazon Kindles fall into two categories: <i><b>Kindle E-readers</b></i> and <i><b>Kindle Fire Tablets</b></i>. Kindle E-readers include the Kindle Paperwhite 3G, the Kindle and the Kindle DX devices. The E-readers enable users to download and access digital books, audio books and magazines. <br />
<br />
Kindle Fire Tablets include the Kindle Fire HD 8.9 Tablet (and 8.9 4.G Tablet), the Kindle Fire HD Tablet and the Kindle Fire Tablet. The Tablets are designed to give customers a broader range of capabilities including stereo speakers for virtual surround sound, faster downloading and streaming speed. And, most importantly, customers can use their Tablets to enjoy movies, TV shows, music, magazines, digital books, audiobooks, games and apps-- including popular social networking apps such as Facebook and Twitter. This article focuses on programming for Kindle Fire devices.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Getting Started</span></h3>
<br />
To get started with Amazon Kindle application or game development developers must set up the Android Development Environment for Eclipse. For more information on setting up Eclipse see the article titled, "<a href="http://bussystemanalysis.blogspot.com/2013/08/mobile-software-programming-designing.html" target="_blank">Mobile Software Programming: Designing & Building Mobile Apps (Android).</a>" Once the Eclipse development environment is ready to develop Android apps; it's a good idea to create an Android app to verify that the development environment is set up properly. This way as you configure the development environment to code and run Kindle Fire apps you can narrow down troubleshooting problems.<br />
<br />
Once your development environment runs an Android app without errors you can then setup your environment to build and deploy Kindle Fire apps and games. To begin setting up Eclipse to build Kindle Fire apps or games you will need to visit the following location to download the Amazon Mobile SDK: <a href="https://developer.amazon.com/sdk.html" target="_blank">https://developer.amazon.com/sdk.html</a>. When you click the Download SDK button you will be prompted to download the <i>apps-SDK.zip</i> file. If you scroll down the page you will notice this page also provides an overview for each API included in the SDK. You can navigate to the following link to learn how to install the SDK: <a href="https://developer.amazon.com/sdk/fire/eclipse-plugin.html" target="_blank">https://developer.amazon.com/sdk/fire/eclipse-plugin.html </a>.<br />
<br />
<h4 style="text-align: left;">
<span style="color: #0b5394;">Amazon Mobile SDK</span></h4>
<br />
When you install the Amazon Mobile SDK, Amazon JAR files, API documentation and other files are added to your computer. Note that as you step through the Amazon Mobile SDK installation process you will see a screen similar to the one below; however, the top-level list items are collapsed so the child items are not visible. You will select the Accept License option button on the bottom right.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLqV4MxJW0V56nO-EYBGnxnQ6_R1vygfxfHERccLp0FynXrTHB-wh_boMD3LmtvqAodl8uH2BxfhP3nEFPpR8CwwVgZvWTSiEzkA0rkl7BL-CwQL2IBpzA0hjx1UnH1kengUFsJf9A-IY/s1600/license_use1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLqV4MxJW0V56nO-EYBGnxnQ6_R1vygfxfHERccLp0FynXrTHB-wh_boMD3LmtvqAodl8uH2BxfhP3nEFPpR8CwwVgZvWTSiEzkA0rkl7BL-CwQL2IBpzA0hjx1UnH1kengUFsJf9A-IY/s1600/license_use1.png" height="204" width="320" /></a></div>
<br />
<br />
To accept the "license use" for the child items, you will need to expand the top-level (or parent) item to view the child items. You can then use the Accept option button that becomes enabled on the bottom left. (Hopefully this tidbit will save you a bit of frustration that would come from assuming the "Accept License" option button on the right lets you accept license use for both parent and child items.)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjkqfEpnsCG6N5CPt7vWHU16PovMrJNYTVJqKZDvCk1MBTYGckab8SL0u1DQYCrejSQuOQFVh04iajmi_e_EI9vsDxWUzNSCVvidadnTzXZ6nwsv_twcUSimcbITDJTIyN6sRGqPdHvEY/s1600/license_use.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjkqfEpnsCG6N5CPt7vWHU16PovMrJNYTVJqKZDvCk1MBTYGckab8SL0u1DQYCrejSQuOQFVh04iajmi_e_EI9vsDxWUzNSCVvidadnTzXZ6nwsv_twcUSimcbITDJTIyN6sRGqPdHvEY/s1600/license_use.png" height="204" width="320" /></a></div>
<br />
<br />
The SDK API files and folder structure is discussed on the following page: <a href="https://developer.amazon.com/sdk/thank-you.html" target="_blank">https://developer.amazon.com/sdk/thank-you.html</a>. When you install the Amazon Mobile SDK (see the section titled Installing SDK Add-Ons at <a href="https://developer.amazon.com/sdk/fire/setup.html" target="_blank">https://developer.amazon.com/sdk/fire/setup.html</a>) folders and files are installed in the <i>extras</i> folder in the Android SDK folder (the following picture shows the <i>extras</i> folder in the Android SDK - ADT Bundle for Windows folder).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDGbz6VHkvq5-SOQRpoeCQ1YuUtdwR9lpXWS8QM6yW52iYtVx41wsYisL-d7yDzA2rA3Rhtii4Z44Cg2lGg0T143wSj2EjrJ0Jij_K8ALdJNJM6Z8crGPSqLswGPbg0Snamx9-4hfzzGE/s1600/extras_folders.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDGbz6VHkvq5-SOQRpoeCQ1YuUtdwR9lpXWS8QM6yW52iYtVx41wsYisL-d7yDzA2rA3Rhtii4Z44Cg2lGg0T143wSj2EjrJ0Jij_K8ALdJNJM6Z8crGPSqLswGPbg0Snamx9-4hfzzGE/s1600/extras_folders.png" /> </a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The amazon folder (added to the extras folder) includes two folders: <i>DeviceProfiles</i> and <i>kindle_fire_usb_driver</i>. The <i>DeviceProfiles</i> folder includes the devices.xml file, which includes definitions for the Kindle Fire virtual devices (a portion of the devices.xml file is shown below).</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZ1iziCy0PzOjRjQkiEDaMQGIYHYAZky9iw70E4OF4hCjwB00578wwZP83PRY7pfudAkAXftap7MItCK7hJJ1yDFiLXXmMZGEnrygBP1ADs_qwx7IKGanaVHGR9MzFphWH0k4BoqgkDS4/s1600/device_xml_profiles.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZ1iziCy0PzOjRjQkiEDaMQGIYHYAZky9iw70E4OF4hCjwB00578wwZP83PRY7pfudAkAXftap7MItCK7hJJ1yDFiLXXmMZGEnrygBP1ADs_qwx7IKGanaVHGR9MzFphWH0k4BoqgkDS4/s1600/device_xml_profiles.png" height="265" width="320" /></a></div>
<br />
The <i>kindle_fire_usb_driver</i> folder includes the KindleDriver.exe. This is the file that is executed to install the drivers for the Kindle Fire emulator devices. The <i>intel</i> folder pertains to the emulators and is discussed below.<br />
<br />
<h4 style="text-align: left;">
<span style="color: #0b5394;">Kindle Fire Emulators</span></h4>
<br />
You can use ARM-based system images or x86 system images when configuring the Kindle Fire emulators. The x86 system images enable you to use an accelerator so that the loading and running speed of the emulator is comparable to that of a real Kindle Fire Tablet. The <i>intel</i> folder, in the <i>extras</i> folder discussed above, includes the
<i>Hardware_Accelerated_Execution_Manager</i> folder. This folder includes the <i>IntelHaxm.exe</i>
used to install the Intel Hardware Accelerated Execution Manager
(HAXM) after you have enabled the visualization extensions on your
computer, as shown in the following picture. (For more information see the section title <a href="https://developer.amazon.com/sdk/fire/setup.html#SettingUpx86" target="_blank">Setting Up the x86 System Images for Faster Emulation</a> and visit <a href="https://developer.amazon.com/sdk/fire/arch-emulator.html" target="_blank">https://developer.amazon.com/sdk/fire/arch-emulator.html</a>.)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8sxggzoVXfy11DvedVHxYAZU8F1DJegNtCrerwf2gb7N1FQ6A-2wvplKPEcCyZm_ZJ8bTMrwU96Poe1S8gs3J9UyN1WEkyg7p6nBoGWxbU0RGnLf88KSEjI7QkpANQ84cLm4_qkROLX4/s1600/virtualization_tech.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8sxggzoVXfy11DvedVHxYAZU8F1DJegNtCrerwf2gb7N1FQ6A-2wvplKPEcCyZm_ZJ8bTMrwU96Poe1S8gs3J9UyN1WEkyg7p6nBoGWxbU0RGnLf88KSEjI7QkpANQ84cLm4_qkROLX4/s1600/virtualization_tech.png" height="240" width="400" /></a></div>
<br />
If you are not able to configure your computer to use the x86 system images you can still use the ARM-based system images. After you start Eclipse you can select Window -> Android Virtual Device Manager. If the SDK is installed properly you will see that Kindle Fire devices have been added to the Device list (as shown in the picture below). And, Kindle Fire APIs have been added to your Target list. If you want to create an emulator simply click the New button on the Android Virtual Device Manager. The following link provides documentation regarding what API should be associated with each emulated device: <a href="https://developer.amazon.com/sdk/fire/emulator-guide.html" target="_blank">https://developer.amazon.com/sdk/fire/emulator-guide.html</a>.<br />
<br />
As you create a virtual device you can indicate the type of image you want to use, as shown in the following picture. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIwfVDacrAt322mrbj2E5WnpPuuwpTm2CrhffjT0BUBmdKZyJeeQBWt0hWCMr1w8OsjOzQVH09-IoD1M-EKrUXBYld7KZnnHmTgrcZc8T0m5RozZYNhq_zfIb5aWQ9LyQ8U86iJjga69Q/s1600/arm_x86VM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIwfVDacrAt322mrbj2E5WnpPuuwpTm2CrhffjT0BUBmdKZyJeeQBWt0hWCMr1w8OsjOzQVH09-IoD1M-EKrUXBYld7KZnnHmTgrcZc8T0m5RozZYNhq_zfIb5aWQ9LyQ8U86iJjga69Q/s1600/arm_x86VM.png" height="320" width="208" /></a></div>
<br />
Keep in mind that when setting up the devices the SD card and Internal
Storage size both impact the amount of time it will take to start and run the device. If you have a large SD card/Internal Storage size you
can expect the device to take some time to start. If you want to test
your emulators to make sure they load properly before installing your app
on the emulator you can access the Android Virtual Device Manager, select
the desired emulator then click the Start button. Again, your
computer and device configuration will drive how much patience you will
need to exercise while waiting for the device to turn on and start, as shown in the picture below.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2jdfLkUKm2EBDQdVvst12anJqQtDiSOBTXjPiIYfdfwTCXwqQ5pnoK4XbId0Oo93rRRqSsiZW45PO_P8ci6df5WywQ894pgNfkmPd3EgKFCtpGUq-Myy_dCIPNhKQUypC0xvo1MhaAoo/s1600/virtual_device.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2jdfLkUKm2EBDQdVvst12anJqQtDiSOBTXjPiIYfdfwTCXwqQ5pnoK4XbId0Oo93rRRqSsiZW45PO_P8ci6df5WywQ894pgNfkmPd3EgKFCtpGUq-Myy_dCIPNhKQUypC0xvo1MhaAoo/s1600/virtual_device.png" height="320" width="183" /></a></div>
<br />
When you are ready you can follow Amazon's instructions to get started by creating a
basic "hello app". This tutorial is located at: <a href="https://developer.amazon.com/sdk/fire/create-app.html" target="_blank">https://developer.amazon.com/sdk/fire/create-app.html</a>.
With your virtual device (emulator) working and your app created you can run your
application using the desired device(s). There are several emulator
devices to choose from including the First Generation Kindle Fire, the
Second Generation Kindle Fire, Kindle Fire HD, etc. Below are pictures showing the simple sample app running on the First Generation and Second Generation Kindle Fire emulator devices. <br />
<br />
<br />
<table align="center">
<tbody>
<tr>
<td align="center">First Generation Kindle</td>
<td align="center">Second Generation Kindle</td>
</tr>
<tr>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjexkwPrUm62VWrLuXQ2Prchhilz1uQ7mW3pcISpWmX25pRCUTHeeEjlqcXC0WrINFrZhByX-uQEu-8-DfAKS2LBYnrKbAvDvXJGuscSZ3Xa7yWk1PK0LdS5L_tzzTf5xLr2F-BdACxy8I/s1600/first_gen_emulator.png" style="clear: left; float: left; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjexkwPrUm62VWrLuXQ2Prchhilz1uQ7mW3pcISpWmX25pRCUTHeeEjlqcXC0WrINFrZhByX-uQEu-8-DfAKS2LBYnrKbAvDvXJGuscSZ3Xa7yWk1PK0LdS5L_tzzTf5xLr2F-BdACxy8I/s1600/first_gen_emulator.png" height="320" width="179" /></a></td>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjexkwPrUm62VWrLuXQ2Prchhilz1uQ7mW3pcISpWmX25pRCUTHeeEjlqcXC0WrINFrZhByX-uQEu-8-DfAKS2LBYnrKbAvDvXJGuscSZ3Xa7yWk1PK0LdS5L_tzzTf5xLr2F-BdACxy8I/s1600/first_gen_emulator.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-left: 1em;"></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ9JvoI_PY4DW7Te240n3XV0wT3SKLNQHabH6-9VivfSbHCmips5XwQuOcoAbfubE0rCRwkCZu09fiMSzAN8q_ZWBFA_W3KeT4vSPjS81V89ZaPlJs6hA_YLvGH4Db8RrVZ86b6pH3kRI/s1600/secnd_gen_emulator.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ9JvoI_PY4DW7Te240n3XV0wT3SKLNQHabH6-9VivfSbHCmips5XwQuOcoAbfubE0rCRwkCZu09fiMSzAN8q_ZWBFA_W3KeT4vSPjS81V89ZaPlJs6hA_YLvGH4Db8RrVZ86b6pH3kRI/s1600/secnd_gen_emulator.png" height="320" width="181" /></a></td>
</tr>
</tbody></table>
<br />
<br />
The following documentation provides more information on the Kindle Fire device specifications to help you better determine the devices to which you would like to make your apps available: <a href="https://developer.amazon.com/sdk/fire/specifications.html" target="_blank">https://developer.amazon.com/sdk/fire/specifications.html</a>. If you have a Kindle Fire Table, you use your device instead of (or in addition to) the emulators to test your apps. For more information see Setting Up Your Kindle Fire Tablet for Testing at <a href="https://developer.amazon.com/sdk/fire/connect-adb.html" target="_blank">https://developer.amazon.com/sdk/fire/connect-adb.html</a>.<br />
<br />
<h3>
<span style="color: #0b5394;">Game Programming - Amazon GameCircle API</span></h3>
<br />
Amazon GameCircle provides the API and other tools needed to build game achievements and leaderboards for Kindle Fire games. It also provides the API needed to implement Whispersync so customers can save game progress to the cloud. (You can read an introduction to achievements and leaderboards by reviewing the section titled: A Mobile Game Application in my previous article titled <a href="http://bussystemanalysis.blogspot.com/2013/08/mobile-software-programming-designing.html" target="_blank">Mobile Software Programming: Designing & Building Mobile Apps (Android)</a>.)<br />
<br />
To get started with GameCircle you will need an account on Amazon's Mobile Apps Distribution site at <a href="https://developer.amazon.com/home.html" target="_blank">https://developer.amazon.com/home.html</a> . Next you have to create a security profile for your apps.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXRd-krJjdo_YQfRPrYVWvHAeYU48HcnkgPA8LXvoSyihf69oKIlXQlFbBP9moTIVCxsWvJeN6gDl-U3YCsOr3ewzXvMQmDbzEypfiwA1RvQjLGuyIeWk2pP_D8JIRblCPz0F0P_3ABzI/s1600/security_profile.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXRd-krJjdo_YQfRPrYVWvHAeYU48HcnkgPA8LXvoSyihf69oKIlXQlFbBP9moTIVCxsWvJeN6gDl-U3YCsOr3ewzXvMQmDbzEypfiwA1RvQjLGuyIeWk2pP_D8JIRblCPz0F0P_3ABzI/s1600/security_profile.png" height="242" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
Once you add a new security profile for your application(s) Amazon automatically generates a ClientID and a Client Secret value. These two values are part of your apps' security profile credentials. The API Key allows Amazon to verify your app's identity. In addition to the API Key, Credentials are also required. As part of the Credentials the developer provides the API Key name, a package name and an MD5 signature. A complete security profile is then created for the application (as shown below). For more information on GameCircle configuration visit <a href="https://developer.amazon.com/sdk/gamecircle/documentation/gamecircle-config.html" target="_blank">https://developer.amazon.com/sdk/gamecircle/documentation/gamecircle-config.html</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXBLphc4GU6y6F__FPXxeiyytGsjT6iEE2WfTVoJYRPX_A0w8pV7m4XQkrwKAkqBFzMdHOsM7MokH_Jq28rRqHS4_fAa5EQUtUNMmkIuN791gsDEjv01MMalHuoNQeMb_pFzp5koTmV5g/s1600/completed_sec_profile.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXBLphc4GU6y6F__FPXxeiyytGsjT6iEE2WfTVoJYRPX_A0w8pV7m4XQkrwKAkqBFzMdHOsM7MokH_Jq28rRqHS4_fAa5EQUtUNMmkIuN791gsDEjv01MMalHuoNQeMb_pFzp5koTmV5g/s1600/completed_sec_profile.png" height="258" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
(Note: Keys can be generated or existing digital signatures can be viewed using the Java keytool, which is a key and certificate management tool that manages a keystore used to store cryptographic keys, certificates, etc. These concepts are all part of the public/private key infrastructure (PKI). Certificates and digital signatures can be used to establish the origin of software, with a degree of certainty, based on the underlying cryptography algorithm used. Note that when you install the JDK the keystore tool is added to your computer. And, when you install the Android SDK a debug.keystore file is added to your computer. You can use your computer's search feature to find these files.)<br />
<br />
Once you have completed your security profile you can then link your security profile to a GameCircle configuration, as shown in the following picture.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdJ8WbhgtK3F4EX25lNiAfHx-TJfgqwM6j5YxvhMxVNAbwQW-PMMo7oMfaPHdfKYbOhFfuntCCtnWfLf8cFPe-GR56IaphNQ4I8guA7W9PL6-dSQG1OfKEIpYAcSvbP3QKR-6OfBZYeQs/s1600/gamecircle_linked.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdJ8WbhgtK3F4EX25lNiAfHx-TJfgqwM6j5YxvhMxVNAbwQW-PMMo7oMfaPHdfKYbOhFfuntCCtnWfLf8cFPe-GR56IaphNQ4I8guA7W9PL6-dSQG1OfKEIpYAcSvbP3QKR-6OfBZYeQs/s1600/gamecircle_linked.png" height="292" width="400" /></a></div>
<br />
Once you have linked your security profile you can click the View link under leaderboards (in GameCircle, as shown in the above picture) to add leaderboards. And, you can code your leaderboards in Eclipse. To learn more about Kindle Fire Leaderboards you can visit <a href="https://developer.amazon.com/sdk/gamecircle/documentation/leaderboards.html" target="_blank">https://developer.amazon.com/sdk/gamecircle/documentation/leaderboards.html</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2kR9BWoAbxoWyA5oe2gP0lCUBYi65EKEhDBWib3bT3TCmn1MVCT87aKbGUW0oyIijQu1xH2JFQWpwdMLjLUDCshfFjD1QYji6t9GaNu3ErJdPWtyhwcqddvWD5pHPEiin0VcRwNdgUts/s1600/leaderboards.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2kR9BWoAbxoWyA5oe2gP0lCUBYi65EKEhDBWib3bT3TCmn1MVCT87aKbGUW0oyIijQu1xH2JFQWpwdMLjLUDCshfFjD1QYji6t9GaNu3ErJdPWtyhwcqddvWD5pHPEiin0VcRwNdgUts/s1600/leaderboards.png" height="258" width="320" /></a></div>
<br />
<br />
You can also click the View link under Achievements (in GameCircle) to add Achievements. And, you can use Eclipse to code your game achievements. To learn more about Kindle Fire game achievements you can visit <a href="https://developer.amazon.com/sdk/gamecircle/documentation/achievements.html" target="_blank">https://developer.amazon.com/sdk/gamecircle/documentation/achievements.html</a>. You can also code your game to use <a href="https://developer.amazon.com/sdk/gamecircle/documentation/whispersync.html" target="_blank">Whispersync</a> so customers can access the game and continue playing from any mobile device.<br />
<br />
Once you're ready to test your app you can add your testing nickname to GameCircle. You can also associate the applicable leaderboards and achievements to your testing nickname to test your game. For more information see <a href="https://developer.amazon.com/sdk/gamecircle/documentation/gamecircle-setup.html" target="_blank">https://developer.amazon.com/sdk/gamecircle/documentation/gamecircle-setup.html</a> and <a href="https://developer.amazon.com/sdk/gamecircle/documentation/sandbox.html" target="_blank">https://developer.amazon.com/sdk/gamecircle/documentation/sandbox.html</a>.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">For Programmers Who Need Free Access to a Robust Development Environment </span></h3>
<br />
For hard-core programmers and game developers a robust programming and testing environment may be required. Whether you plan to build business applications, <a href="http://aws.amazon.com/mobile/" target="_blank">mobile games</a>, <a href="http://aws.amazon.com/solutions/case-studies/cmune/" target="_blank">massively multiplayer online (MMO)</a> games or even <a href="http://aws.amazon.com/articles/1044" target="_blank">social networking games</a> for apps like Facebook you may consider trying Amazon <a href="http://aws.amazon.com/" target="_blank">Web Services (AWS)</a>. To help new AWS customers get started with AWS, Amazon provides information on how usage limits that will enable you to use AWS for free. The AWS Free Usage Tier can be used to gain hands-on experience with AWS; or, to practice building large-scale games or apps. Visit <a href="http://aws.amazon.com/" target="_blank">http://aws.amazon.com</a> and look at the section titled AWS Free Usage Tier (Per Month) to see usage limits if you don't want to be charged to use AWS or want to keep charges to a minimal.<br />
<br />
There is also an <a href="http://aws.amazon.com/eclipse/" target="_blank">AWS Toolkit for Eclipse</a>, which makes it easier for developers to develop locally or even share files with developers in other locations, if applicable.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOfLtMpCl10lA4PHspvr-Dkgjp5ETlzrioB3iCqK9iWoNgKkB2EPPAckvlb0e39ZOLel4ZvYNfC2DxuJF9RbdCGvs8nwRhOlhsCtBgEQYggzQk2ovUJVNuf5T4d6qnQpIXOtg_GDwmbqo/s1600/aws.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOfLtMpCl10lA4PHspvr-Dkgjp5ETlzrioB3iCqK9iWoNgKkB2EPPAckvlb0e39ZOLel4ZvYNfC2DxuJF9RbdCGvs8nwRhOlhsCtBgEQYggzQk2ovUJVNuf5T4d6qnQpIXOtg_GDwmbqo/s1600/aws.png" height="327" width="400" /></a></div>
<br />
A future article will provide more detailed information on programming applications using AWS; and, distributing your apps/games on Amazon.</div>
Anonymoushttp://www.blogger.com/profile/11770164970801071498noreply@blogger.comtag:blogger.com,1999:blog-7793781044289546361.post-1689684728687774932013-09-05T17:35:00.003-07:002013-09-05T17:35:42.167-07:00Programming Mobile Apps for Android With Eclipse<div dir="ltr" style="text-align: left;" trbidi="on">
In my previous article titled: <a href="http://bussystemanalysis.blogspot.com/2013/08/mobile-software-programming-designing.html" target="_blank">Mobile Software Programming: Designing & Building Mobile Apps (Android)</a> I discuss the basic concepts associated with designing and building a mobile application or game for Android. This article provides insight into creating an Android app (whether a game or not game app). It discusses the core files and folders included in an Android app; and, it also discusses the Git tool, which can be used to download project files for the applications (i.e., camera, calendar, calculator, etc.) that come preinstalled on an Android device. If you are just getting started with Android programming this article will help you to follow the <a href="http://developer.android.com/training/basics/firstapp/creating-project.html" target="_blank">Building Your First App</a> tutorial since it provides screen captures and some steps not outlined in the tutorial.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Getting Started</span></h3>
<br />
Before building an Android app you must download and install the <a href="http://developer.android.com/sdk/index.html" target="_blank">Android SDK (the ADT Bundle includes the Eclipse IDE)</a>. Eclipse is the development platform used to write, run, test and deploy Android apps. When you initially install the SDK all of the tools are not automatically installed. Instead, you will need to relaunch the SDK Manager and select the additional tools that you want to install.<br />
<br />
Note: You will want to make sure you select Google Play Services if you want to build custom apps that will incorporate <a href="http://developer.android.com/google/index.html" target="_blank">Google Maps, Google+, display ads from within your app, </a>etc. and/or build games.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9VGdVJazofAC3U5cvbO_8_QM77a2Xm3ctoG_IFc9kBKW2Y5N4HMfqjYAf6hnnoAOoTJFaM9AU9_b0rogPOay3E-QCq7vQZzTqebbkSviAD0HLUHszOCoMRSiNzFohFgZQQGP7yIq0psY/s1600/SDK_Manager.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9VGdVJazofAC3U5cvbO_8_QM77a2Xm3ctoG_IFc9kBKW2Y5N4HMfqjYAf6hnnoAOoTJFaM9AU9_b0rogPOay3E-QCq7vQZzTqebbkSviAD0HLUHszOCoMRSiNzFohFgZQQGP7yIq0psY/s1600/SDK_Manager.png" height="229" width="320" /></a></div>
<br />
Once you install the Android Developer Tools (ADT) Bundle you can launch Eclipse to access the SDK Manager, shown above. From the Eclipse menu you can select <i>Window -> Android SDK Manager</i> (as shown below). When the Android SDK Manager displays simply click on the additional components you want installed.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirT_AdBHna7cEnEAAZuu0n_Kx4Q407_JQ5zfjg29g2OKe9gBwiFVcgVrLrq8NQvt8B3A0WfVfNAbAnuJR3luuNgEAodXngcd_Kqhdgdak-YA761VL9Z76lX1j1D5DiEQmNqtZmkA7mXvc/s1600/launch_sdk.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirT_AdBHna7cEnEAAZuu0n_Kx4Q407_JQ5zfjg29g2OKe9gBwiFVcgVrLrq8NQvt8B3A0WfVfNAbAnuJR3luuNgEAodXngcd_Kqhdgdak-YA761VL9Z76lX1j1D5DiEQmNqtZmkA7mXvc/s1600/launch_sdk.png" height="309" width="320" /></a></div>
<h3 style="text-align: left;">
<span style="color: #0b5394;">Android Projects</span></h3>
<br />
The article titled <a href="http://developer.android.com/training/basics/firstapp/creating-project.html" target="_blank">Creating an Android Project</a> does a good job of explaining how to create an Android project. There are several concepts you will encounter when working with an Android project. First, Eclipse will prompt you for a Workspace folder. Once you select a Workspace folder for your session (considering that each time you launch the IDE you are starting a session) Eclipse will store your project files in the Workspace folder. You can use a single Workspace for all projects. It's up to you. And, it largely depends on how you want to organize your projects.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyc1b2FDgFK_EwshtTkDQtn8xp4EnwYpDgCXQphoxZD0WGrRf5HUn1y26GMAiK2nloxGnNVs9jcpjX-VbHNbI_55mkEimfrdZGuo_rgUCFDq7YYdgMbvNed3p_zqLUy7WYX74ZkNr6qQc/s1600/workspace.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyc1b2FDgFK_EwshtTkDQtn8xp4EnwYpDgCXQphoxZD0WGrRf5HUn1y26GMAiK2nloxGnNVs9jcpjX-VbHNbI_55mkEimfrdZGuo_rgUCFDq7YYdgMbvNed3p_zqLUy7WYX74ZkNr6qQc/s1600/workspace.png" height="131" width="320" /></a></div>
<br />
If you plan to use a single Workspace, notice you are given the ability to check the "Use this as the default and do not ask again" checkbox so you do not need to specify a Workspace each time you access Eclipse.<br />
<br />
<h4 style="text-align: left;">
<span style="color: #0b5394;">Project Folders/Files</span></h4>
<br />
When you create a new Android App project Eclipse creates a new folder (in the Workspace folder) using the project name you specify. It adds the project folders and files required to support an Android application project. The following paragraphs provide a brief overview of the key folders/files that make up the Android app project:<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div style="text-align: left;">
<span style="color: #0b5394;">.settings -</span> This folder includes the PREFS file that defines Eclipse preferences for the compiler including target platform and compiler compliance<span class="postbody"> that indicates the JDT (Java Development Tools) version the source
should conform to.</span> Eclipse automatically sets these levels.</div>
<br />
<div>
<div style="text-align: left;">
<span style="color: #0b5394;">bin -<span style="color: black;"> Includes the project classes and<span span=""> the <a href="http://developer.android.com/guide/topics/manifest/manifest-intro.html" target="_blank">AndroidManifest.XML file</a> required to run Android applications.</span></span></span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqZfcpNAEUEgVDvHioGDdKO4RGRxlV5ZRgYibElvKkzQW_Fon6hjkl7lBfnmv4ADrWyfzEDEHPUehg_vKpsWio8CdNovxngyJpueQV2dKZLKw1LoapxH0Mh6GfNVePXwwoqnhMej8b1OU/s1600/manifest_file.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqZfcpNAEUEgVDvHioGDdKO4RGRxlV5ZRgYibElvKkzQW_Fon6hjkl7lBfnmv4ADrWyfzEDEHPUehg_vKpsWio8CdNovxngyJpueQV2dKZLKw1LoapxH0Mh6GfNVePXwwoqnhMej8b1OU/s1600/manifest_file.png" height="320" width="318" /></a></div>
<br />
<br />
<div style="text-align: left;">
<span style="color: #0b5394;">gen</span><span style="color: black;"> - The Gen folder includes the Java Language Source Files for the project. These files define the build configuration and application settings such as the theme settings, activity horizontal and vertical margins specified by the developer (through coding), buttons added to the application, etc.</span></div>
<br />
<span style="color: #0b5394;">libs - </span>This folder includes the JAR file, which includes classes used by your application. The following picture shows the contents of the android-support-v4.jar file<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiru2b_eqOPLiDeFRdrDi-svImelIAINmYU0rEstq-ts8wCBlHVbJY2jbuRTpTvFh7SCv_lr4zlKf8cbuMchpuH7oKm1my_Idc97s3rGlRtDj0TUWMN-ny0mtu8Sw1DEKpCavRyjwZVz5A/s1600/android_support_classes.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiru2b_eqOPLiDeFRdrDi-svImelIAINmYU0rEstq-ts8wCBlHVbJY2jbuRTpTvFh7SCv_lr4zlKf8cbuMchpuH7oKm1my_Idc97s3rGlRtDj0TUWMN-ny0mtu8Sw1DEKpCavRyjwZVz5A/s1600/android_support_classes.png" height="320" width="211" /></a></div>
<br />
<span style="color: #0b5394;">res</span> - This folder includes the <a href="http://developer.android.com/guide/topics/resources/overview.html" target="_blank">resource files</a> used by the application including the activity_main.xml file, which includes the layout and other settings for your app. It also includes the images used by your application along with other files.<br />
<br />
<span style="color: #0b5394;">src</span> - This folder includes the Activity class that is executed when your application runs. For example, it includes theonCreateOptionsMenu(Menu menu) procedure that adds the items to your application's action bar, if it includes one<span style="color: #0b5394;">.</span><br />
<span style="color: #0b5394;"> </span> <br />
<div style="text-align: left;">
</div>
<div style="text-align: left;">
<span style="color: #0b5394;">.project</span> - This file manages project related information such as project name, project description and other elements as shown in the following picture.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9zjJA32UPm7Iw7KN9SwGiTUYLav-SAeQbpe2v4Y7_WPLddxpGXSUI7eotZw5gc6RrShL_-ftN1H-dmrHnvBy8XZLtdE4VBuCePPoFCWgW73abdQ6fCKaU5cFeg9x9kxymarwacRydRGo/s1600/project_properties.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9zjJA32UPm7Iw7KN9SwGiTUYLav-SAeQbpe2v4Y7_WPLddxpGXSUI7eotZw5gc6RrShL_-ftN1H-dmrHnvBy8XZLtdE4VBuCePPoFCWgW73abdQ6fCKaU5cFeg9x9kxymarwacRydRGo/s1600/project_properties.png" height="213" width="320" /></a></div>
<br />
You can read more about project folders and files by reading the <i>Managing Projects</i> documentation at <a href="http://developer.android.com/tools/projects/index.html" target="_blank">http://developer.android.com/tools/projects/index.html</a> .<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Running Your App On an Android Device</span></h3>
<br />
Once you complete the tutorial or build an application you will want to run it to make sure it works. If you have an Android device you can test your application on your device. However, to do so you must first set the developer options on your device. The Developer options window (shown below) is available from Settings. You must enable USB debugging. Doing this allows Eclipse to deploy your application to your device.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVBnJi32ZEt2rVN1dQ45MbfZQMa1ohYO63MeP1zomYWg1L5wlwWmDroWmEjmim-ttiTMepWm6OQrkMzg-_g0llN1zBPG0fkHTvJaEaH1gMu3VvCEruf76GiUegtJkn73Rha7D20uKoFC4/s1600/developer_options.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVBnJi32ZEt2rVN1dQ45MbfZQMa1ohYO63MeP1zomYWg1L5wlwWmDroWmEjmim-ttiTMepWm6OQrkMzg-_g0llN1zBPG0fkHTvJaEaH1gMu3VvCEruf76GiUegtJkn73Rha7D20uKoFC4/s1600/developer_options.png" height="320" width="287" /></a></div>
<br />
Once you have enabled USB debugging you can connect your device to your computer hosting your Android App development environment. (After I connected my device to my computer I set the USB Connection Type as <i>Mass storage</i>.) You can then select run from the Eclipse menu. Once Eclipse recognizes your device it appears as an option from the Android Device Choose window (invoked by selecting Run).<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifkAWmKmARMYtQYDKF4zFG7czpmA7u2-46i6XyVA8Tt5U5WKcIrIpPHDl0D2r5vwkgYsLz4ZIk0ZBL3Jvl1oHrIZTVDfX7fY8CtTo54jmbOziHv71Wqy1_a8nlrpu68QCt3mJ3VGPPnTs/s1600/android_device.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifkAWmKmARMYtQYDKF4zFG7czpmA7u2-46i6XyVA8Tt5U5WKcIrIpPHDl0D2r5vwkgYsLz4ZIk0ZBL3Jvl1oHrIZTVDfX7fY8CtTo54jmbOziHv71Wqy1_a8nlrpu68QCt3mJ3VGPPnTs/s1600/android_device.png" height="232" width="320" /></a></div>
<br />
If you select your device and click OK, Eclipse will deploy your Android app to your device. For more information you can read the documentation titled <a href="http://developer.android.com/training/basics/firstapp/running-app.html" target="_blank">Run On a Real Device</a>. As shown in the following picture the custom Android App I deployed to my Android phone is called PVL Sample App. (In case you are wondering I do not play Candy Crush or color in the Coloring Book. My little one plays with them (o: )</div>
<div>
</div>
<div>
</div>
<div>
</div>
<div>
</div>
<div>
</div>
<div>
</div>
<div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhP3qHRxIjhddhNnmy5knTDXYw777nw7ZoDMUU4iqGu1pJAzjetnY6MF1qrMZbPtdtRMo9gKgvOLNa7I8QZN6h3nGy4hdVmomG2PYJHb1Fh5WK-PzDVQF0cPsB0jO8Jx9w0re8pKWGQsr8/s1600/deployed_to_phone.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhP3qHRxIjhddhNnmy5knTDXYw777nw7ZoDMUU4iqGu1pJAzjetnY6MF1qrMZbPtdtRMo9gKgvOLNa7I8QZN6h3nGy4hdVmomG2PYJHb1Fh5WK-PzDVQF0cPsB0jO8Jx9w0re8pKWGQsr8/s1600/deployed_to_phone.png" height="320" width="288" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Creating an Emulator for Your App</span></h3>
<br />
If you don't have an Android device don't fret. You can still join the Android development movement. The Eclipse environment provides a way for you to create an emulator to which you can deploy your apps. You can select Android Virtual Device Manager from the <i>Window</i> menu in Eclipse. The Android Virtual Device Manager will display (as shown below).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo2uI2Ls64V6pUmL_IFx3Tcqyrlblm9m3lOZX-UQRuuAqrdvLOhU3qrtZ32hD5vCmutWrTsqABEQw9OkK53n7AHOpSrnW_eXbBYMpO6Klmo8qiXuxe9WtRm0C7HUtRghXOg2QzBPQBLUA/s1600/virtual_device1.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo2uI2Ls64V6pUmL_IFx3Tcqyrlblm9m3lOZX-UQRuuAqrdvLOhU3qrtZ32hD5vCmutWrTsqABEQw9OkK53n7AHOpSrnW_eXbBYMpO6Klmo8qiXuxe9WtRm0C7HUtRghXOg2QzBPQBLUA/s1600/virtual_device1.png" height="213" width="320" /></a></div>
<br />
<br />
<br />
You can then create a New device. You need to select the type of device you want to create and define the settings for the device <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgzhyphenhyphenN5ziHBONlcof0oeXesuraHdQ5AXwkXvAO8Wf-fPHrfCXttY0Zfj8_2Gk-DPPu1cvkY_Bb9Ta3aGayVebyEraedmx7RcqLGsaJnMz-5zWzAyHkhW1BOqyakfVP8MsjL9fgr5lHjfU/s1600/new_virtual_device.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgzhyphenhyphenN5ziHBONlcof0oeXesuraHdQ5AXwkXvAO8Wf-fPHrfCXttY0Zfj8_2Gk-DPPu1cvkY_Bb9Ta3aGayVebyEraedmx7RcqLGsaJnMz-5zWzAyHkhW1BOqyakfVP8MsjL9fgr5lHjfU/s1600/new_virtual_device.png" height="320" width="204" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
Once you create the device you can use the Android Device Chooser to Launch a new Android Virtual Device, as shown below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxU3ImUT8Vg0InV02s11AcKLOkJ1AwpVyl4jPF8TQv8nyMXFU561ThAExwvezChdt1x32hS-aDO0axWFWYKuHe22ObxnoCIyRRDgN880gSiEmlvv8z8IrD2axu5Bj271T8hTb9e8dmOPY/s1600/android_device3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxU3ImUT8Vg0InV02s11AcKLOkJ1AwpVyl4jPF8TQv8nyMXFU561ThAExwvezChdt1x32hS-aDO0axWFWYKuHe22ObxnoCIyRRDgN880gSiEmlvv8z8IrD2axu5Bj271T8hTb9e8dmOPY/s1600/android_device3.png" height="233" width="320" /></a></div>
<br />
The following picture shows the PVL Sample App deployed to a virtual tablet. You can then test the application's behavior to ensure it performs as it should.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgshht2CTB9yXn10UNb3lPxMuSh66P7ff28551g2Jd_YsrN4aB-fZr0mIocf86pdcO_nhh8pHuDnCEYJ7GPZ4kCjN79sJF5jVGP6hZadAlbxiNb5o5pgSF6upuj6fBT-R_jSrSNTNcwDfU/s1600/android_device4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgshht2CTB9yXn10UNb3lPxMuSh66P7ff28551g2Jd_YsrN4aB-fZr0mIocf86pdcO_nhh8pHuDnCEYJ7GPZ4kCjN79sJF5jVGP6hZadAlbxiNb5o5pgSF6upuj6fBT-R_jSrSNTNcwDfU/s1600/android_device4.png" height="178" width="320" /></a></div>
<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Packages</span></h3>
Java classes are organized by Packages. Classes contain procedures that are used by importing the package (as shown in the picture below). A list of the Android packages and classes can be viewed at <a href="http://developer.android.com/reference/packages.html" target="_blank">http://developer.android.com/reference/packages.html</a> .<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgl-cOf1UJ7zOMfgpHAEqTaV2eifMs-5tsOkiSbcfHyOh33-6KwzAYMq9DxfQi_wlwIjBBW0dseK2NpfspYUT1UP0l8YHfwSWKn6UOIrgFuDIsbY_QlQdNP-4e6sJ58M0ZSHKHCNe6hmtk/s1600/calendar_code_block.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgl-cOf1UJ7zOMfgpHAEqTaV2eifMs-5tsOkiSbcfHyOh33-6KwzAYMq9DxfQi_wlwIjBBW0dseK2NpfspYUT1UP0l8YHfwSWKn6UOIrgFuDIsbY_QlQdNP-4e6sJ58M0ZSHKHCNe6hmtk/s1600/calendar_code_block.png" height="115" width="320" /></a></div>
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Android Training & Sample Apps</span></h3>
<br />
Google has posted trainings for individuals who want to learn Android app programming. The trainings are located at <a href="http://developer.android.com/training/index.html" rel="nofollow" target="_blank">http://developer.android.com/training/index.html </a>. It's best to follow the trainings in sequence if you are not an experienced Android app developer because the tutorials start with basic concepts and as the training progresses the concepts increase in complexity.<br />
<br />
You can download and view core source project files associated with Android, which includes the project files for the camera, calendar, contacts and other apps on your Android device. To get the files you must first install the Git application. Git is available from the following location: <a href="http://git-scm.com/downloads">http://git-scm.com/downloads</a> . Once you have downloaded and installed Git you can clone the Android repository that contains the project files (available from the following location: <a href="https://android.googlesource.com/">https://android.googlesource.com/</a> ).<br />
<br />
The URL for the repository is used to direct Git to the repository you want to clone. The Clone Git Repository wizard allows you to select the releases and other options associated with cloning the repository.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD3MJQrbksOjIUWJ-zCkoR3bfcaeP7vv4KVZtUZ5s4YNi9HIR7SMhLUHLH-bnmobdBmMEDgzTB_u3tb0kq5GI_-3VmXeDgI1BM0n6jV89rbnkZHVVpixvub_-aFp-dAcD8mZfZqnLg1WA/s1600/clone_git.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD3MJQrbksOjIUWJ-zCkoR3bfcaeP7vv4KVZtUZ5s4YNi9HIR7SMhLUHLH-bnmobdBmMEDgzTB_u3tb0kq5GI_-3VmXeDgI1BM0n6jV89rbnkZHVVpixvub_-aFp-dAcD8mZfZqnLg1WA/s1600/clone_git.png" height="380" width="400" /></a></div>
<br />
You can then create a new project from existing code and tell Eclipse to "copy projects into workspace". The project is then added to the workspace and can be deployed to a real or virtual device for testing. A future post will provide more insight on downloading, accessing and using Git repository files within Eclipse.<br />
<br />
<h4 style="text-align: left;">
<span style="color: #0b5394;">More About Git</span></h4>
<br />
<br />
The following resources pertain to working with the <a href="http://source.android.com/" target="_blank">Android Open Source project </a>. They provide great insight into Git. You will want to read <i>Codelines, Branches, and Releases</i> at <a href="http://source.android.com/source/code-lines.html" target="_blank">http://source.android.com/source/code-lines.html</a>; and, you may also want to look at <i>Codenames, Tags, and Build Numbers </i>at <a href="http://source.android.com/source/build-numbers.html" target="_blank">http://source.android.com/source/build-numbers.html</a> . The documentation on <i>Developing</i> is also a great resource: <a href="http://source.android.com/source/developing.html" target="_blank">http://source.android.com/source/developing.html</a> . Lastly, a useful list of <i>Git Resources</i> is located at <a href="http://source.android.com/source/git-resources.html" target="_blank">http://source.android.com/source/git-resources.html</a> . The resource list includes a link to an online version of the published book <a href="http://git-scm.com/book" target="_blank">Pro Git</a> for those seeking to gain expert-level Git skills. <br />
<div class="separator" style="clear: both; text-align: center;">
</div>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/11770164970801071498noreply@blogger.comtag:blogger.com,1999:blog-7793781044289546361.post-1663807128376530402013-08-27T17:06:00.001-07:002013-08-28T09:27:50.011-07:00Amazon Kindle Publishing for Books, Technical Manuals & Blogs<div dir="ltr" style="text-align: left;" trbidi="on">
This article provides insight into publishing content for Amazon's Kindle Fire, Kindle Fire HD and other Kindle versions. The first part of the article discusses the KindleGen tool used to generate a digital book or manual for Kindle. The article also talks about the files that must be created so a book or technical manual can be published for Kindle users. And it provides an overview of Kindle Previewer, which is used to view a Kindle book or manual before it is publish for distribution. Lastly, it provides insight on how to make a Kindle version of a blog available for purchase from the Amazon Kindle store. <br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">International Digital Publishing Forum (IDPF)</span></h3>
<br />
The IDPF is responsible for defining and managing the specifications adhered to by Kindle and other devices that provide a way for users to read electronic publications. You can learn more about IDPF by visiting <a href="http://idpf.org/">http://idpf.org</a> . <br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Getting Start With Kindle Publishing using KindleGen</span></h3>
<br />
There are a couple ways you can make your book or technical manual available for Kindle users. One way is to use KindleGen, which is a tool used to generate a file (.mobi) that Kindle can read. You can download <a href="http://www.amazon.com/gp/feature.html?ie=UTF8&docId=1000234621" target="_blank">KindleGen</a> from the Amazon website. To begin you will need to click the "I agree to terms of use" to accept the terms of use and download KindleGen. Next you will need to click the "Download Now" button that corresponds to your computer's operating system (i.e., if you are running Windows XP, Vista or Windows 7 you would click the first Download Now button).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG8iAWPKBPtGFyAjk3N-o4rFPkuOTFDDLADvLTHb9FK83DIhU7SUyG33AKS2aNVKxcy6Kg6JR5D5SKN2ApCiUWZdC3RKGYNxZhaBvp7zkpKALJ9Nmq8D610fO_s7qxooPb0ncEm-c6ZBM/s1600/download_kindle_gen.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG8iAWPKBPtGFyAjk3N-o4rFPkuOTFDDLADvLTHb9FK83DIhU7SUyG33AKS2aNVKxcy6Kg6JR5D5SKN2ApCiUWZdC3RKGYNxZhaBvp7zkpKALJ9Nmq8D610fO_s7qxooPb0ncEm-c6ZBM/s1600/download_kindle_gen.png" height="252" width="400" /></a></div>
You will also want to download the sample files that are available (the arrow in the picture below is pointing to the link you must click to download the sample files). The sample files include useful examples that you can review to see the layout, navigation and other features of a Kindle publication. <br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqX7QSD9Cfguyyneplmuo084VJdAcX3bMmgNmWsME_cLwSgd5GBufQVuxm8R6XRNxSlXUTIA1jIlrD92aVKTOxPCph9oVFL9E3cFFZXZh-0wlvMfpSFjATf9imu_U96KTjgUqsm-Y6-bc/s1600/download_sample_books.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqX7QSD9Cfguyyneplmuo084VJdAcX3bMmgNmWsME_cLwSgd5GBufQVuxm8R6XRNxSlXUTIA1jIlrD92aVKTOxPCph9oVFL9E3cFFZXZh-0wlvMfpSFjATf9imu_U96KTjgUqsm-Y6-bc/s1600/download_sample_books.jpg" height="111" width="400" /></a></div>
<br />
<br />
Once you have downloaded the files you will need to unzip them to a desired location on your computer. It is useful to create a folder on your c:/ drive (if using windows) so you can easily find and access the files. If you download all of the files available, you will have a number of files to access. The following picture shows the zipped files and the folders created after I unzipped the files.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOaTpciLm6D8YIT-sgDG6IE8hwl4HXb4qHIZMknoX1zK6zIZAavITwFeeqPrpARamSWjLhluBaDAc8XFrGgicBd0Zyg5mN84RgjhTIxxYQNarT4PSbAR5Er_tK61KPvLdpIs08-_-FHmw/s1600/KindleGen_zipped_file.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOaTpciLm6D8YIT-sgDG6IE8hwl4HXb4qHIZMknoX1zK6zIZAavITwFeeqPrpARamSWjLhluBaDAc8XFrGgicBd0Zyg5mN84RgjhTIxxYQNarT4PSbAR5Er_tK61KPvLdpIs08-_-FHmw/s1600/KindleGen_zipped_file.png" height="191" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<h4 style="text-align: left;">
<span style="color: #0b5394;">KindleGen</span></h4>
<br />
KindleGen is a command-line tool, which means you cannot access it's functionality by pointing and clicking a user interface. Instead you must type commands to access and use KindleGen. To use KindleGen, after I unzipped the files, I created a folder called KindleGen on my c:\ drive, as shown below. I then copied the kindlegen.exe file into this folder so I could access it more easily.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPu4cQHzPXFxkpx-dsYC9v5sdDmrQKs_5jLd-bNLcopbVMgj-ARr5Y6k-NvBD06w2uezvbT-jGjbkPE7775199P9f9JDpnU26JpuKVmdPiqK_v79mtPt5pRzesQUbxrtxyVIpERhFm4zQ/s1600/KindleGenOnCDrive.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPu4cQHzPXFxkpx-dsYC9v5sdDmrQKs_5jLd-bNLcopbVMgj-ARr5Y6k-NvBD06w2uezvbT-jGjbkPE7775199P9f9JDpnU26JpuKVmdPiqK_v79mtPt5pRzesQUbxrtxyVIpERhFm4zQ/s1600/KindleGenOnCDrive.png" height="163" width="400" /></a></div>
<br />
Since kindlegen.exe is a command-line tool you must use a Command window (if you are using a Windows operating system); or, the Terminal window (if you are using a Mac) to execute commands. When you are ready to compile your book or manual you will type: <b>kindlegen.exe</b> press the <b>Space</b> key on the keyboard and then type the name of your <b>.osf file </b>(described below) and press the <b>Enter</b> key. This will execute the command to compile your book or manual.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlHxEBeSDJlySyHULfLZNbrNUdlxMz7H513NMSqmV0I49qiRaE9NPOQ9tFX-w9EI5n2CpqiB0Gj2U3OYdZWt4nEmWDY6P7tjkAezfBwxyqeLGusfERSV7JX1NHYxbBR35geEhNu0QoXRE/s1600/MSDOS5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlHxEBeSDJlySyHULfLZNbrNUdlxMz7H513NMSqmV0I49qiRaE9NPOQ9tFX-w9EI5n2CpqiB0Gj2U3OYdZWt4nEmWDY6P7tjkAezfBwxyqeLGusfERSV7JX1NHYxbBR35geEhNu0QoXRE/s1600/MSDOS5.png" height="147" width="400" /></a></div>
<h4 style="text-align: left;">
<span style="color: #0b5394;">The Files That Make Up Your Kindle Book or Manual</span></h4>
<br />
When you use kindlegen.exe to create a digital copy of your book; KindleGen will create a .mobi file. However, there are several files you will need to create to ensure you have a complete publication. If the publication will be sold on Amazon some of these files, discussed below, are required. (Amazon published a manual that outlines its publishing criteria for Kindle. Following is the link to the publication: <a href="http://kindlegen.s3.amazonaws.com/AmazonKindlePublishingGuidelines.pdf" target="_blank">http://kindlegen.s3.amazonaws.com/AmazonKindlePublishingGuidelines.pdf</a> )<br />
<br />
You don't need a special tool to create the book you want to make available to Kindle users. Microsoft Word can be used not only to create your book; but also to create the front cover and back cover. When you save your document(s) using Word you can select web page filtered (as
shown below). This option ensures your file only contains standard HTML elements.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVqY97Cu4oCdsylN540Y5FQ4CHvR5gwKdX4mXERTd_Eb4k99hCc7CeNCLlV6SyIzKI5Fb53j08pnL6aTWRzKnjMGa1p_QxkwUsuDyyp64wU7kMD-TMf2zHfOTtCzoP_5r4wcpxR6Yju8U/s1600/web_page_filtered.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVqY97Cu4oCdsylN540Y5FQ4CHvR5gwKdX4mXERTd_Eb4k99hCc7CeNCLlV6SyIzKI5Fb53j08pnL6aTWRzKnjMGa1p_QxkwUsuDyyp64wU7kMD-TMf2zHfOTtCzoP_5r4wcpxR6Yju8U/s1600/web_page_filtered.png" height="273" width="400" /></a></div>
<br />
<br />
Your book chapters can be created as either separate HTML files (a file for each chapter); or, a single file (all chapters in one file). If you
create a single file you will need to add anchors (see <a href="http://www.w3schools.com/html/html_links.asp" target="_blank">HTML Hyperlinks</a> for more information) to your document so your table of contents listings can link to the anchors.<br />
<br />
The following list briefly discusses some of the files that will make up the digital version of your book or technical manual:<br />
<br />
1. <span style="color: #0b5394;"><b>Cover</b></span> - This is the page users see when they first access your product using Kindle Fire.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdgwcAURjGuorfKjIM0nDM9Z_8Pa5HI675O_vGb5HDo0bHTJIaxcf55JoOabq81U0PSXIW32K76_JG7bjrCeU0zIwuspVMt2YKZ2AAUVFfU7a-2tC9wTIKGJxcuCc2j3t-c30eHBTSqoE/s1600/KindlePreviewer.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdgwcAURjGuorfKjIM0nDM9Z_8Pa5HI675O_vGb5HDo0bHTJIaxcf55JoOabq81U0PSXIW32K76_JG7bjrCeU0zIwuspVMt2YKZ2AAUVFfU7a-2tC9wTIKGJxcuCc2j3t-c30eHBTSqoE/s1600/KindlePreviewer.png" height="400" width="216" /></a></div>
<br />
<br />
2. <span style="color: #0b5394;"><b>Book or Manual File(s)</b></span> - This is your book or manual (excluding the front/back cover and the table of contents). <br />
<br />
<br />
3. <b><span style="color: #0b5394;">Navigation Document</span></b> - The Navigation document (NCX file) is a logical table of contents. The NCX file (i.e., toc.ncx) is built using Extensible Markup Language (XML) standard concepts. The .ncx file includes elements to define the text that should display in the table of contents and the link to the text. Following is a picture of what the table of contents looks like using the Kindle Previewer (discussed later in this article):<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAeOmXWNDeI2VlTaMIVExFLu79x8kRc4Dl6Zm4j2E7ZARS5nlCZzGDGJ4mONg_npsaNXXep2TGGhgEN9OtjXvj0kB2iwhpov-Xd7onp8Kn59EaeUA1PzP1kz9zzPy0scDE85SOoplSdt4/s1600/logical_toc2.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAeOmXWNDeI2VlTaMIVExFLu79x8kRc4Dl6Zm4j2E7ZARS5nlCZzGDGJ4mONg_npsaNXXep2TGGhgEN9OtjXvj0kB2iwhpov-Xd7onp8Kn59EaeUA1PzP1kz9zzPy0scDE85SOoplSdt4/s1600/logical_toc2.png" height="311" width="320" /></a></div>
<br />
Below is the code used to build the table of contents shown above.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUvoTy_n1SP80HiXzRjlMO7zyyurAn5Ht2oKk4-tpRaA9-Fbyxkn-YbQsNdBoYllgLhF0uas3vHQlMrbmhqagBQYQNaP_PgTwcPWTXg8PVLrURE2rJb_bPOx-oMA5PBM7AmNIn5uiYodY/s1600/logical_toc1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUvoTy_n1SP80HiXzRjlMO7zyyurAn5Ht2oKk4-tpRaA9-Fbyxkn-YbQsNdBoYllgLhF0uas3vHQlMrbmhqagBQYQNaP_PgTwcPWTXg8PVLrURE2rJb_bPOx-oMA5PBM7AmNIn5uiYodY/s1600/logical_toc1.png" height="241" width="320" /></a></div>
<br />
<br />
Notice, the <navPoint> element is used to define a single table of contents entry that includes the text to display and the page the user views when the text is clicked. The <navLabel> holds the <text> element, which defines the text to display in the table of contents. (Note that when you work with elements each opening element must have a closing element. For example, <text></text>.)<br />
<br />
You may be wondering how Kindle knows Cover and cover.html belong together? It reads the information between the <navPoint> and </navPoint> elements as belonging together. Further, it knows Cover is the text to display because it is between the "text" elements. The "text" elements must be enclosed by the <navLabel> element. This means every line that must show up in the table of contents should be preceded by <navLabel><text> and followed by </text></navLabel>. Every link associated with the table of contents text must be preceded by <content> and followed by</content> (as shown in the above picture). The src property (of the <content> element) defines what page Kindle should jump to when the text is clicked. For example, when <i>Cover </i>is clicked Kindle should jump to the following source (src): <i>cover.html</i>. Lastly, the playOrder property associated with the <navPoint> element defines the order of the table of contents items. The id property provides a way to define a unique ID for each <navPoint> element since a file will usually have multiple navPoint elements.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
5. <b><span style="color: #0b5394;">Publication Header File</span></b> - The Publication Header File (.opf file) includes information about the book or publication including the author name, publisher name, book title, etc. It also lists the files that make up the entire book (located between the <manifest> </manifest> elements). Following is a picture of an .opf file displayed using an XML editor, which makes it easier to create, read and edit the file. Notice it uses elements just as the .ncx file uses elements. Therefore, you would expect each element that is opened (in the .opf file) to have a matching closing element. Notice this file also includes the <a href="http://www.idpf.org/epub/30/spec/epub30-publications.html#sec-spine-elem" target="_blank">Spine</a> element (after the <manifest> element).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsTwJ-duylV_sZfxEJavipHhm4pkbGQgEsgImZy2-jKqdiSYRhTrDqALladMwGm7eqkf8MsMjE7pgNHL6561QhQR3ZqZDXEAH0Lj_Sr7lblGhSxnnbzZsY2o_fPlS_GMfrkHDLgramTf4/s1600/opf_file.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsTwJ-duylV_sZfxEJavipHhm4pkbGQgEsgImZy2-jKqdiSYRhTrDqALladMwGm7eqkf8MsMjE7pgNHL6561QhQR3ZqZDXEAH0Lj_Sr7lblGhSxnnbzZsY2o_fPlS_GMfrkHDLgramTf4/s1600/opf_file.png" height="325" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<br />
4. <span style="color: #0b5394;"><b>Back Cover</b></span> - The contents and picture that should display as the back of the book.<br />
<br />
6. <span style="color: #0b5394;"><b>MOBI File</b></span> - KindleGen uses the .opf file to generate a book or manual that includes all of the files listed between the <manifest> elements. The result is a .mobi file. (For example, my .opf file is called "business system analysis.opf". From the Command window I typed: kindlegen.exe "business system analysis.opf" and then pressed the <b>Enter</b> key to execute my command. KindleGen then created the Business Systems Analysis.mobi file, which I opened using the Kindle Previewer.) <br />
<br />
If you want to learn more about creating a Kindle book and you own a Kindle; or, you use a mobile phone and have the Kindle app installed you can order the free book titled: <a href="https://kdp.amazon.com/self-publishing/help?topicId=A17W8UM0MMSQX6" target="_blank">Building Your Book for Kindle</a>.<br />
<br />
<h4 style="text-align: left;">
<span style="color: #0b5394;">The Kindle Previewer</span></h4>
<br />
The Kindle Previewer provides a way to look at a book or manual to see how it will look when it is opened using Kindle. Kindle Previewer includes the options that allow you to browse through the pages of your book or manual. You can view your table of contents and make sure your product is properly formatted for the various Kindle versions.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-KTTelfEIBCmdUIWgkTqwqzF7A6s_E6PZXsRvl4PW2oYdNg7tMFQ1jwbbCpWvDhcc2-sU8ei1JR-VPnrFDWL18P8qh90ACZv_SxxiyGz0qlX9pZE222Tce09ZgNFsAkWbFW84ZgugtYA/s1600/Kindle_preview.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-KTTelfEIBCmdUIWgkTqwqzF7A6s_E6PZXsRvl4PW2oYdNg7tMFQ1jwbbCpWvDhcc2-sU8ei1JR-VPnrFDWL18P8qh90ACZv_SxxiyGz0qlX9pZE222Tce09ZgNFsAkWbFW84ZgugtYA/s1600/Kindle_preview.png" height="400" width="212" /></a></div>
<br />
You can even check out your front and back covers. If you are interested in learning more about the Kindle Previewer you can access the Kindle Previewer user's guide at the following location: <a href="http://kindlepreviewer.s3.amazonaws.com/UserGuide.pdf">http://kindlepreviewer.s3.amazonaws.com/UserGuide.pdf</a>. (Note that you can download and install the Kindle Previewer from the same page from which you download KindleGen: <a href="http://www.amazon.com/gp/feature.html?ie=UTF8&docId=1000234621">http://www.amazon.com/gp/feature.html?ie=UTF8&docId=1000234621</a>)<br />
<br />
<h4 style="text-align: left;">
<span style="color: #0b5394;">Amazon Kindle Samples</span></h4>
<br />
If you downloaded the samples when you downloaded KindleGen and Kindle Previewer you have great example files. You can open each of these samples to see the associated files and file structure (i.e., the images are placed in the image folder, etc.). You can use the Kindle Previewer to open the .mobi file in each sample to see how the navigation works and to see digital book looks like. And, you can use any HTML editor to open the HTML files. You can also create a copy of the .opf and the .ncx files and open them in an XML editor to see the contents of these files as well. Sometimes looking at examples can help clarify how things work.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Kindle Direct Publishing</span></h3>
<br />
If you want to avoid KindleGen you can still publish your book for Kindle users to access. If you use Kindle Direct Publishing (KDP) you not only provide readers an alternate way to access your book; but also you retain 70% of your royalties. And, KDP provides a way for you to view your book using an online viewer. You can use Microsoft Word to create your book; and, you can then upload it to the <a href="https://kdp.amazon.com/self-publishing/edit-book/one?digitalItemId=A1ZH4T30Y0ZZK0" target="_blank">Kindle Direct Publishing site</a>. If the book already exists, all you need to do is upload it. You can learn more about building your book for KDP by reading <a href="https://kdp.amazon.com/self-publishing/help?topicId=A17W8UM0MMSQX6" target="_blank">Amazon's Simplified Formatting Guide</a> and access the <a href="https://kdp.amazon.com/self-publishing/help?topicId=A37Z49E2DDQPP3" target="_blank">Getting Started page</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEji_59wm-LzZI1z1FQT1Cnxe0xUUb8_pcZsvPs_7uDJ7HjDPRsPWZjot4uj7XbrpHy8uEeSvcg1ZGvq_7IbaiCVon9CCPcSP8NJ_8-HjVeCeieFdx2dEsTyk7rdzKI6xBfCpS2-QpU8tKU/s1600/kindle_direct_publishing.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEji_59wm-LzZI1z1FQT1Cnxe0xUUb8_pcZsvPs_7uDJ7HjDPRsPWZjot4uj7XbrpHy8uEeSvcg1ZGvq_7IbaiCVon9CCPcSP8NJ_8-HjVeCeieFdx2dEsTyk7rdzKI6xBfCpS2-QpU8tKU/s1600/kindle_direct_publishing.png" height="348" width="400" /></a></div>
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Kindle Publishing for Blogs</span></h3>
<br />
Lastly, if you have a blog that contains useful information you can make your blog available to Kindle users who buy from the Kindle store. There are two key reasons a blogger would want to make a blog
available on the Amazon Kindle store site: 1.Those who want to view blog content without
an internet connection can do so; and, 2. Bloggers make money when
customers download the Kindle version of the blog.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGPbSyyCMLFHWZCXN8FuTPugj5qBQxpgrKmVNynnoBlND_oQDYSbQ28B4tVt9CQWAOXRLZDh_y611lKhz2MIfw5u0hZXEWklPkMUfeCSqIFk60vBmzuymGRwIuJinxHs_Wz6eU_dW15pA/s1600/publish_blog_articles.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGPbSyyCMLFHWZCXN8FuTPugj5qBQxpgrKmVNynnoBlND_oQDYSbQ28B4tVt9CQWAOXRLZDh_y611lKhz2MIfw5u0hZXEWklPkMUfeCSqIFk60vBmzuymGRwIuJinxHs_Wz6eU_dW15pA/s1600/publish_blog_articles.png" height="262" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<br />
Kindle Publishing for Blogs also means customers receive the entire blog article, right to their device, as new articles are posted. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQeRJj8UrrZGHjcLxhw8rQwbL-1ZrKjxifo98LqqrxSQfUysUgkWDrdV4PgJm9kzAfR1ZCQ55wJJuTylnQ5p0ahGcclkSo49UcYEwlcuWc5JJcM-71NGXSWNA_fC-DqQCiyHLv6TEnzBk/s1600/kindle_publish_blog.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQeRJj8UrrZGHjcLxhw8rQwbL-1ZrKjxifo98LqqrxSQfUysUgkWDrdV4PgJm9kzAfR1ZCQ55wJJuTylnQ5p0ahGcclkSo49UcYEwlcuWc5JJcM-71NGXSWNA_fC-DqQCiyHLv6TEnzBk/s1600/kindle_publish_blog.png" height="325" width="400" /></a></div>
<br />
<br />
To get started you will need to create a Kindle Publishing account, if you don't already have one. You will need to create a Masthead file, which is the image that will display as the banner when users access your blog using Kindle. You will also need a screenshot of your blog to display on your blog's Amazon page. And, you will need the RSS feeds URL for your blog. (If you use Blogger the feed URL can be accessed by going to the bottom of your blog's page and clicking: <u><span style="color: #0b5394;">Subscribe to: Posts (Atom</span></u>).)<br />
<br />
To publish your blog for Kindle access you can visit the Kindle Publishing for Blogs site at <a href="https://kindlepublishing.amazon.com/gp/vendor/sign-in">https://kindlepublishing.amazon.com/gp/vendor/sign-in</a><br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Conclusion</span></h3>
<br />
Our society is busier than ever. And, some people want to avoid piling old books in the attic; while others want to access content sooner rather than later. So, digital publishing may not be for everyone; but there are certainly quite a few who have found a niche in it.</div>
Anonymoushttp://www.blogger.com/profile/11770164970801071498noreply@blogger.comtag:blogger.com,1999:blog-7793781044289546361.post-317918504176593432013-08-20T14:24:00.000-07:002013-08-20T14:24:17.223-07:00Business Intelligence: Using Mining Structures, Models, Cubes & Dashboards<div dir="ltr" style="text-align: left;" trbidi="on">
In a previous article I discussed the design of the <a href="http://bussystemanalysis.blogspot.com/2013/07/business-intelligence-overview.html" target="_blank">data warehouse database</a>. This is the first article in a series of articles that discuss ways to access and use data warehouse data to achieve corporate goals. Topics discussed in this article include <span class="st">mining structures and models, cubes, scorecards and dashboards</span><span class="st">.</span><br />
<br />
<span class="st">I remember when I was first exposed to SQL Analysis Services. That was when it was
launched for SQL Server 2000. Business Intelligence (BI) has come a very
long way since then; and, Microsoft has (over the years) continuously
updated its suite of BI tools. With SQL Server 2000 Analysis Services
accessing data warehouse information took more effort and provided less
options than today.</span><br />
<br />
<span class="st">Today BI
developers can use the Business Intelligence Development Studio or
Visual Studio 2010 (or higher) to build mining structures and models
that help sales and marketing teams launch more effective strategies to
sell products or services. And, let's face it, nearly every company has a
product or service it wants to sell. And, most want marketing to be
more efficient and effective in this sluggish economy. What BI can do is answer the question
"who" is most likely to buy my product or service. Instead of sending
marketing materials to every single prospect; companies can narrow the
list down to the people most likely to make the purchase. BI developers </span><span class="st">can also build cubes; and, ultimately develop scorecards so companies can monitor sales
progress; or, determine an organizations progress towards meeting
established targets. </span><br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Getting Started</span></h3>
<br />
<span class="st">Before a BI developer can build scorecards and dashboards; there are preparation steps that must be followed. The developer must for create a business intelligence project to access and prepare the data in the data warehouse. But cubes are not the only power-tool offered through BI. Mining structures and models give access to predictions that can save time and money as well as boost sales. However, Before a mining structure and model or cube can be created the following three tasks must be completed from within SQL Server Business Development Studio; or, a BI project created with Visual Studio 2010 or higher:</span><br />
<ul style="text-align: left;">
<li><span class="st"><b>Create a Data Source:</b> A connection must be made to the database that contains the data to be accessed.</span></li>
<li><span class="st"><b>Create Data Source View(s):</b> A view of the data, to be accessed, must be created. The Data Source View uses the data source to access the database so developers can select the tables/views that contain the data. If a developer is to use some (not all) of the columns in a table the developer can create a Named Query using the Data Source View. Although the project is Analysis Services, <a href="http://technet.microsoft.com/en-us/library/bb510741.aspx" target="_blank">Transact-SQL</a> (T-SQL) </span><span class="st">is used to build the Named Query because the query directly accesses the database objects. The T-SQL select statement can be used to select the desired table and fields, as shown in the following picture.</span></li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: center;">
<span class="st"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjchHCAqJxE6JhkZ0TzQ4kyA3jmUqTxZo04G-C8mHgb74wUQyfcPjEHDAOw5X2ynk6sXbs_fUmxLK2m1UCqkkGpsKLIcfRy9BGpxHLW_iIMEwJ2maU7BHusqp7K40KxWJT63E5VtIhkrT4/s1600/edit_named_query.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjchHCAqJxE6JhkZ0TzQ4kyA3jmUqTxZo04G-C8mHgb74wUQyfcPjEHDAOw5X2ynk6sXbs_fUmxLK2m1UCqkkGpsKLIcfRy9BGpxHLW_iIMEwJ2maU7BHusqp7K40KxWJT63E5VtIhkrT4/s1600/edit_named_query.png" height="286" width="400" /></a></span></div>
<span class="st">
</span><br />
<ul style="text-align: left;">
</ul>
<span class="st">Likewise, if a New Named Calculation is created, from the Data Source View, T-SQL expressions are also used. </span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwzJbQn4xB5z55eL-hkGbt-JfEBR5i6ljOK5Pw6YEwh5YWkGFZe0s7aWX532bXqJdHSvdzHJghAxocS2btDXQiIFsbe2jAUEVywxorHxmAx6PyzmKossl_VDv1WOWrHTfkzm4lE4mdupM/s1600/named_calculation.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwzJbQn4xB5z55eL-hkGbt-JfEBR5i6ljOK5Pw6YEwh5YWkGFZe0s7aWX532bXqJdHSvdzHJghAxocS2btDXQiIFsbe2jAUEVywxorHxmAx6PyzmKossl_VDv1WOWrHTfkzm4lE4mdupM/s1600/named_calculation.png" height="282" width="400" /></a></div>
<span class="st"><br /></span>
<br />
<ul style="text-align: left;">
<li><span class="st"><b>Create Dimension(s):</b> Data that presents meaningful attributes to support a measurable event, within an organization, are modeled in business intelligence as <a href="http://technet.microsoft.com/en-us/library/ms175439.aspx" target="_blank">dimensions</a>. Dimensions provide the data that helps companies learn more about itself. For example, a company's purchases are measurable events as are its sales. Details, or attributes, associated with sales might include products, promotions, customers, region, etc. The details, which are the data stored in dimension tables, provide a way for companies to answer questions about the internal events. For example, the sale of products might lead the company to ask what products brought in the most money? what products aren't selling? If companies spent money on promotions that company may want to know what ads were tied to peaks in sales? A company may even ask who are our top 10 customers? Or, in what region is our product most popular? Dimension details is what provides the details that gives companies answers to these questions. And, in a Visual Studio 2010 BI project the dimension(s) are defined before</span><span class="st"> mining structures and models or cubes are created.</span></li>
</ul>
<h3 style="text-align: left;">
<span style="color: #0b5394;"><span class="st">Mining Structures and Models</span></span></h3>
<br />
Any company that has historical promotional, orders/sales, demographic and other data has a data goldmine. <span class="st">BI developers can create a mining structure that defines the input data for mining models. The mining models can use demographic (such as gender, age, region, marital status, etc.) and other data to identify the makeup of and drivers for customers who have purchased a product or service. This information can then be used to identify the people most likely to buy. The </span><span class="st"><a href="http://technet.microsoft.com/en-us/library/ms167167.aspx" target="_blank">Microsoft SQL Server 2012 Tutorials - Analysis Services Data Mining</a> tutorials provide BI developers a great foundation to learn how to build a business intelligence project and work with mining structures and models. </span>
<br />
<span class="st"><br /></span>
<span class="st">Through the tutorials the developers use data in the</span><span class="st"> <a href="http://msftdbprodsamples.codeplex.com/releases/view/93587" target="_blank">AdventureWorksDW2012 database</a> to build three mining models: the <a href="http://technet.microsoft.com/en-us/library/cc645758.aspx" target="_blank">Decision-Tree</a>, <a href="http://technet.microsoft.com/en-us/library/cc645747.aspx" target="_blank">Cluster</a> and </span><span class="st"><a href="http://technet.microsoft.com/en-us/library/cc645744.aspx" target="_blank">Naive Bayes</a>. In addition, the tutorial teaches developers to test the </span><span class="st"><span class="st">accuracy of each model's predictions</span> to identify the most accurate mining model by creating a Mining Accuracy Chart. Developers begin by selecting the models to be compared. </span><br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<span class="st"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOIhR2DkF5yg-t-dqdyb_eJ3OU0EW89TaYVCRjbeuKAC-DbjHBW9jfEDeHPzYGzBF2pyjR8QH83txwsMd2LVjYapKTs1J2Hu2UMlQzYOj1fWJIkDBQPs-tYKu_4JcycxUjJ5wtD2o4QUY/s1600/results1.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOIhR2DkF5yg-t-dqdyb_eJ3OU0EW89TaYVCRjbeuKAC-DbjHBW9jfEDeHPzYGzBF2pyjR8QH83txwsMd2LVjYapKTs1J2Hu2UMlQzYOj1fWJIkDBQPs-tYKu_4JcycxUjJ5wtD2o4QUY/s1600/results1.png" height="306" width="400" /></a></span></div>
<br />
<br />
<span class="st">The Lift Chart's property window (bottom right corner in the following picture) displays the Model Name, Score (which conveys the effectiveness of the model), Population Correct (a value that defines the percentage of population data that is correct) and Predict Probability (a value that tells how accurate the predictions will be). There are several useful resources that provide additional information on Lift Charts as follows: <a href="http://technet.microsoft.com/en-us/library/ms175428.aspx" target="_blank">http://technet.microsoft.com/en-us/library/ms175428.aspx</a> and <a href="http://msdn.microsoft.com/en-us/library/ab77eca1-bd48-4fef-b27f-ff5b648e0501%28v=sql.90%29" target="_blank">http://msdn.microsoft.com/en-us/library/ab77eca1-bd48-4fef-b27f-ff5b648e0501%28v=sql.90%29</a> . In the following Lift Chart, the TM_Decision_Tree model is closest to the Ideal Model and will, therefore, provide the most accurate predictions regarding who will buy the product (which in this example is a bike).</span><br />
<span class="st"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiR2qQP1LRSZ6kNl01msxgthl7pOmDd2-YOnm89X0gutxletseasanPfTzSBQ0oajjbQNwQqx5E9D8Jb_nb-BvhdSwie9HBUa_httyC_0PsqZA6ciFisZC1ExeTYFLNWAeN6l8Be6C5kzQ/s1600/lift_char_fnl.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiR2qQP1LRSZ6kNl01msxgthl7pOmDd2-YOnm89X0gutxletseasanPfTzSBQ0oajjbQNwQqx5E9D8Jb_nb-BvhdSwie9HBUa_httyC_0PsqZA6ciFisZC1ExeTYFLNWAeN6l8Be6C5kzQ/s1600/lift_char_fnl.png" height="303" width="400" /></a></div>
<br />
<br />
<span class="st">Once the company has the profile of the persons most likely to buy the product; marketing materials and promotions can be designed for the targeted audience.</span> The following paragraphs provide additional information about Microsoft models used in the above chart.<br />
<br />
<h4>
</h4>
<h4>
<span style="color: #0b5394;">Decision Tree Model</span></h4>
<br />
<span class="st">The Decision Tree and other mining models, used by Microsoft BI tools, apply
advanced statistical methods that have been used for years to analyze data. </span><br />
<br />
<span class="st">The </span>Decision tree model was developed to make predictions. In the following example, the decision tree results originate from an All node for bike buyers (also taken from <a href="http://technet.microsoft.com/en-us/library/ms167167.aspx" target="_blank">Microsoft SQL Server 2012 Tutorials - Analysis Services Data Mining</a>). The light blue represents the group that has a 50.59% probability of buying a bike versus the pink group that has a 49.41% probability of not buying a bike (as shown in the properties window in the bottom right corner of the picture below). <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3rlHLQEf46sQw38p-Q8Z2Us4xBL9PcA8EmBqOQa280qt36W-KVi5q_K1tB4gfzEWGxV0OIsGFijeSMmfr41Mn8jqwiSWJpekV8x7Bmkdiq6f-AkM9VqzTjoLtlFb1uenA8-bkRaNuiuE/s1600/decision_tree_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3rlHLQEf46sQw38p-Q8Z2Us4xBL9PcA8EmBqOQa280qt36W-KVi5q_K1tB4gfzEWGxV0OIsGFijeSMmfr41Mn8jqwiSWJpekV8x7Bmkdiq6f-AkM9VqzTjoLtlFb1uenA8-bkRaNuiuE/s1600/decision_tree_1.png" height="295" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The decision tree presents the attributes as nodes that can be expanded or collapsed. From the All root node the decision tree shows bike buyers in four groups of people based on the number (0, 1, 2, 3 and 4), which defines the number of cars owned. </div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgj3EsubZLk6XyrXCoJDOUnir4sibU3oJPiEzFlqZ142PuMGNS2_o-8mBO7RifkZiXIBF4W3-cCOvLKO41U5nYlM7jhzQZ6AQrswZg5fIck-IFHtAK9xSUOAlvMXWFbFFzP73mwayvgF-g/s1600/decision_tree_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgj3EsubZLk6XyrXCoJDOUnir4sibU3oJPiEzFlqZ142PuMGNS2_o-8mBO7RifkZiXIBF4W3-cCOvLKO41U5nYlM7jhzQZ6AQrswZg5fIck-IFHtAK9xSUOAlvMXWFbFFzP73mwayvgF-g/s1600/decision_tree_2.png" height="305" width="400" /></a> </div>
<br />
From there users can see the people grouped by income, age, commuting distance, marital status, etc.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1GaWbwCqCLKrNz8hnGXgXr22T_VWJMJYLYnB0M6hSgzxZszp2rrKbtSBLRerroEQ4ZMnR6GkU6ggQ1FaTKoZmBNMOL6ZgrUYFuYRsyBZVY6yrI8UIkKDcse5KVXVzX3Jpmkw4o3qedN0/s1600/decision_tree_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1GaWbwCqCLKrNz8hnGXgXr22T_VWJMJYLYnB0M6hSgzxZszp2rrKbtSBLRerroEQ4ZMnR6GkU6ggQ1FaTKoZmBNMOL6ZgrUYFuYRsyBZVY6yrI8UIkKDcse5KVXVzX3Jpmkw4o3qedN0/s1600/decision_tree_3.png" height="305" width="400" /></a></div>
<br />
Users can mouse over a node to see the number of cases broken down by the light blue (represented by 0), pink (represented as a 1) and cases with missing values (represented as the word missing).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0FyAvw18T_O3hdcKRg-MC70AIp9rbTENogmJ4cv-M-sAbtZdW7vzWzSkX8_AmhEXXX2RhPReDl3HOMXbHzLMLJ8Dikl3cXE6jukCd7Nbxguskun-Aj5lAI1kldL2GMj6uJENL89KPTn0/s1600/decision_tree_4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0FyAvw18T_O3hdcKRg-MC70AIp9rbTENogmJ4cv-M-sAbtZdW7vzWzSkX8_AmhEXXX2RhPReDl3HOMXbHzLMLJ8Dikl3cXE6jukCd7Nbxguskun-Aj5lAI1kldL2GMj6uJENL89KPTn0/s1600/decision_tree_4.png" height="306" width="400" /></a></div>
<br />
If the drill-down option is selected when the mining model is created; users can select the drill-down option to view the cases associated with a node.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBqZ86HbTYc_9flu1oxRXzJXSkqy833lODY8UkCj7c-VX6oFKpqr-2cTFZuBSPue6RnxT2_3FDWwO8bGEsQP8Yr_1Uuw-6YPMOdjAtua32NtuW49tfNf0B8P-lUtviOk6-YPeLTdmaM58/s1600/decision_tree_10.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBqZ86HbTYc_9flu1oxRXzJXSkqy833lODY8UkCj7c-VX6oFKpqr-2cTFZuBSPue6RnxT2_3FDWwO8bGEsQP8Yr_1Uuw-6YPMOdjAtua32NtuW49tfNf0B8P-lUtviOk6-YPeLTdmaM58/s1600/decision_tree_10.png" height="300" width="400" /></a></div>
<br />
<br />
<br />
The Dependency Network tab of the Mining Model Viewer provides access to the All Links slider. This view shows all of the factors relevant in predicting whether someone will buy a bike.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8KB5Vo96MpDdBYNTC_yt1-5rwuWxEVYYGUOAuMKWYY18Mo_h1SHDpRtL6yBhKud4ep7ghveFVfqJ_9gEdPHvRRL2wnj-tajAPRLEbLpuC7xeQlfKjIAk_iNcV9t2gn3c_MzkLsT64YCM/s1600/decision_tree_8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8KB5Vo96MpDdBYNTC_yt1-5rwuWxEVYYGUOAuMKWYY18Mo_h1SHDpRtL6yBhKud4ep7ghveFVfqJ_9gEdPHvRRL2wnj-tajAPRLEbLpuC7xeQlfKjIAk_iNcV9t2gn3c_MzkLsT64YCM/s1600/decision_tree_8.png" height="305" width="400" /></a></div>
<br />
Users can move the slider down towards the Strongest Links option to see the factors that that have the most impact on predicting whether someone is or is not a bike buyer. According to the decision tree model (shown below) age, region and number of cars owned are among the strongest influences. Notice, in addition to the predictions the influencing factors also represent information someone is not likely to conclude without a model. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLUYvKCZ-_PfpPjpv-S4L0WGa6oxtsoVu2kOSfvyXh39XxLslmtvZFiJJvlmcmV7L1xJH-12nq0ZugmPE5Lz3BtwGZ4nu945s8vVtwth2NqHy_tejLMV6d2gAyfi-dLpueEgjh925UtTs/s1600/strongest_links.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLUYvKCZ-_PfpPjpv-S4L0WGa6oxtsoVu2kOSfvyXh39XxLslmtvZFiJJvlmcmV7L1xJH-12nq0ZugmPE5Lz3BtwGZ4nu945s8vVtwth2NqHy_tejLMV6d2gAyfi-dLpueEgjh925UtTs/s1600/strongest_links.png" height="300" width="400" /></a></div>
<br />
The following paragraphs present additional information on the two other models that were compared to the decision tree model to determine the most accurate model in this scenario.<br />
<br />
<h4 style="text-align: left;">
<span style="color: #0b5394;">Microsoft Clustering</span></h4>
<br />
The following diagram shows the data modeled using the Clustering algorithm. Notice the clustering mining model presents the same data in a way that looks very different from the decision tree model. The data is grouped into clusters.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuKXUXgryRD8xmu32jbZSRaBiREQ7Bs_aM3r331vJvZkrIq7E6Dhxf-GsPjI_cXwypVl6-4NehODwSUKd2Z8CZ0l6aV1X473DffYPiff46kyitVk_qpD4Y2x_c8o5BpUdtlCceL9BQiUA/s1600/clusters_fnl_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuKXUXgryRD8xmu32jbZSRaBiREQ7Bs_aM3r331vJvZkrIq7E6Dhxf-GsPjI_cXwypVl6-4NehODwSUKd2Z8CZ0l6aV1X473DffYPiff46kyitVk_qpD4Y2x_c8o5BpUdtlCceL9BQiUA/s1600/clusters_fnl_1.png" height="281" width="400" /></a></div>
<br />
The Cluster Profiles view, show below, provides details on how the clusters are divided into the same attributes (income, age, commute distance, etc.) as the decision tree.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEIV6uOjQ2OzUg75l5iyxbG5TS58iUwqswVqkTYHFY3_4VB9PCCh7cLNJXVxVja_7xyWe9juUBVOmXjRWdACBi_FFReFHtxyejYq8mBL0xEeLmiVMIonH2TQTYk-pOqWoYIJgzS7zS4_Q/s1600/Clustering_fnl.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEIV6uOjQ2OzUg75l5iyxbG5TS58iUwqswVqkTYHFY3_4VB9PCCh7cLNJXVxVja_7xyWe9juUBVOmXjRWdACBi_FFReFHtxyejYq8mBL0xEeLmiVMIonH2TQTYk-pOqWoYIJgzS7zS4_Q/s1600/Clustering_fnl.png" height="300" width="400" /></a></div>
<br />
<h4 style="text-align: left;">
<span style="color: #0b5394;">Microsoft Naive Bayes</span></h4>
<br />
With the Naive Bayes model the user is first presented the Dependency Network tab. The All Links slider is moved to view the influencing factors used to identify bike buyers.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDoforp_97ATTWtm4D4jIM-bVijNAi6bB96xR-dSyrhF5caAQ9Lxlst0dFQFuJj19qlOvC_dE_S0Zbu3anaTRXGm9-jyTUp-I6mE1nzCsjQec-_dN7lUndEISjmZEDwGQcZxsPw06G6Qg/s1600/NaiveBaynes_fnl_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDoforp_97ATTWtm4D4jIM-bVijNAi6bB96xR-dSyrhF5caAQ9Lxlst0dFQFuJj19qlOvC_dE_S0Zbu3anaTRXGm9-jyTUp-I6mE1nzCsjQec-_dN7lUndEISjmZEDwGQcZxsPw06G6Qg/s1600/NaiveBaynes_fnl_1.png" height="273" width="400" /></a></div>
<br />
<br />
The Naive Bayes model also has an Attribute Profiles view and an Attributes Characteristics view, as shown below. The following view sow the probability based on attributes.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjis_5MwNjb0T-U6IRCNdn_liEeP726ARxSn4Ygc0Fsmd-l2OZePQgh4JPekStUsaD3d9cdfA-gHkasTBfyuVmM0GxwdWhJlgg_SU_XG3bOKRT3Pq2ob-KkgpXgFjQxciytc0IeYdLjjlY/s1600/NaiveBaynes_fnl_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjis_5MwNjb0T-U6IRCNdn_liEeP726ARxSn4Ygc0Fsmd-l2OZePQgh4JPekStUsaD3d9cdfA-gHkasTBfyuVmM0GxwdWhJlgg_SU_XG3bOKRT3Pq2ob-KkgpXgFjQxciytc0IeYdLjjlY/s1600/NaiveBaynes_fnl_1.png" height="282" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<h4 style="text-align: left;">
<span style="color: #0b5394;">Querying Multidimensional Data</span></h4>
<br />
When creating the inputs for a model the BI Developer uses the Mining Model Prediction tab, which is available from the Mining Structure design window. The mining model is built from the mining structure, which uses Multidimensional Expressions (MDX) as shown in the picture below. The Mining Model Prediction window has an option that allows the developer to manually build the MDX query; or, the developer can select the input table(s)/field(s) and the system will build the MDX query. Follow are a few resources to learn more about MDX: <a href="http://technet.microsoft.com/en-us/library/ms144785.aspx" target="_blank">Basic MDX Query</a> article; Key MDX concepts article: <a href="http://technet.microsoft.com/en-us/library/ms144884.aspx" target="_blank">http://technet.microsoft.com/en-us/library/ms144884.aspx</a>; and MDX Reference: <a href="http://technet.microsoft.com/en-us/library/ms145506.aspx" target="_blank">http://technet.microsoft.com/en-us/library/ms145506.aspx</a> .<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMMqbffRfLHaZOaRsKEuKgLDg3ICYOSYd7xxQJRutA1F0Vr1oiP8zry2p8f5PhTxNMR4inSKt9z4aQZFqAY8DzcxuksIUqCfbgGkVfcdOV7FDdEo2V7uJhMNup0fEyd7E5hPqBk1wOuSQ/s1600/mdx1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMMqbffRfLHaZOaRsKEuKgLDg3ICYOSYd7xxQJRutA1F0Vr1oiP8zry2p8f5PhTxNMR4inSKt9z4aQZFqAY8DzcxuksIUqCfbgGkVfcdOV7FDdEo2V7uJhMNup0fEyd7E5hPqBk1wOuSQ/s1600/mdx1.png" height="376" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<h3 style="text-align: left;">
<span style="color: #0b5394;">Cubes</span></h3>
<br />
While mining models aide in predictions, cubes provide a way for developers to select views or tables that will be used as <a href="http://technet.microsoft.com/en-us/library/ms174792.aspx" target="_blank">measures</a>, which are numeric values pulled from a fact table. The developer can then select one or more dimensions (discussed in the beginning of this article) to be associated with the measure. The following picture shows the Internet Sales table selected as the measure. Geography, Customer, Product, DimPromotion are all dimensions associated with the measure.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBu3PeTSii1kwAM69i7oij4eJPAfNKjpqW8FqaHNHwCN7M7sDhbpJy4_jrMmI09sjQ3cBS2ET9E9JMnR5sNjGJVn0dhMXo71yH0ZNDWVOdvPjwjoOrp7z5fogcpTFaKvbs7OO28R8urhk/s1600/Cube.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBu3PeTSii1kwAM69i7oij4eJPAfNKjpqW8FqaHNHwCN7M7sDhbpJy4_jrMmI09sjQ3cBS2ET9E9JMnR5sNjGJVn0dhMXo71yH0ZNDWVOdvPjwjoOrp7z5fogcpTFaKvbs7OO28R8urhk/s1600/Cube.png" height="286" width="400" /></a></div>
<br />
Once the measures and dimensions are created users can access the cube's Browse tab and select a dimension. From within the Browse tab users can view the dimension data associated with the measure. In the following example the Customer dimension was selected, therefore; the Browse details show sales data for each customer. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifbW_3EYLxcddX9fhFAeHOQz3bZPDzIzsAUg_W2P-NqdI-Hh4RZvFrX9HH2ecXrkVKyacsVp2yJuy9Bu2jhxgypnaOWCnEnsgrXWrT9fXz9Q7y3JtkZcwXSNAfbVwksz-T1cRJAJuuQ8E/s1600/cube2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifbW_3EYLxcddX9fhFAeHOQz3bZPDzIzsAUg_W2P-NqdI-Hh4RZvFrX9HH2ecXrkVKyacsVp2yJuy9Bu2jhxgypnaOWCnEnsgrXWrT9fXz9Q7y3JtkZcwXSNAfbVwksz-T1cRJAJuuQ8E/s1600/cube2.png" height="265" width="400" /></a></div>
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">SharePoint 2010 PerformancePoint Dashboards</span></h3>
<br />
SharePoint 2010 extends the capability of BI cubes. Developers can make use of SharePoint's business intelligence capabilities by creating a SharePoint site collection from the Business Intelligence Center template. SharePoint creates a Business Intelligence site collection that provides a way to manage external connections, create reports, scorecards and dashboards. (The following article provides useful information on the difference between a scorecard and a dashboard: <a href="http://office.microsoft.com/en-us/sharepoint-server-help/what-is-the-difference-between-a-dashboard-and-a-scorecard-HA101772797.aspx" target="_blank">http://office.microsoft.com/en-us/sharepoint-server-help/what-is-the-difference-between-a-dashboard-and-a-scorecard-HA101772797.aspx</a>)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTWql-PESJMsT-GeI7HVGxKJI19bULs32iR3IJw01wSBgCksT3qK_j4468EkGNBNbAyo5e97T1YXb41smUXJSEZN4tpUN_yOYO39AsR6eYtNhlBWMTvkwnOKqqO7c2OPPtG7RVL1lO1NU/s1600/performancepoint1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTWql-PESJMsT-GeI7HVGxKJI19bULs32iR3IJw01wSBgCksT3qK_j4468EkGNBNbAyo5e97T1YXb41smUXJSEZN4tpUN_yOYO39AsR6eYtNhlBWMTvkwnOKqqO7c2OPPtG7RVL1lO1NU/s1600/performancepoint1.png" height="265" width="400" /></a></div>
<br />
Developers can use the Dashboard Designer, accessed from within SharePoint, to define color-coded thresholds that reveal values below, above or at business targets (for performance measurement) and perform other tasks.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3DTx9gFbEMN0GFfqAncbXZwt2t0209MmzMUg6JcjBKlseepKS1ytpqBhqTaGeHvDbYb0RG1OL24dM-GiAcfhT1fuxOBegfXs01-7SzTulF8R4zAhMZV65hdh8nWQ8X1we5o1FfQIGsVU/s1600/performancepoint2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3DTx9gFbEMN0GFfqAncbXZwt2t0209MmzMUg6JcjBKlseepKS1ytpqBhqTaGeHvDbYb0RG1OL24dM-GiAcfhT1fuxOBegfXs01-7SzTulF8R4zAhMZV65hdh8nWQ8X1we5o1FfQIGsVU/s1600/performancepoint2.png" height="265" width="400" /></a></div>
<br />
<br />
Scorecards let managers and executives view data, in real-time, to remain abreast of an organization's progress towards reaching established goals. Excel charts (discussed in an upcoming post) and reports can be added to the business intelligence center to build dashboards that can help the entire organization improve customer service, sales, productivity and more (see the following tutorial on balanced scorecards: <a href="http://technet.microsoft.com/en-us/library/hh750382%28v=office.14%29.aspx" target="_blank">http://technet.microsoft.com/en-us/library/hh750382%28v=office.14%29.aspx</a>). <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgr1DA9qgGdAlZpcYVMGj5fvtkuY8prnLKE8LFnOVo8o0FjCyS3W2K8B24S3Iso-JUZ2JnE4n2_VYNzeDMiYMxlXHmwlur2YXdWHv10al-l1hcXMjnh5Xparwylwus2K1_lEIAVshMNLsk/s1600/sales_performance.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgr1DA9qgGdAlZpcYVMGj5fvtkuY8prnLKE8LFnOVo8o0FjCyS3W2K8B24S3Iso-JUZ2JnE4n2_VYNzeDMiYMxlXHmwlur2YXdWHv10al-l1hcXMjnh5Xparwylwus2K1_lEIAVshMNLsk/s1600/sales_performance.png" height="292" width="400" /></a></div>
<br />
<div style="text-align: left;">
</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
With SharePoint 2010 organizations not only manage documents; but also achieve piece of mind by knowing where a company stands with every aspect of its key business operations. The following link provides access to a tutorial that includes instructions on how to build a dashboard and scorecards: <a href="http://msdn.microsoft.com/en-us/sql10r2byfbi-trainingcourse_sql10r2byfbi08-hol-01.aspx" target="_blank">http://msdn.microsoft.com/en-us/sql10r2byfbi-trainingcourse_sql10r2byfbi08-hol-01.aspx</a></div>
</div>
Anonymoushttp://www.blogger.com/profile/11770164970801071498noreply@blogger.comtag:blogger.com,1999:blog-7793781044289546361.post-5111504250094211422013-08-08T15:30:00.002-07:002014-07-09T10:25:49.158-07:00Mobile Software Programming: Designing & Building Mobile Apps (Android)<div dir="ltr" style="text-align: left;" trbidi="on">
We've all heard the Nick D'Aloisio's story right? He's the British high school student who built and sold a mobile news app to Yahoo for $30 million earlier this year. He is just one of many developers who have learned they can make good money developing mobile apps--particularly ones that add value to social networking apps. This blog article presents an overview of software design and
programming associated with one of our biggest passions "the mobile phone".<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Introduction </span></h3>
<br />
Software development for mobile devices refers to developing software for a mobile phone, tablet or other handheld device. Within the Information Technology community mobile phone development is part of the telecommunications (or telecom) industry. <br />
<br />
When we pick up a mobile phone to make a call we are holding hardware manufactured by Motorola, Apple, Nexus, Samsung, LG Corporation or some other corp. The phone has an operating system (OS) and additional apps so you can make calls, store phone numbers, add calendar appointments, etc. The OS might be Android built by Google. Or, you may have a phone running Windows by Microsoft; or, <span class="st">even a iPhone running iOS by Apple. When you install applications on a phone you select applications that are compatible with the phone's OS. </span><br />
<br />
<span class="st">Ever stop to wonder why you can't use a Verizon phone on a Sprint network? When Google, Microsoft or other software development company develops a mobile OS that company does not customize the OS for one or more networks (such as Verizon, AT&T, Sprint, etc.). Instead Verizon, AT&T, Sprint and other telecommunication companies hire software developers to customize the mobile OS so the phone connects to and communicates with their network. I had an opportunity to support a software development project at Nextel, before it was acquired by Sprint. It was an amazing, insightful opportunity.</span><br />
<span class="st"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFavbqeLEdL7Vy-N6fiKjd7NjjG1yjtw1xSmxocrwt2cA7PbAKvaVla8CBkaXkMqqBeZPOWYOg9lqAmzckw4XKnQQnv4T8Wh4H0ObmxIYYahRRTLlf9gqLFWeXn2LVijzckhYsszo2klw/s1600/Android.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFavbqeLEdL7Vy-N6fiKjd7NjjG1yjtw1xSmxocrwt2cA7PbAKvaVla8CBkaXkMqqBeZPOWYOg9lqAmzckw4XKnQQnv4T8Wh4H0ObmxIYYahRRTLlf9gqLFWeXn2LVijzckhYsszo2klw/s320/Android.png" height="320" width="158" /></a></div>
<br />
There are three types of apps that can be developed for the mobile phone: 1. Mobile version of a web application; 2. A mobile business or other non-game application; and 3. a mobile game application. <br />
<br />
<h3>
<span style="color: #0b5394;">Mobile Version of a Web Application</span></h3>
<br />
Often companies want software developers to build a web application, which is installed on a web server and accessed using a web browser. These developers are often tasked with building a mobile version of the web application. When building a mobile version of a web app a phone's OS isn't considered. This is because the user will use the phone's browser to access the mobile version of the web app. Consider the following blog site.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4QRwvOLHELTliVhU393eiVPa_QKnquMysjIoFKVNMp6W2BvMcslC7YSLcAESaYFb3mVLHR9T8xP0qGXN7A9Md2QEMwPBp03fsQnruKp4YbyP8_x1qFCJE1Z-detD2DycchSXcNzKtBCg/s1600/melissia_hall_class.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4QRwvOLHELTliVhU393eiVPa_QKnquMysjIoFKVNMp6W2BvMcslC7YSLcAESaYFb3mVLHR9T8xP0qGXN7A9Md2QEMwPBp03fsQnruKp4YbyP8_x1qFCJE1Z-detD2DycchSXcNzKtBCg/s400/melissia_hall_class.png" height="222" width="400" /></a></div>
<br />
Following is the mobile version for the same page shown above. Notice the image is gone and the navigation has changed. Since this is a blog app a "categories" drop-down is added so users can select a category and clicks the Refresh button. The page then displays a list of articles associated with the selected category. The links have been added so the user can navigate to the details stored on a separate page. Content on a mobile page is typically limited so the page loads quickly. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK9T8yVPIInazaceKGm6bH25CoD9FJgqcVP4QUdMJN6MKvrIM9bA5rIofO1m3D1riEBi2Hf1LhJcB2-3DW_bT85u1338pcQqodB0K6mmzAi0O9AC9LKNtqvcKBn95aGQ3ZXxpQRfi05v0/s1600/melissia_hall_class_mobile.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK9T8yVPIInazaceKGm6bH25CoD9FJgqcVP4QUdMJN6MKvrIM9bA5rIofO1m3D1riEBi2Hf1LhJcB2-3DW_bT85u1338pcQqodB0K6mmzAi0O9AC9LKNtqvcKBn95aGQ3ZXxpQRfi05v0/s320/melissia_hall_class_mobile.png" height="291" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
The following picture shows the page the user was directed to after clicking the "Day 1 Class Notes - 7th Grade English... link on the above page. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizd52Z8kmGmut7d-KxAFGtCz4aOdQvq5MLjzYZgZhW0sc0jV9Jy4pigqg13ItVhuBdWFPhnKz_5uh89Ar7fR5tWZs0-nycg6uS5Z0LpXCKQ88QbmSPxqLKmFX6ZbgTspPm4d188uqM9pI/s1600/melissia_hall_class_mobile2.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizd52Z8kmGmut7d-KxAFGtCz4aOdQvq5MLjzYZgZhW0sc0jV9Jy4pigqg13ItVhuBdWFPhnKz_5uh89Ar7fR5tWZs0-nycg6uS5Z0LpXCKQ88QbmSPxqLKmFX6ZbgTspPm4d188uqM9pI/s320/melissia_hall_class_mobile2.png" height="320" width="297" /></a></div>
<br />
The mobile version of a website or web application is designed to be intuitively; and, enable users to easily access information. In addition, images may be removed, especially if they are large, so loading pictures doesn't slow down the page load. Lastly, header and footer designs are either simplified or not shown on a mobile version of the site or web app. <br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Mobile Application Design</span></h3>
<br />
The a key different between developing a mobile web app versus a mobile app or mobile game app. The key difference is the non-web mobile app or mobile game is developed to be installed directly onto a mobile device. Therefore, the mobile phone's operating system is a consideration when developing a non-web mobile app or mobile game.<br />
<br />
There are various aspects to designing a mobile app including the application structure. Every mobile app (including games) include a top Level page (also referred to as the Start Screen). The Start Screen is the page the user sees when first accessing the
application. The Start Screen for mobile apps have an action bar (that includes the app's
icon or title). The action bar may include a button to create content; and,t it may also
include a search icon so users can search content. The Start Screen may include tabs or other
ways to navigate through various views of the data. Mobile apps built to manage data also include category views and detail/edit views. Let's look at the design of a couple of Android apps.<br />
<br />
Consider Google's Blogger application (or app) used to manage blog articles. Notice the action bar at the top includes the icon and the app title. The pencil is the button used to create a new post unless the checkbox beside a post is selected. In that case the pencil is the button used to display the edit post page view. In addition three tabs are displayed so the articles can be grouped using the following categories: All, Published or Draft. This means users can view all articles; only published articles; or, articles for which a draft has been created. In the following picture the Published category is selected.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi56xY5uZTv4DxYsNcRpEHMICEZguLZHrTy4r8TddCYqZU-VqKm4u14NYSiezIq-XypXYs9EIY-wuCnRXQwIuU7yVpujAqQneW6hCyAfR9DziepqOOgAcOG484nvTb_tEzh20tfzxGQAUc/s1600/blogger_top_level.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi56xY5uZTv4DxYsNcRpEHMICEZguLZHrTy4r8TddCYqZU-VqKm4u14NYSiezIq-XypXYs9EIY-wuCnRXQwIuU7yVpujAqQneW6hCyAfR9DziepqOOgAcOG484nvTb_tEzh20tfzxGQAUc/s320/blogger_top_level.png" height="320" width="192" /></a></div>
<br />
Notice the top level page includes a list of articles that shows us the title of the article, the keywords associated with the article and the date the article was published. The user clicks on an article to view the article details. (Note that Google's Blogger can be accessed using the mobile phone's
browser; or, users can download and install Google's Blogger mobile app from <a href="https://play.google.com/store" target="_blank">Google Play.</a>) <br />
<br />
Consider the Calendar mobile app used to manage events or appointments. The action bar at the top of the page includes the month and year. It also includes a menu so users can select a view as follows: Day, Week, Month or Agenda. And, the action bar has a button that allows the user to create a new event. The top level page also has tabs that include the same options as the action bar menu. If the user selects week the user can view all events for the week. Or, if the user selects Agenda the user views a list of all events. From any of these views the user clicks on an event to view the details pages that contains detailed information for the event. <br />
<br />
Twitter's action bar includes the Twitter icon, the tab selected (in the following page Me is the tab select). Also notice you can search content or create a new tweet from the action bar. The top level page displays profile information that spans 2 pages. The tweets, # of followers and # following of people following you are also included. In addition, only the first few tweets are loaded when the page displays. This approach ensures users don't have to wait too long to view the top level page. Notice the Home, Connect, Discover and Me options are available from the top level page. As previously mentioned, the following capture shows the Me option selected.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUjLlZfJhRljcEUwDdchppJB0Ly96nLdGrnGF-NmJKRn2IgWMCfoFHJEYL2WnR1ceORlomESyAqFl5OCa5XT8RTcyY9tiFZPA5mfLCYtF5XRhG2SvuCubCoFiDTPEqdTmShYt_A8KuOGU/s1600/Twitter.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUjLlZfJhRljcEUwDdchppJB0Ly96nLdGrnGF-NmJKRn2IgWMCfoFHJEYL2WnR1ceORlomESyAqFl5OCa5XT8RTcyY9tiFZPA5mfLCYtF5XRhG2SvuCubCoFiDTPEqdTmShYt_A8KuOGU/s320/Twitter.png" height="320" width="192" /></a></div>
<br />
The mobile music app presents an example of how the top level can offer users a number different views to present the same data. For example, the Songs view lists each individual song (and yes I do listen to Christmas music all year despite my daughter's complaints). The Artists view groups songs by artist. Notice in the following picture I have songs from three Take 6 albums. The music app groups all of the Take 6 albums under one artist and displays the picture for each album. Users click the button with a circle and arrow to expand or collapse the items listed under an artist. The Albums view groups the songs by album. And, the Playlist view groups songs by favorites, most played, recently played, and recently added.<br />
<br />
<table style="height: 28px; width: 609px;"><tbody>
<tr><td><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPUlCGl7E9nVbLMb0_81TGlJ5-_EY0bVOvdG9yiitblYatkPOa8Nx5whI7KcVA0gBvOzI6bbMKAEk7IE6khJxMWxO1lxb9Jvn9MMVqiz-DSNHlLHzm7Q0U5hYY8HCBncv47Bk9KYwDUaU/s1600/music_songs.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPUlCGl7E9nVbLMb0_81TGlJ5-_EY0bVOvdG9yiitblYatkPOa8Nx5whI7KcVA0gBvOzI6bbMKAEk7IE6khJxMWxO1lxb9Jvn9MMVqiz-DSNHlLHzm7Q0U5hYY8HCBncv47Bk9KYwDUaU/s320/music_songs.png" height="320" width="192" /></a></div>
</td><td><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5mLk3XQsvgoPa8Nqc8cpMlN0EjiwEZYKq5TwFlWhGeLz3OJ6KpdVprmmBuNK6g_RKZ9QwAhFomplSIoAq6aAifNqA8AU9RRjE-5cbAPXkhq7dZdcwEoAtJrPrgiF8hS5A8mHgib5ayig/s1600/music_artists.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5mLk3XQsvgoPa8Nqc8cpMlN0EjiwEZYKq5TwFlWhGeLz3OJ6KpdVprmmBuNK6g_RKZ9QwAhFomplSIoAq6aAifNqA8AU9RRjE-5cbAPXkhq7dZdcwEoAtJrPrgiF8hS5A8mHgib5ayig/s320/music_artists.png" height="320" width="192" /></a></div>
</td><td><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkbk50eA0ng9BwaVxKzM0Y_khgkORp_097XbvnHRr-ylFDyAbvfq-ssbfqdu4MGpNjwg8s0IGmPgB7DKiL23PYCx3SR2dkQauAUZWTg1VYy8GFXSg75Kc2XboYgE3MgmU_q6OxyIbOQHY/s1600/music_album.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkbk50eA0ng9BwaVxKzM0Y_khgkORp_097XbvnHRr-ylFDyAbvfq-ssbfqdu4MGpNjwg8s0IGmPgB7DKiL23PYCx3SR2dkQauAUZWTg1VYy8GFXSg75Kc2XboYgE3MgmU_q6OxyIbOQHY/s320/music_album.png" height="320" width="192" /></a></div>
</td></tr>
<tr></tr>
</tbody></table>
<br />
When the phone is turned landscape the app automatically displays the album image for every album. The title of the album playing scrolls across the bottom of the album image.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg85t8bDodPENYXl3Fa51Pvvi-Jco7ueEXtBi5LTWoUHPsd9zKii6OtqB7Nv70TSMilDO5WIn97RNgFqUhVklhb0aD-nWodO9L8n4BaNe6ihOVwRl6Qm5azP7gW5cpSp0r2Nun2h8pGJxs/s1600/music_landscape.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg85t8bDodPENYXl3Fa51Pvvi-Jco7ueEXtBi5LTWoUHPsd9zKii6OtqB7Nv70TSMilDO5WIn97RNgFqUhVklhb0aD-nWodO9L8n4BaNe6ihOVwRl6Qm5azP7gW5cpSp0r2Nun2h8pGJxs/s320/music_landscape.png" height="192" width="320" /></a></div>
<br />
<br />
Notice, most mobile applications follow a design concept that focuses on making user access intuitive and simple. In every example, the mobile application is designed so users spend more time using the app and less time learning "how to" use
the app. To learn more about designing mobile apps view <a href="http://developer.android.com/design/index.html" target="_blank">Google's Design page</a> for mobile apps.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">A Non-game Mobile Application</span></h3>
<h3 style="text-align: left;">
<span style="color: #0b5394;"> </span></h3>
<br />
Android applications are created using Java, which is one of two popular programming languages used by businesses across the country. Android is a multi-user system in that each application is treated like a different user; and, each application is automatically assigned a unique user ID when it is installed. Also, once installed, the Android app resides in its own security sandbox. And, the system ensures each app only performs the actions its permissions allow it to perform based on selections made by the user during the installation process.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2tZgQ2M1oYxV6ucL4BtOpzGxo2iH1Zi1ErLqjikhIJJvjvcKFj-SptLgChHBUWCbbBhAr3jtdTdAmTMoEe9aD87EcIv4JlpkCMSPAGlU4BNUf9b-ucO2bjTd4qffq4wF1s40LzWSl1Js/s1600/app_permissions.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2tZgQ2M1oYxV6ucL4BtOpzGxo2iH1Zi1ErLqjikhIJJvjvcKFj-SptLgChHBUWCbbBhAr3jtdTdAmTMoEe9aD87EcIv4JlpkCMSPAGlU4BNUf9b-ucO2bjTd4qffq4wF1s40LzWSl1Js/s320/app_permissions.png" height="320" width="192" /></a></div>
<h3 style="text-align: left;">
<br /></h3>
<h3 style="text-align: left;">
<span style="color: #0b5394;">Building Your Development Environment </span></h3>
<br />
Mobile app programming can be interesting and fun--especially for those who spend hours on the computer. Prior to building an Android app you have to configure your computer (or laptop) to serve as a development environment. This includes downloading and installing the Android SDK - <a href="http://developer.android.com/sdk/index.html" target="_blank">ADT Bundle for Windows or other platforms</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUTVzWm_fhqQKeVTyWA8buTCcEkQu3hUEYnArjIsPLuVYGlDSN7OPIXNthLx-pPPyFpkQlMsSqoyFY6sYN4rbCnJVKgMhpHmRgMThh9Esni_JpG2RXklKb9Fv0kN3OaJtqN8HJeVaxPlA/s1600/android_SDK.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUTVzWm_fhqQKeVTyWA8buTCcEkQu3hUEYnArjIsPLuVYGlDSN7OPIXNthLx-pPPyFpkQlMsSqoyFY6sYN4rbCnJVKgMhpHmRgMThh9Esni_JpG2RXklKb9Fv0kN3OaJtqN8HJeVaxPlA/s1600/android_SDK.png" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje5UcWK8mgdmFdSjak2CzJdWO6RotRrtHGRCyIAcHQBo1rOHcubrJsi6Rhbvdpt6pz1wBUe7P3cyoTMow96DyGZq0AhmPNpSnyz4rTMBMNgOXdeNZnnB03fvK_NkXPXq5dTLvWaNQnGUs/s1600/adt_bundle_other_platforms.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje5UcWK8mgdmFdSjak2CzJdWO6RotRrtHGRCyIAcHQBo1rOHcubrJsi6Rhbvdpt6pz1wBUe7P3cyoTMow96DyGZq0AhmPNpSnyz4rTMBMNgOXdeNZnnB03fvK_NkXPXq5dTLvWaNQnGUs/s400/adt_bundle_other_platforms.png" height="177" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
Once you download the ADT Bundle you end up with a zipped file called: adt-bundle-windows-x86-20130729.zip (unless you download the 64 bit for Windows or version for a different operating system). You will need to add a new folder to your computer and then extract the contents of this file to the new folder you created. When you navigate to the extracted files you will see the SDK Manager.exe.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVchbvf0q864vyQeG4UTF0GC5S1Kq_JetSYSwK__Ic-nEkxbzEVIpUAQgUeoaCpiFsawT8cvn6ueo730nYPRawJTOdpkqk6jXQmXflOY9ilKYz1LOYJcLtvWWuL5xcQnhx7NCshOBGmS0/s1600/extract_files.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVchbvf0q864vyQeG4UTF0GC5S1Kq_JetSYSwK__Ic-nEkxbzEVIpUAQgUeoaCpiFsawT8cvn6ueo730nYPRawJTOdpkqk6jXQmXflOY9ilKYz1LOYJcLtvWWuL5xcQnhx7NCshOBGmS0/s1600/extract_files.png" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
You can double-click the SDK Manager.exe to install the Android SDK tools including the Eclipse plugin, Android app samples and more.<br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4x2_6Qjmkfo0TSqveq_7K3HdXEVvOS9PX9P6WepBh7I2s986hIcpvsw45qASiCqaRzsC10-RhSQcXKuQQ7p9ys2OafezChsjsGfk5x9o_raBMA5zgcUKqpw1koO0N7LDkbCWXMTuzZbI/s1600/install_android_sdk.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4x2_6Qjmkfo0TSqveq_7K3HdXEVvOS9PX9P6WepBh7I2s986hIcpvsw45qASiCqaRzsC10-RhSQcXKuQQ7p9ys2OafezChsjsGfk5x9o_raBMA5zgcUKqpw1koO0N7LDkbCWXMTuzZbI/s400/install_android_sdk.png" height="286" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div style="text-align: left;">
Once you have installed the Android SDK you can launch Eclipse by navigating to the folder you created and then exploring the contents of the Eclipse folder. Locate and double-click on the Eclipse.exe file to launch the Eclipse development environment.</div>
<div style="text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgf5tpLNCzHbsptKSGbbjKFNVtDcIXFe91z8ytHt1v7olshEzV9fS3sFRngyHLzVeMZ-GoZ0I7lf5pGfAAv_iCneeihrPnty9GZBg1PZm-icPUp9T376IPQ1CehztyK8fKYGis1vIYyR94/s1600/launch_eclipse.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgf5tpLNCzHbsptKSGbbjKFNVtDcIXFe91z8ytHt1v7olshEzV9fS3sFRngyHLzVeMZ-GoZ0I7lf5pGfAAv_iCneeihrPnty9GZBg1PZm-icPUp9T376IPQ1CehztyK8fKYGis1vIYyR94/s320/launch_eclipse.png" height="220" width="320" /></a></div>
<br />
<br />
The Android Developer Tools splash screen displays, as shown below.
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3hgZ_8iV6La7auTYeJ_TyfoLXynjAvcXoqDz9gChLP272JPOwX_8pAOaxt3HgPDeZyeXeI5mraja8hMJtnlBMRYWUb-5LcAQL3Wzj8ZmnCZKKUyb7uUicBCx_dE_IwzTtKmG5WZl8MFw/s1600/android_developer_tools_spl.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3hgZ_8iV6La7auTYeJ_TyfoLXynjAvcXoqDz9gChLP272JPOwX_8pAOaxt3HgPDeZyeXeI5mraja8hMJtnlBMRYWUb-5LcAQL3Wzj8ZmnCZKKUyb7uUicBCx_dE_IwzTtKmG5WZl8MFw/s320/android_developer_tools_spl.png" height="192" width="320" /></a></div>
<br />
<br />
Next, the Eclipse Integrated Development Environment (IDE) displays. You can then create a project and begin developing Android apps.
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggqj959HeWCHFo8bGgCX3XoH3RsD9yoL4u65wmgX5_XX_6IO3buh1czjh5DBnQQ6MO5uMwCsCW129etCLhyphenhyphenxWPJC0aWp996NElpSw4bJf3ZNF0_AVwIU3W7VEZhsEL7LIIrfTlzU7aTWw/s1600/eclipse_ide.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggqj959HeWCHFo8bGgCX3XoH3RsD9yoL4u65wmgX5_XX_6IO3buh1czjh5DBnQQ6MO5uMwCsCW129etCLhyphenhyphenxWPJC0aWp996NElpSw4bJf3ZNF0_AVwIU3W7VEZhsEL7LIIrfTlzU7aTWw/s400/eclipse_ide.png" height="228" width="400" /></a></div>
<br />
<br />
<div style="text-align: left;">
Once you have reviewed the <a href="http://developer.android.com/guide/components/fundamentals.html" target="_blank">Android App Fundamentals</a> you can use the <a href="http://developer.android.com/training/index.html" target="_blank">Training link</a> to learn how to build your first Android App. The training presents the steps on how to create a project, build a simple user interface and more. The best rule of thumb is to following the trainings to learn how to build an Android app. Once you are successful at following the trainings and you understand how the training apps are developed; you can then practice building small apps to become experienced in building custom apps. Most importantly, don't expect to conquer the Android app world overnight. <br />
<br />
After you have finished developing your app you will want to test your app. The Android framework includes an integrated testing framework so you can <a href="http://developer.android.com/tools/testing/testing_eclipse.html" target="_blank">test your application</a>. In addition, the Android SDK includes tools that enable you to setup and run your test applications.
Once you have completed testing you are ready to learn about <a href="http://developer.android.com/distribute/googleplay/about/distribution.html" target="_blank">distributing </a> your app.<br />
<br />
Next, you'll want to follow the steps necessary to <a href="http://developer.android.com/distribute/googleplay/publish/register.html" target="_blank">publish</a> your Android app to Google Play, which is the tool Android users turn to to pay for, download, and install mobile apps. To publish your app to Google Play you must become a registered developer. This is part of the process required to "<a href="https://play.google.com/apps/publish/signup/" target="_blank">Register for a publisher account</a>". Be prepared to pay the $25.00 registration fee. This process will enable you to publish your Android app to Google Play and make it available to your target audience.</div>
<div style="text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsAvEiPP5SUPhDACMGsbvTvMZy99KP0Nb_PXxZaG8oTNjrFrG_wo7VL-u-ZUmE_eSHUJryNVDMcrOXjJHrjeRaRYVkWGjyBQxhL798hdhqGdMdh7ARmnzRssyCgRYHAFTFnTjFcRnL4eM/s1600/google_wallet.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsAvEiPP5SUPhDACMGsbvTvMZy99KP0Nb_PXxZaG8oTNjrFrG_wo7VL-u-ZUmE_eSHUJryNVDMcrOXjJHrjeRaRYVkWGjyBQxhL798hdhqGdMdh7ARmnzRssyCgRYHAFTFnTjFcRnL4eM/s400/google_wallet.png" height="252" width="400" /></a></div>
<div style="text-align: left;">
<span id="goog_848744444"></span><span id="goog_848744445"></span><br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
Whether you are just getting started with Android development; or, you have some experience you may enjoy your development experience more if you join a development community. Or, if you want to become an Android developer; but you are a bit nervous join a development community and read about other's experiences. Development communities share information. This approach gives you access to fellow developers with whom you can share problems and gain insight, etc. There are several communities that you may find useful. A few of these communities are listed in the following paragraphs.<br />
<br />
The first community is XDA Developers, which is a software development community that focuses solely on mobile technologies. The community includes over five million users and the group shares tips, helps troubleshoot problems and more. XDA Developers enables users to view and download content as a guest. However, to post comments you must register. XDA Developers can be accessed by navigating to <a href="http://forum.xda-developers.com/">http://forum.xda-developers.com/</a> . XDA also have an <a href="http://www.xda-developers.com/xda-tv/" target="_blank">XDA TV channel </a>that presents very useful information. The Register button is located in the far right corner of the page as shown below.</div>
<div style="text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkiauRb-1fvcoGzP4uT612u_segVv_BDh0EPnaa6OfyZir5oWWKkJYYlwutwxhIFORNVkbjilUghwPUOesczrRqft6PPcO96Zqy95FIebf3t7HnFXg1ccuTdjOvpcFC0jZ7smVPxAXjxU/s1600/register_xdadevelopers.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkiauRb-1fvcoGzP4uT612u_segVv_BDh0EPnaa6OfyZir5oWWKkJYYlwutwxhIFORNVkbjilUghwPUOesczrRqft6PPcO96Zqy95FIebf3t7HnFXg1ccuTdjOvpcFC0jZ7smVPxAXjxU/s400/register_xdadevelopers.png" height="223" width="400" /></a></div>
<div style="text-align: left;">
<br />
You can also join Google's Android Developer group at <a href="https://groups.google.com/forum/#!forum/android-developers">https://groups.google.com/forum/#!forum/android-developers</a> . Android Community is also another choice. Android Community is an open-source project community led by Google. You can learn more about the Community by visiting the following link: <a href="http://source.android.com/index.html">http://source.android.com/index.html</a> .</div>
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">A Mobile Game Application </span></h3>
Game developers can use <a href="https://developers.google.com/games/services/android/quickstart" target="_blank">Google Play game services</a>, and their imagination, to building interactive, addictive games.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1fABZu9sb9zqeETgEwFET-DJvFZEpHzDkVRsxwYVvZGrOrXYxs8VmVvhvfg12IoNYddQsc9TReQwrujG7CGCy8xTN2utkoGCs_mNBJHPKP3b_1sLcH5AMpl3aGOaw1Yer2Fd4p4T0bwU/s1600/google_play_services.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1fABZu9sb9zqeETgEwFET-DJvFZEpHzDkVRsxwYVvZGrOrXYxs8VmVvhvfg12IoNYddQsc9TReQwrujG7CGCy8xTN2utkoGCs_mNBJHPKP3b_1sLcH5AMpl3aGOaw1Yer2Fd4p4T0bwU/s320/google_play_services.png" height="320" width="192" /></a></div>
<span id="goog_1007681227"></span><br />
Game developers can also incorporate <a href="https://developers.google.com/games/services/common/concepts/achievements" target="_blank">achievements</a> that unlock new game capabilities once a player obtains a number of points defined by the game developer. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF1ciDQm70H2HgiDlOSl_bz3KUwrOY1PlqJYCaprqQCyjM6S0d0U9TGY1qR92LB15yha9pJPDB3cm4vJdahvhKqRsohItQrLuJBDhT_VFpRXp0Xt-MpkmKmC2s6iqFwi0In-18P5VwKvE/s1600/achievements.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF1ciDQm70H2HgiDlOSl_bz3KUwrOY1PlqJYCaprqQCyjM6S0d0U9TGY1qR92LB15yha9pJPDB3cm4vJdahvhKqRsohItQrLuJBDhT_VFpRXp0Xt-MpkmKmC2s6iqFwi0In-18P5VwKvE/s320/achievements.png" height="192" width="320" /> </a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The achievements can be tied to levels (i.e., a player completes level 1 after earning 100 points, which then unlocks level 2). Or, developers can tie achievements to game capabilities. For example,
with the game Plants vs Zombies players must reach a certain level in
the Adventure part of the game to unlock the Quick Play functionality.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrTpL1Rl0xZgoj8OkJHfVzActgzHzSx-8uxugbMWKZtBW8QBJVFi_rCSN4DNFVgxM-fKKCYJm8FWWtVWDy75FzrnPZ4NO-OmI1QIGnf778fkekRpd-QVuESD23JTGgysey1cyN7j5_qCY/s1600/achievement2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrTpL1Rl0xZgoj8OkJHfVzActgzHzSx-8uxugbMWKZtBW8QBJVFi_rCSN4DNFVgxM-fKKCYJm8FWWtVWDy75FzrnPZ4NO-OmI1QIGnf778fkekRpd-QVuESD23JTGgysey1cyN7j5_qCY/s320/achievement2.png" height="192" width="320" /></a></div>
<br />
<br />
<br />
Another very useful option that can be added to games is Cloud Save. Developers can incorporate the <a href="https://developers.google.com/games/services/common/concepts/cloudsave" target="_blank">Cloud Save</a> service so players can play a game across multiple devices. For example, while in the car a child may play a game using a mobile phone. Once the child gets home he can go to a computer and pick up where he left off by playing the web version of the game. Cloud Save enables data to be synchronized across multiple devices so the player never looses progress as he moves from one device to another.<br />
<br />
Games can also include a capability called leaderboards, which can be used to up the stakes by allowing players to compare their score to previous game scores; or, top scores from other players. When the developer creates a leaderboard for a game the developer programs the leaderboard to submit the score to one or more leaderboards at the end of a game.<br />
<div style="text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVfK3pyAsNa5e-2Fda2FOK3VGLcFHH5N9VQ-PwQ4VdEAF8m_FSDo2Wot3_20w-CFZN03BnwXnJQHFoDB5yqTfFTy9TELp5CRHsPfynPLlBwM6Wd0csVn-iaAF0vo3MHkUVIS-mY6Eif08/s1600/score.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVfK3pyAsNa5e-2Fda2FOK3VGLcFHH5N9VQ-PwQ4VdEAF8m_FSDo2Wot3_20w-CFZN03BnwXnJQHFoDB5yqTfFTy9TELp5CRHsPfynPLlBwM6Wd0csVn-iaAF0vo3MHkUVIS-mY6Eif08/s320/score.png" height="320" width="192" /></a></div>
At the end of each game the game checks to see if the player's score is better than a previous score, which can be compared to daily scores, weekly scores or all-time high scores. The game will always update the leaderboard with the best score so the player (or other plays) can see how good a player is at the game.<br />
<br />
Games can also be built to support multiple players (referred to as multiplayer games). For example, the real-time multiplayer game can be developed to include participants and a virtual meeting room, used as the game space. Games can be designed so that a player can invite other players to the virtual meeting room. Players who accept the invitation are joined to the meeting room. Or, the game can be designed to automatically match players to a meeting room based on preferences stated by the player.<br />
<br />
Lastly, with Google Play game services game developers can build games so
players can sign into the game using their Google+ account. Users can
play other Google+ players by accessing
multiplayer mode on the mobile game. Game players can even compete with
one another and compare scores. In addition, developers can add a
Google+ Share button so players can post tips, progress and other
information about the application right to their Google+ wall from within the game--adding
the power of social networking to a player's experience. Like non-game applications, Android game applications must be published. Games are published to <a href="https://developers.google.com/games/services/console/testpub" target="_blank">Google Play Game Services</a> and to <a href="http://developer.android.com/distribute/googleplay/publish/register.html" target="_blank">Google Play</a>.<br />
<br />
Future posts will include more details on mobile programming and programming for the Amazon Kindle (which is pretty hot right now).<br />
<br />
This article has discussed a few of the capabilities available to game developers. Note that there is an interesting video about game development at: <a href="https://developers.google.com/events/io/sessions/326367481">https://developers.google.com/events/io/sessions/326367481</a>. The video is hosted by Dan Galpin, who is a Developer Advocate; Jaewoong Jung, who is a software engineer that builds games; and Jennie Lees, who is a product manager. <br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">For More Information</span></h3>
<br />
The following links provide access to trainings, tutorials and additional information you may find useful in your endeavor to become an Android app developer, Android game developer or both: <br />
<ul style="text-align: left;">
<li>To develop a business app visit <a href="http://developer.android.com/training/index.html">http://developer.android.com/training/index.html</a></li>
<li>To develop a game visit <a href="https://developers.google.com/games/services/android/quickstart" target="_blank">https://developers.google.com/games/services/android/quickstart</a></li>
<li>Getting started with Java <a href="http://docs.oracle.com/javase/tutorial/getStarted/index.html" target="_blank">http://docs.oracle.com/javase/tutorial/getStarted/index.html </a></li>
<li>A presentation that includes a quick review on setting up a game: <a href="http://commondatastorage.googleapis.com/io-2013/presentations/131.pdf">http://commondatastorage.googleapis.com/io-2013/presentations/131.pdf</a> . </li>
</ul>
</div>
Anonymoushttp://www.blogger.com/profile/11770164970801071498noreply@blogger.comtag:blogger.com,1999:blog-7793781044289546361.post-45581567194797986622013-08-04T09:22:00.001-07:002013-08-04T09:24:03.462-07:00Requirements Gathering: A Look at JAD, Surveys, Reverse-Engineering & Focus Groups<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
Recently, someone asked me about the different types of requirements gathering sessions; and, the person asked me what type was preferred over the other. Really the type of requirements gathering session used is driven by the organization and project size and complexity. I decided to post this information in case others had the same question. This post discusses the different approaches used to understand and capture user requirements.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Overview </span></h3>
<br />
To identify the system features and all other requirements requirements gathering meetings, or sessions, are held. Separate requirements gathering meetings are usually held for each type of requirement. This means a requirements gathering meeting is held to define the features along with <a href="http://bussystemanalysis.blogspot.com/2012/06/requirements-understanding-customers.html" target="_blank">the Vision</a>. Then, another requirements gathering meeting is held to define the <a href="http://bussystemanalysis.blogspot.com/2013/04/how-to-write-implementable-testable.html" target="_blank">use cases</a> or <a href="http://bussystemanalysis.blogspot.com/2013/01/agile-user-stories-test-cases.html" target="_blank">user stories</a> and so on. The cycle is repeated <a href="http://bussystemanalysis.blogspot.com/2013/05/all-about-functional-requirements.html" target="_blank">until all requirements</a> are documented. There are various approaches that can be used to gather requirements. <br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Using a Survey</span></h3>
<br />
Some projects may begin with a survey. The survey is used to ask users questions. The surveys are usually anonymous so respondents do not identify themselves. In the real world surveys are usually distributed over the internet. And, once the survey is ready for responses participants are sent an email with a link to the survey. The email usually includes basic instructions including the due date for responses.<br />
<br />
The Analyst goes through the survey responses and translates the responses into requirements, as applicable. Following is a list of a few examples survey questions that may be included in the survey:<br />
<ul style="text-align: left;">
<li>Problems have users had with the existing software or similar software they've used in the past. </li>
<li>What features users would like to see implemented in the new (or updated) system. Users are typically asked to state the top ten features that would help them be more productive on the job. Users are typically asked to prioritize the features by listing the highest priority feature first and so on.</li>
<li>What success criteria the user has for the product. (This is the criteria the software must meet for the user to view the implementation as a success.)</li>
</ul>
The user responses are then translated into requirements. For example, a survey respondent may state that no training or user documents were provided with the previously implemented software; and, as a result users were not able to efficiently use the software. This statement would prompt the analyst to write the user requirement: The system shall include a quick start manual, user's guide, training presentation, and lab book with demo data entered into the test system..<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Using Group Sessions</span></h3>
<br />
Another form of requirements gathering is applied through the use of group sessions. With group sessions a group of people discuss the requirements. The group may be large (100 or more people); or, it may be small (5 or 10 people). The size of the group is driven by the size of the organization. For example, the Department of Defense (DoD) is the largest Federal Government agency. The DoD's requirements gathering groups would be much larger than that of a small consulting company. And, keep in mind these sessions don't include every single user; but rather people identified as stakeholders. (The term stakeholder is discussed in the post titled, <a href="http://bussystemanalysis.blogspot.com/2010/09/facilitating-meetings-preparing.html" target="_blank">Facilitating Meetings: Stakeholders in Business & SMEs </a>(Subject Matter Experts).)<br />
<br />
Examples of group sessions include focus groups and Joint Application Development (JAD) sessions. Group sessions are usually facilitated because a number of people participate in the sessions. A focus group session may include representatives from various companies invited to participate in the requirements gathering sessions. This approach ensures everyone impacted by the software helps shape the software product. Focus group sessions may or may not include the technical team. For example, when working for the Federal Housing Finance Board (FHFB) we supported a project that built a reporting system. The reporting system was to be used by FHL banks across the United States. Therefore, we hosted Focus group sessions where FHFB and FHL bank employees participated in stating requirements for the system. We used a combination of in-person meetings and virtual meetings.<br />
<br />
JAD sessions, on the other hand, are highly structured, facilitated workshops. These sessions include stakeholders and technical team members. This approach supports a forum where stakeholders can ask the technical team questions to fully understand the software product that will be implemented. And, the technical team can ask questions about the requirements to fully understand what the stakeholders expect. Using this approach gives both sides (stakeholders and technical team) an opportunity to gain a clear understanding of the requirements to be implemented. Lastly, a facilitated workshop means the session has a facilitator or moderator. The facilitator or moderator makes sure the agenda is followed, everyone has a chance to speak and the meeting rules (i.e., do not talk while someone else is talking, etc.) are followed.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Using One-on-One Meetings</span></h3>
<br />
Another approach is to host one-on-one meetings. In a one-on-one meeting the analyst speaks solely to a single stakeholder. There are two situations in which I have used this approach. In one example I was supporting a project while working for an international union. I was gathering requirements for a survey system that would be used by millions of people. An organizer, who was very much in touch with the local unions, served as the stakeholder. In this situation, the stakeholder had already talked with the local union workers numerous times and knew exactly what they wanted.<br />
<br />
In a second example, the analyst may have participated in a group requirements gathering session. There may have been one or two stakeholders who didn’t say anything in the group session. Or, an individual in the group session may have started to make a point but never finished. In either of these examples the analyst may schedule a one-on-one meeting to elicit additional input. However, for the most part one-on-one meetings are rarely used because it does not give everyone or the majority input regarding system requirements.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Reverse-Engineering Software to Gather Requirements</span></h3>
<br />
An analyst may also gather requirements by reviewing an existing software product. The analyst would go through the software to define all of the requirements that were implemented. This approach might be used if a company has an outdated software product; but, doesn’t have the requirements documents for the product. After the analyst documents the requirements for the outdated software product additional requirements may be added. For example, a group session may then be used to identify other requirements that should be added. Or, stakeholders may discuss changes that should be made to the outdated software requirements, which results in an updated version of the requirements document being produced.<br />
<br />
These are a few of the requirements gathering methods that may be used to define requirements for a new or existing system. </div>
Anonymoushttp://www.blogger.com/profile/11770164970801071498noreply@blogger.comtag:blogger.com,1999:blog-7793781044289546361.post-51503140407571191962013-07-26T16:44:00.001-07:002013-07-27T21:24:34.514-07:00Business Intelligence Overview: Companies Remove Guess-Work To Make Sound Decisions<div dir="ltr" style="text-align: left;" trbidi="on">
Companies seeking to remove the guess work from important business decisions have turned to business intelligence solutions.With business intelligence companies can use facts (based on historical data) to determine what promotional campaigns were successful and which ones were not. Companies can also view product or service performance to understand what products/services are needed most in a location. And, companies can get to know their customers better to build more compelling brands and marketing strategies. Today, even more complex buying and other patterns can be discovered through data mining, which is discussed later in this post.<br />
<br />
In short, business intelligence answers business questions to help companies improve their performance and sales. And, in this sluggish economy, more and more businesses are turning to business intelligence to make sure they make the right choices. This post provides an overview of business intelligences and the Microsoft technologies used to support business intelligence solutions.<br />
<br />
<h3>
<span style="color: #0b5394;">What Is Business Intelligence</span></h3>
<br />
Business Intelligence (BI) gives organizations the ability to store and use data captured over the years. With a BI system organizations can use their historical data to view product or service performance. They can also make predictions on who is most likely to buy their product or service; as well as identify the aspects that most likely makes a customer return to make repeat sales. Companies can also evaluate the usefulness of its promotional campaigns. For example, sales and marketing managers can view resulting sales from a promotional campaign. And, as companies capture the demographic makeup of their customers they can use that information to know who is buying what. Some companies have even begun to use BI with their eCommerce systems. <span class="label">For example, Market Basket Analysis is used to recommended products to customers based on the items in the customer's shopping cart. </span><br />
<br />
BI systems not only give organizations the ability to make informed decisions; but it also provides them an opportunity to select key performance indicators (such as sales target, product performance or sales by salesperson) to monitor an organization's performance. Some companies set targets (i.e., indicate the sales the company should reach by a given period) and use scorecards to monitor the company’s performance. These are just a few of the capabilities BI systems bring to the table. The following paragraphs discuss how BI systems are designed and the Microsoft products used to build them.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">The Database Processing for Business Intelligence Systems </span></h3>
<br />
<br />
Traditional business applications use Online Transaction Processing (OLTP). With OLTP systems the data in the database is expected to change frequently. New data is frequently added, existing data is updated; and, tables may even change. In addition, traditional relational database concepts are used to relate the tables. This approach makes it easier for the business to make updates and perform queries against the changing data. Analyzing data in an OLTP system is difficult because the data consistently changes due to the transactions performed against it. <br />
<br />
On the other hand, an organization that wants to analyze data (as well as gain a better understand of its business performance, customers, etc) can implement a data warehouse. Unlike the OLTP systems, the data warehouse system supports Online Analytical Processing (OLAP) and is designed solely to support analyzing and retrieving data. Transactions are not performed against a data warehouse. And, updates are only made to the data warehouse to correct errors in the existing data. Other than that the existing data never changes. Instead, new data is cleansed (by removing partial or corrupt data) and then added to the data warehouse so organizations can use historical data for decision support. <br />
<br />
One way in which a data warehouse can be updated is based on using the Microsoft SQL Server Integration Service (SSIS). A Database Administrator, or other skilled personnel, can create packages that extract and transform data (i.e., convert data into a relational data source or other format) and then load the data into a table in the data warehouse. This process is commonly referred to as the Extract-Transform-Load (ETL) Process.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9_xAD-tQtk8JX4Z8qu14zczbnouKi31AvLLg0tGY4rY_EG38yViTs2a1GfSPTmNXPxhkhX4UyIHLsaAEEMOXPJWfRy0miU2x6jzvFB2q6fJKdmo5aWdnP-uLGjk9Ee4Tx6UMBrvKdrVg/s1600/ETL.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9_xAD-tQtk8JX4Z8qu14zczbnouKi31AvLLg0tGY4rY_EG38yViTs2a1GfSPTmNXPxhkhX4UyIHLsaAEEMOXPJWfRy0miU2x6jzvFB2q6fJKdmo5aWdnP-uLGjk9Ee4Tx6UMBrvKdrVg/s400/ETL.png" height="152" width="400" /></a></div>
<h3>
<span style="color: #0b5394;">BI Database Design & Dimension Modeling</span></h3>
<br />
If a company builds its own BI system using
Microsoft products the Microsoft SQL Server database is used to store
the data. SQL Server BI Developer Studio is used to create the cubes
used to retrieve the data from the data warehouse. The client application that displays the
data may bebuilt using Microsoft Office SharePoint Server, which has a
Business Intelligence site. Or, Microsoft Excel can be used; or, even
Visual Studio .NET can be used to build custom applications. (Note that information regarding the client applications will be covered in a future post that focuses on BI client
applications, scorecards and dashboards.)<br />
<br />
Many companies turn to Microsoft for their business intelligence solutions. This is particularly true of companies whose data is already stored in a SQL Server database. To build a business intelligence system Microsoft SQL Server Analysis Service (SSAS) is installed when SQL Server is installed. Microsoft SQL Server Analysis Service uses a server component implemented as a Microsoft Windows Service. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlY2jYYkUe9MXG6RVn3L_g-Fd0mJQUejubJwdiiqRfZw3_Iamx3zZB4CKtoIfcCtvzPgB48HWW6mYNQr-8nN4xbsOamodMEbQp83JXEuhHaO4d6sELYNtFlxZemzE1-5M7UxMKeuBqueM/s1600/picture1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlY2jYYkUe9MXG6RVn3L_g-Fd0mJQUejubJwdiiqRfZw3_Iamx3zZB4CKtoIfcCtvzPgB48HWW6mYNQr-8nN4xbsOamodMEbQp83JXEuhHaO4d6sELYNtFlxZemzE1-5M7UxMKeuBqueM/s1600/picture1.png" height="241" width="400" /></a></div>
<br />
<br />
Microsoft SQL Server Analysis Service supports XML Analysis (XMLA) to share data with client applications.<br />
<br />
The database part of the business intelligence system, commonly referred to as a data warehouse, includes dimension tables, fact tables and indexes. Dimension tables capture the descriptive data for each business activity. These tables include the details users will want to study to make important decisions about the business. For example, users may want to view a customer’s age, education, geographic location, marital status, primary language, etc. stored in the Customer dimension table. This information helps marketing managers and others better understand how to market to customers. The primary key of each dimension table is indexed to improve data warehouse performance.<br />
<br />
Examples of Dimension tables include Customers, Promotions, Employees, Departments, Products, etc. The following picture shows the Customer dimension table included in the <a href="http://msftdbprodsamples.codeplex.com/releases/view/105902" target="_blank">AdventureWorks</a> data warehouse designed by Microsoft for a bogus corporation.<br />
<br />
<div style="text-align: left;">
</div>
<div style="text-align: left;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiABSOmeISXMIEcv4ZrruVoyg6kL0yq84QIq1FrhiSnKw-6E_8kOcG3bOALqm3Tnd4awfapLd4gu1q7r_OT4c-u_wdK1ZfhWqRBP7LyoDBQL5oGtBv7Yia7Cc1rt7lVqzai1vCM_Crenp4/s1600/picture2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiABSOmeISXMIEcv4ZrruVoyg6kL0yq84QIq1FrhiSnKw-6E_8kOcG3bOALqm3Tnd4awfapLd4gu1q7r_OT4c-u_wdK1ZfhWqRBP7LyoDBQL5oGtBv7Yia7Cc1rt7lVqzai1vCM_Crenp4/s1600/picture2.png" height="400" width="127" /></a></div>
<br />
<br />
The Fact table, in a data warehouse, contains the numeric values for the data descriptions in the Dimension tables. Hence, each dimension table is associated with a Fact table. The data in Fact tables are key to answering questions about the business. For example, if a company wants to track the effectiveness of a promotion a Sales Fact table is created with fields that capture the amount sold (per sale), quantity sold (per sale), amount the product cost the store (per sale), etc. The fact table is indexed on the primary key developed from the foreign keys used to link the dimension tables to the fact table. The dimension table(s) connected to the Fact table would include the Product table, Date table, the Promotion table, etc. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq443Y6hkwC7hlO3OLomAzGLzIWHKI41AwFXI201i7SQsbmiVZSxqOpMhzjwmMEeLA2Gb02jqdpZn4asSj5GgAWloF3WyPg1TxvUGU-fXebZ8DfiJHeJ8yKopL3aDC54DKarg1bzTz9Nk/s1600/picture3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq443Y6hkwC7hlO3OLomAzGLzIWHKI41AwFXI201i7SQsbmiVZSxqOpMhzjwmMEeLA2Gb02jqdpZn4asSj5GgAWloF3WyPg1TxvUGU-fXebZ8DfiJHeJ8yKopL3aDC54DKarg1bzTz9Nk/s1600/picture3.png" height="211" width="400" /></a></div>
<br />
<br />
The modeling concept used to design a data warehouse database is called dimensional modeling. To design a database using this concept tables are grouped into dimensional models. Each dimensional model includes a fact table to manage the facts related to the dimension table(s), as discussed above. The fact tables are then linked to the relevant dimension tables. With dimensional modeling a model is created to represent data that supports each business activity. For example, one model captures sales, another captures inventory, another captures employees, etc. <br />
<br />
Data warehouse database designers apply either a star or a snowflake design. The complexity of the data defines the structure used to design the model. The star is the simplest design. With the star design each dimensional model has one or more dimension table(s) linked to a fact table using a primary key/foreign key relationship, as shown in the following example.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq443Y6hkwC7hlO3OLomAzGLzIWHKI41AwFXI201i7SQsbmiVZSxqOpMhzjwmMEeLA2Gb02jqdpZn4asSj5GgAWloF3WyPg1TxvUGU-fXebZ8DfiJHeJ8yKopL3aDC54DKarg1bzTz9Nk/s1600/picture3.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq443Y6hkwC7hlO3OLomAzGLzIWHKI41AwFXI201i7SQsbmiVZSxqOpMhzjwmMEeLA2Gb02jqdpZn4asSj5GgAWloF3WyPg1TxvUGU-fXebZ8DfiJHeJ8yKopL3aDC54DKarg1bzTz9Nk/s1600/picture3.png" height="211" width="400" /></a></div>
<br />
The snowflake structure is more complex than the star.. With the snowflake structure the dimension tables are linked to one another and then to the fact table using a primary key/foreign key relationship. For example, a product table might have a product category table related to it with the Fact table related to the product table. The AdventureWorks data warehouse includes a Product table that has a Product Category table related to the Product table and a Product Subcategory table related to the Product Category table. This means there are three dimension tables related to one another to describe the products. The Product table is linked to the Fact table. And, other dimension tables,as applicable, are linked to the fact table based on the business activity being modeled. Notice, however, this table structure is more complex than the star, which does not use subsets of data to describe data. This is just one of several ways to design a snowflake structure.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Data Mining</span></h3>
Once the data warehouse is in place, a developer can use the SQL Server BI Developer studio to build a cube, which is the component that interfaces with the database to retrieve the data. The cube stores the dimensions (from the selected dimension tables) and measures from the selected Facts tables. The dimension and measures selected are based on a question the business wants to answer; or, information users want to analyze such as the sales performance.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinobucvByHEQtpxXcMiTmsqy8Ub2V-yoFxPXeQlB7VEMuuR9L_qwhwYYKPJCzcOvBcLAi0LA3W1le4veW7h1TNG3Eu2g8AwFtUr9inKZMmfheYxXQmd_Dq04RxDE3NgpBrwBFRZd5wvbI/s1600/cube_dim_and_meas.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinobucvByHEQtpxXcMiTmsqy8Ub2V-yoFxPXeQlB7VEMuuR9L_qwhwYYKPJCzcOvBcLAi0LA3W1le4veW7h1TNG3Eu2g8AwFtUr9inKZMmfheYxXQmd_Dq04RxDE3NgpBrwBFRZd5wvbI/s320/cube_dim_and_meas.png" height="200" width="320" /></a></div>
<br />
If more complex analysis is desired a data mining structure can be built from the cube using the Data Mining Wizard.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgn0Rn3bBEmsr7FHp8dosThI0awVIbqbztYwUb4TstAS4olt3Mkr7L9ZJR8ncoqkxB3Qv5rsvlZg9RU3Doj3zTotAwQnx4PL8g7tihV1BJyUhOwsv72daNtKFFw-a3A-UVF5tGMPB7owA/s1600/data_mining_wizard1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgn0Rn3bBEmsr7FHp8dosThI0awVIbqbztYwUb4TstAS4olt3Mkr7L9ZJR8ncoqkxB3Qv5rsvlZg9RU3Doj3zTotAwQnx4PL8g7tihV1BJyUhOwsv72daNtKFFw-a3A-UVF5tGMPB7owA/s320/data_mining_wizard1.png" height="282" width="320" /></a></div>
<br />
Data mining provides data warehouse users the ability to see patterns or correlations that exist in the data.However, note that these patterns would not be realized without using algorithms to perform additional data processing. The following paragraphs outline a few of the Microsoft algorithms provided by Analysis Services.<br />
<br />
<br />
<h4 style="text-align: left;">
<span style="color: #0b5394;">Algorithms that Help With Inventory Management, Promotions, etc.</span></h4>
<br />
<br />
Many grocery stores, online eCommerce sites and other businesses capture and store customer transactions (also referred to as market basket transactions). This data is often analyzed to understand the combination of items people purchase. For example, in cities that experience snow storms, consumers always buy bread, milk and wine the day before the storm. This information is used to understand consumers' purchasing behaviors to support inventory management and build more effective promotions. The algorithm that makes identifying associations possible is the Association Algorithm. In fact, some eCommerce sites use the Association Algorithm to recommend additional items a customer might be interested in based on the items placed in the online shopping cart. The Association Algorithm is also used to support medical diagnosis.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVe7FLu5HyTPK8h3NFBN-Lt3QYoNjSAfkEl_JKX2BRgIDveNiaCBqY1XnBIAM8dtrT2BVljwJ7g7UjYaxdJ8DjiZ5k7kUCqN99MsKHrhyphenhyphenpiwZf-YRpA0yMFOfsRcFLU8Qg6bncoSmY8I0/s1600/data_mining_wizard2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVe7FLu5HyTPK8h3NFBN-Lt3QYoNjSAfkEl_JKX2BRgIDveNiaCBqY1XnBIAM8dtrT2BVljwJ7g7UjYaxdJ8DjiZ5k7kUCqN99MsKHrhyphenhyphenpiwZf-YRpA0yMFOfsRcFLU8Qg6bncoSmY8I0/s320/data_mining_wizard2.png" height="279" width="320" /></a></div>
<br />
<br />
<h4 style="text-align: left;">
<span style="color: #0b5394;"><b>Clustering People into <span style="font-family: times new roman,serif; font-size: small;">Homogeneous Groups</span></b></span></h4>
<br />
The Microsoft Clustering algorithm groups cases in a dataset into clusters to reveal conclusions people probably would not reach without the algorithm. The processed data can be used to view those with similar characteristics; or, rules can be applied to omit those with similar characteristics so that the anomalies remain. For example, the algorithm may present a cluster that shows women who buy paper-plates on Friday also buy lipstick. <br />
<h4 style="text-align: left;">
<span style="color: #0b5394;">Making Predictions</span></h4>
<br />
The Microsoft Decision Trees Algorithm is a classification and regression Algorithm used for predictive modeling. For example, a company would use the Microsoft Decision Tree Algorithm if the sales team wanted to predict whether a customer is likely to purchase a particular product or service. This would ensure time is only spent marketing to customers who are likely to buy the product or service. The prediction would be based on information stored in the data warehouse including buying patters and demographic data <br />
<br />
<h4 style="text-align: left;">
<span style="color: #0b5394;">Predictions, Factors and Classifications</span></h4>
<br />
The Microsoft Logistic Regression Algorithm is a highly flexible Algorithm that supports multiple analytical tasks. For example, it can use demographic data to make predictions about a person or group of persons' risk for a certain disease. The algorithm may also be used to weight the factors that contribute to a specific outcome. For example, what factors cause a customer to return to the same store.<br />
<br />
These are just a few of the models available when using the Data Mining Structure Wizard in Microsoft's SQL Server BI Developer Studio.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Summary</span></h3>
<br />
Companies seeking to remove the guess work from important business
decisions have turned to business intelligence solutions.With business
intelligence companies can use facts (based on historical data) to improve their performance and sales.<br />
<br />
The database part of the business intelligence system, commonly referred
to as a data warehouse, includes dimension tables, fact tables and
indexes. Dimension tables capture the descriptive data for each business
activity. The Fact table contains the numeric values for the data descriptions in the Dimension tables. The modeling concept used to design a data warehouse database is called dimensional modeling. Data warehouse database designers apply either a star or a snowflake
design. The complexity of the data defines the structure used to design
the model.<br />
<br />
Once the data warehouse is in place, a developer can use the SQL Server
BI Developer studio to build a cube, which is the component that
interfaces with the database to retrieve the data. The cube stores the
dimensions (from the selected dimension tables) and measures from the
selected Facts tables. If more complex analysis is desired a data mining structure can be built from the cube using the Data Mining Wizard.<br />
<br />
Data mining provides data warehouse users the ability to see patterns or
correlations that exist in the data; but, these patterns would not be
realized without using algorithms to perform additional data processing.
SQL Server
BI Developer studio includes a number of algorithms to help organizations realize patterns to increase sales and build a more loyal customer base.<br />
<br />
To learn more about Business Intelligence visit <a href="http://www.microsoft.com/en-us/bi/default.aspx" target="_blank">Microsoft's Business Intelligence home page</a>. To learn more about Microsoft SQL Server Business Intelligence Development Studio visit <a href="http://msdn.microsoft.com/en-us/library/ms173767%28v=sql.105%29.aspx" target="_blank">Introducing Business Intelligence Development Studio</a>.<br />
<br />
<span style="color: white;"><span class="status">5CT9V3W3AEN9</span>
</span></div>
</div>
Anonymoushttp://www.blogger.com/profile/11770164970801071498noreply@blogger.comtag:blogger.com,1999:blog-7793781044289546361.post-40723527093669876942013-07-07T23:25:00.001-07:002013-07-12T07:47:42.364-07:00Medical Information Technology: Electronic Medical Records<div dir="ltr" style="text-align: left;" trbidi="on">
Gone are the days when nurses had to wear a wrist watch, with a second hand, to count the patient's pulse and respirations. And nurses no longer stand grasping an oral thermometer for 60 seconds to take the patient's temperature. These are just a couple of the patient care tasks that are easier to perform thanks to up-to-date technology used in many hospitals. This article provides a basic overview on why the use of technology has increased in the healthcare industry. It also takes a look at some of the electronic medical record capabilities. And, it discusses interface engines--the technology used to share medical data.<br />
<br />
<h3 style="text-align: left;">
Why Technology Has Become Popular</h3>
<br />
January 2010, the 111th Congress passed the Patient Protection and Affordable Care Act (commonly referred to as the Affordable Care Act) . Two months later President Obama signed the Act into law. The Affordable Care Act "encourages the use of, integration with, and coordination of health information technology (including [the] use of technology that is compatible with electronic medical records and personal health records) ..."<br />
<br />
While the Act encouraged the use of technology; the real incentive came through the promise of Meaningful Use incentive payments. The <a href="http://www.cms.gov/Regulations-and-Guidance/Legislation/EHRIncentivePrograms/index.html?redirect=/ehrincentiveprograms/" target="_blank">Centers for Medicare & Medicaid Services</a> (a division of the US Department of Health & Human Services) promised two forms of incentive payments: One from Medicare and the other from Medicaid. The Medicare and Medicaid Electronic Health Record (EHR) Incentive Programs promised incentive
payments to eligible professionals and medical facilities as they adopt, implement or upgrade and demonstrate
meaningful use of certified EHR technology. The Medicare EHR Incentive Program promised up to $44,000; and, the Medicaid EHR Incentive Program promised up
to $63,750.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">A Look at the Electronic Medical Record Capabilities</span></h3>
<a href="http://www.gpo.gov/fdsys/pkg/CFR-2011-title45-vol1/pdf/CFR-2011-title45-vol1-part170.pdf" target="_blank">45 CFR Part 170</a> - Health Information Technology Standards, Implementation Specifications, and Certification Criteria and Certification Programs for Health Information Technology defines the capabilities and certification criteria electronic health records must meet. The following section outlines some of the information found in 45 CFR Part 170.<br />
<br />
<b><span style="color: #0b5394;">Data Standardization</span></b><br />
<br />
One key aspect of the Electronic Health Record (also referred to as the electronic medical record) is that patient care information is captured using standardized data. Some key benefits to the health industry adopting standards to classify diseases, procedures, treatments, etc. is compelling. For example, hospitals can share <a href="http://www.cdc.gov/Mmwr/preview/mmwrhtml/su5301a3.htm" target="_blank">syndromic surveillance data</a> (used for early detection of biologic terrorism) with the Center for Disease Control (CDC). And, the CDC's system would be able to store data received and generate accurate reports although the data came from different organizations and different systems.<br />
<br />
Following is a list of some of the data standards used by electronic medical record systems:
<br />
<ul style="text-align: left;">
<li><a href="http://www.cdc.gov/nchs/icd/icd9.htm" target="_blank">International Classification of Diseases (ICD-9) and ICD-10</a> provides a set of universal names and ID codes for diagnosis, procedures, diseases and injuries and causes of injury. </li>
<li><a href="http://loinc.org/faq/getting-started/getting-started/#what-is-loinc" target="_blank">Logical Observation Identifiers Names and Codes (LOINC)</a> provides a universal set of names and ID codes to describe laboratory and clinical test results.</li>
<li><a href="http://ihtsdo.org/fileadmin/user_upload/Docs_01/Publications/SNOMED_CT/SnomedCt_Intro_20130418.pdf" target="_blank">Systematized Nomenclature of Medicine--Clinical Terms (SNOMED-CT)</a> is a structured listing of coded, clinical terms developed for use in Electronic Health Record systems.</li>
<li><a href="http://www.nlm.nih.gov/research/umls/rxnorm/" target="_blank">RX Norm</a> provides standardized names for drugs along with links to the varying names for the drugs. </li>
</ul>
<span style="color: #0b5394;"><b>End-User Tasks</b></span><br />
<br />
This section outlines some of the software capabilities found in an electronic health record. It also includes example screenshots from CPRS--the electronic medical records system implemented by the US Department of Veterans Affairs implemented.<br />
<ul style="text-align: left;">
<li><b>Real-Time Status Updates: </b>When a user first logs into the system the user sees the
following cover, which provides real-time status updates on the selected
patient.</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTZZF1NoPdQpNMKXc-KnM_NBnlb_dcnI6tn-BRQ0B7R_qzNIohwki6we1EGqSCvlq-sSGo5ddOi4MpWYtqghz0XrVmmEhsmKnDEcfMwbQHpTmYWkobMKnYE07Hkyir8_Su5Zq-uYn9RUk/s1600/cover.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTZZF1NoPdQpNMKXc-KnM_NBnlb_dcnI6tn-BRQ0B7R_qzNIohwki6we1EGqSCvlq-sSGo5ddOi4MpWYtqghz0XrVmmEhsmKnDEcfMwbQHpTmYWkobMKnYE07Hkyir8_Su5Zq-uYn9RUk/s1600/cover.png" height="276" width="320" /></a></div>
<ul style="text-align: left;">
<li><b>Record a Patient's Problem:</b> The ability to document the patient's problem using ICD-10 or other applicable standard is necessary.</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeHLEuJ0bZ39w5YCb_paufVv9O3i8guLym2_X87UpSMYPfHNUVTK1KUDqunprkmoUuzKtIo6ydyJOgQaonSRrZiPd6NYbj-jInjMouyZsav2We7rfWm1AgdWZHxPdUKXhjymP3ticia8I/s1600/search_problems.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeHLEuJ0bZ39w5YCb_paufVv9O3i8guLym2_X87UpSMYPfHNUVTK1KUDqunprkmoUuzKtIo6ydyJOgQaonSRrZiPd6NYbj-jInjMouyZsav2We7rfWm1AgdWZHxPdUKXhjymP3ticia8I/s1600/search_problems.png" height="276" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2InC7s8y7OLBmujZBATlgJLMZUs4rc2xBloYL_Ebtu1hY-pR5HsP4vkcUuGzcD7ja-Llzca5Nn3lLje0i9l8wvcz0cdr5EXB6iCaRtSFFwX4J_FgnDqpvjpnLpyseYIizNAZ0ZujK0Ko/s1600/new_progress_note4.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2InC7s8y7OLBmujZBATlgJLMZUs4rc2xBloYL_Ebtu1hY-pR5HsP4vkcUuGzcD7ja-Llzca5Nn3lLje0i9l8wvcz0cdr5EXB6iCaRtSFFwX4J_FgnDqpvjpnLpyseYIizNAZ0ZujK0Ko/s1600/new_progress_note4.png" height="345" width="400" /></a></div>
<ul style="text-align: left;">
<li><b>Electronic prescribing:</b> A facility should be able to electronically transmit a patient's prescription directly to a pharmacy.</li>
<li><b>Electronic submission to public health agencies for surveillance or reporting:</b> Facilities should be able to transmit messages to the Center for Disease Control or other organizations.</li>
<li><b>Capture a Patient's Progress</b>: This capability ensures medical staff can add daily notes about a patient's response to treatment and care.</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6ySB8VOj9O51nSWjeT0NSQ1AqH4T80zyTamCTopZJ2JySOWZS29LNEvd5H0qDyAUg_cvaIUzT5KqWB3q2LT5xLo6dMAvGdJqF181pGXok_aYEFE4a2UmuPcA3EJGhjaSChm99zqYHKKQ/s1600/new_progress_note.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6ySB8VOj9O51nSWjeT0NSQ1AqH4T80zyTamCTopZJ2JySOWZS29LNEvd5H0qDyAUg_cvaIUzT5KqWB3q2LT5xLo6dMAvGdJqF181pGXok_aYEFE4a2UmuPcA3EJGhjaSChm99zqYHKKQ/s1600/new_progress_note.png" height="345" width="400" /></a></div>
<br />
<ul style="text-align: left;">
<li><b>Audit Trail for User Actions:</b> The Electronic Health Record should record actions by documenting the date, time, patient identification, and user identification associated with data that is created, modified, accessed, or deleted.</li>
<li><b>Perform Drug-drug, drug-allergy interaction checks:</b> "The Electronic Health Record should automatically and electronically generate and indicate in real-time, notifications at the point of care for drug-drug and drug-allergy contraindications."</li>
<li><b>Capture, store & manage diagnosis information</b>.</li>
<li><b>Generate clinical reminders:</b> The system should generate clinical reminders based on relevant clinical data to support preventive care. For example, based on a man's race, age and other demographics a reminder may prompt the facility to contact the patient to schedule prostate cancer screening.</li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXzjTHpdQHp3CsclRXKOZ5sY8spze4uGuJ7k9jjU7sTvES59EPjjgozs3U2Ghny0TLK856Vot4R9kavOZ6nYLTileut79-eTB-T_TDNNRYphdr3PXHcUda9YWUTWB6pwxVo-c2diYBPQQ/s1600/reminders.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXzjTHpdQHp3CsclRXKOZ5sY8spze4uGuJ7k9jjU7sTvES59EPjjgozs3U2Ghny0TLK856Vot4R9kavOZ6nYLTileut79-eTB-T_TDNNRYphdr3PXHcUda9YWUTWB6pwxVo-c2diYBPQQ/s1600/reminders.png" height="309" width="320" /></a></div>
<ul style="text-align: left;">
<li><b>Patient medications, labs, x-rays/images: </b>The electronic health record should provide a way for physicians to order patient medications, labs, x-rays/images.</li>
</ul>
The following pictures show additional capabilities provided through CPRS. For example, staff can record a discharge summary.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLr8X-L-qDghE5PejZjzdjaug3UU_65m-9w-3RLq16taf3NLQxg-8DgH1U21pC0Fcx3yoVqOV1M_3MbHD9jwmXoKJ3B5zYkGxJ203o0RNOAlelYNHeIDLJ2C89dVrbxDXtqtSFg8Txn5U/s1600/discharge_summary.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLr8X-L-qDghE5PejZjzdjaug3UU_65m-9w-3RLq16taf3NLQxg-8DgH1U21pC0Fcx3yoVqOV1M_3MbHD9jwmXoKJ3B5zYkGxJ203o0RNOAlelYNHeIDLJ2C89dVrbxDXtqtSFg8Txn5U/s1600/discharge_summary.png" height="276" width="320" /></a></div>
Staff can capture and manage autopsy results that help determine the cause of death. In CPRS this information is accessed using the Labs tab.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzmU9eWZfU3DAD5lCiV3_M3FCW0j2fJgkaBArtSgLcwfNWSQtTKnaaoIypL2BN0sqpkgNR-JdXxMVQPL37xOfK_tagWAhWKDb8h5_viG6Yh7cXXrp9gfYGUvx66WunU9KGCFgRiwTAGgM/s1600/labs.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzmU9eWZfU3DAD5lCiV3_M3FCW0j2fJgkaBArtSgLcwfNWSQtTKnaaoIypL2BN0sqpkgNR-JdXxMVQPL37xOfK_tagWAhWKDb8h5_viG6Yh7cXXrp9gfYGUvx66WunU9KGCFgRiwTAGgM/s1600/labs.png" height="345" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
Nurses can also electronically document a patient's admission assessment.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVrC0V4yfkKc_6YcEWS-jnv1sgblS5K5z_EVysxPhsY8hSsf8eQVT6auRSH6xPWXY9fYn67BMsBCb5CPsJxcbjw1FowBzFvmmOHFY8D-Ipob39XdZjF7q4YuJE2ASnySf5484tiPLnnvw/s1600/new_progress_note3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVrC0V4yfkKc_6YcEWS-jnv1sgblS5K5z_EVysxPhsY8hSsf8eQVT6auRSH6xPWXY9fYn67BMsBCb5CPsJxcbjw1FowBzFvmmOHFY8D-Ipob39XdZjF7q4YuJE2ASnySf5484tiPLnnvw/s1600/new_progress_note3.png" height="345" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<b>Note:</b> The US Department of Veterans Affairs also built VistA Web, a web-based user interface that allows practitioners to view a patient's record from any location. The premise was patients should be able to receive care from any clinic or hospital. Unfortunately, many employees don't know about VistA web and even fewer know how to use it. This proves no matter how impressive the features of a system are; they are useless without end-user training.<br />
<br />
For additional information on Electronic Health Record capabilities review <a href="http://www.gpo.gov/fdsys/pkg/CFR-2011-title45-vol1/pdf/CFR-2011-title45-vol1-part170.pdf" target="_blank">45 CFR Part 170.</a> <br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">How Medical Information Technology Is Integrated </span></h3>
<br />
For years many hospitals used individual systems for laboratory transactions (i.e., capture lab results), to admit/discharge patients and to manage patient accounts and billing. But, there was an imbalance because some information was electronic and some wasn't. When it was decided the health systems should be able to share data (both internally and externally) someone needed to define a way in which health data could be passed from one system to another.<br />
<br />
An organization called the <span class="st"><a href="http://www.hl7.org/" target="_blank">Health Level Seven International (HL7)</a> </span>developed a group of health standards that outlined the message types, formats, segments, fields, data types and symbols that could be used to share health data. Today these message types, formats, segments, fields, data types and symbols are used to build HL7 messages to share health data.<br />
<br />
<span class="st">The name HL7 was used, for the standards and organization, because the HL7 messages use the Seventh Layer (also called the Application Layer) of the </span><span class="st"><span class="st">Open Systems Interconnection (</span>OSI) model to share the health data. </span><br />
<span class="st"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXQnrVGMzoQWy4kz6KGO9RtCLhMCkuPKoFHvl_wqRoc748Eg2pgM2BVToads92M75Mzr36xLuyz0Irjk61FjS5KbL_DJ2GzLdOypTHxVS6ZHn47W67TIi6fNedwg-IItfNQQW8irSZGzw/s667/7OSILayers.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXQnrVGMzoQWy4kz6KGO9RtCLhMCkuPKoFHvl_wqRoc748Eg2pgM2BVToads92M75Mzr36xLuyz0Irjk61FjS5KbL_DJ2GzLdOypTHxVS6ZHn47W67TIi6fNedwg-IItfNQQW8irSZGzw/s667/7OSILayers.png" height="176" width="320" /></a></div>
<span class="st"><br /></span>
One might envision an HL7 message to look like an email message; but it does not. Instead these messages include a combination of data and symbols. Developers use a special HL7 Mapping Tool to work with HL7 messages. Following is an HL7 message displayed using standard encoding rules. Note that the recommended XML format exists, although it is not shown in this article:<br />
<br />
<b>MSH</b>|^~\&|TBHS|The Best Hospital System|SBHS|Second Best Hospital System|20130701143619||ADT^A04|MSG.0|D|2.4<br />
<b>EVN</b>||20040328134602.1234+0600||03<br />
<b>PID</b>|1||A74328~A74333~A74331||Doe^John^Ellie|Doer|20040328134602.1234+0600|M|||3117 Clopper Road&90238^^Atlanta^GA^30076-1455||404-693-3432^^^joe.doe@mybus.com~(404)555-2312^^^Jan.doe@herbus.com~(404)221-7218^^^jane@herbus.com~(404)463-9900|||||A743324335||IN35489768457^G^19980319<br />
<b>PV1</b>|1|C||U|||3472390832^Reinhold^Wesley|3472390832^Simmons^Connor|||||||||||A74324|||||||||||||||||||||||||20040328134602.1234+0600|20040328134602.1234+0600|1243.00|43824.12||3897.00<br />
<br />
<br />
There are several important things to know about an HL7 message. First, there are various types of HL7 messages. Each message type is identified by its three-letter code and a trigger event code. For example, the above message is an ADT-A01 message. ADT tells us the message is associated with a patient admit/visit activity. A01 is the trigger event, which is registering a patient. Whenever a patient is registered as part of the patient care admittance or visit process, an ADT-A01 message can be sent to store the patient's identity and other patient registration information. There are a number of HL7 messages that can be sent based on events that occur throughout the patient care process. A few of the HL7 messages are as follows:<br />
<br />
ADT-A01 - Admit/Visit Notification<br />
ADT-A02 - Transfer a Patient<br />
ADT-A03 - Discharge/End Visit<br />
ADT-A06 - Change an outpatient to an inpatient<br />
ADT-A07 - Change an inpatient to an outpatient<br />
ADT-A11 - Cancel Admit/Visit Notification<br />
ADT-A12 - Cancel Transfer<br />
VXU-V04 - Unsolicited Vaccination record update<br />
SSR-U05 - Specimen Status Request<br />
<br />
Every HL7 message is made up of segments. Some segments are required others are not. And, the segments included vary from message to message. Although it should be noted that the MSH segment is included in every message because it contains important information about the message.<br />
<br />
Within a segment there are fields that contain information relevant to the associated event. Following is a table that outlines the segments and descriptions included in the ADT-A01 message:<br />
<br />
<table style="height: 170px; width: 385px;">
<tbody>
<tr>
<td><b>Segment</b></td>
<td><b>Description</b></td>
</tr>
<tr>
<td>MSH</td>
<td>Message header</td>
</tr>
<tr>
<td>EVN</td>
<td>Event type</td>
</tr>
<tr>
<td>PID</td>
<td>Patient identification data</td>
</tr>
<tr>
<td>PV1</td>
<td>Patient visit details</td>
</tr>
<tr>
<td>[{OBX}]</td>
<td>Observation / Result information</td>
</tr>
<tr>
<td>[{AL1}]</td>
<td>Patient allergy details</td>
</tr>
<tr>
<td>[{DG1}]</td>
<td>Diagnosis details</td>
</tr>
</tbody></table>
<br />
The above table shows the segments that make up the ADT-A01 message. As previously mentioned each segment includes fields that contain data related to the event. For example, the PID segment includes information about the patient such as family name (last name), given name (first name), mother's maiden name, date/time of birth, patient address, along with some demographic data fields. Notice some of the above segments are enclosed in brackets []. The brackets mean the segments are optional and are not required. This means you may or may not see a message with the [OBX], [AL1] and [DG1] segments. Curly brackets {} mean the segment may contain repeating fields so that additional information may be added. The following picture shows how the data may look using an HL7 Developer Mapping Tool.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYeWVtpNivBj4hIKDA8-c5P_h1KuVOz8SSHaqlC2hcwWXUgecoRvphdipSFBmViR6iDZM0ZFcL1J9b5rfA_rlAfVyxunl_OoeOtadzDxqO9UDrhMo8VVNke8Z_i0pI5LfK7zUq8Wb1wQo/s1600/segment_fields.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYeWVtpNivBj4hIKDA8-c5P_h1KuVOz8SSHaqlC2hcwWXUgecoRvphdipSFBmViR6iDZM0ZFcL1J9b5rfA_rlAfVyxunl_OoeOtadzDxqO9UDrhMo8VVNke8Z_i0pI5LfK7zUq8Wb1wQo/s400/segment_fields.png" height="228" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
Just as fields in a database table are assigned a data type; fields in an HL7 message are also assigned data types. Some of the common data types include string, date/time, money, numeric, etc. In addition to fields (that hold data) HL7 messages include symbols. For example, each field begins and ends with a field separator that looks like this: | If a field does not contain any data and the field beside it does contain data the message field separators look like this: | |field with data| Adding a field separator, even if no data is included, ensures each field falls in its correct position based on the HL7 standard's definition of the message.<br />
<br />
If a field has more than one part a component separator ^ is used. For example, <span style="font-family: Verdana; font-size: x-small;">|Doe^John^I^^| </span>field includes multiple components such as the patient's last name, first name and middle initial.<br />
<span style="font-family: Verdana; font-size: x-small;"><br /></span>
<br />
The ~ character is used to identify a repeating field. The following image shows an example of this character and how the repeating field works.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPRStxjfKaZ-3J_97-IM0G9B5rVLViHZWLp8LYaSk7ArmMlmWi6J9WGqbSbISOBiVbKFLRxiFmQeYKSvx84jgnn50MlMEy_3V5oTeR3pOuAPKnpTfCJpsYPPzlE-WrOJZIC1CVni5MMJo/s1600/HL7_Message_code.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPRStxjfKaZ-3J_97-IM0G9B5rVLViHZWLp8LYaSk7ArmMlmWi6J9WGqbSbISOBiVbKFLRxiFmQeYKSvx84jgnn50MlMEy_3V5oTeR3pOuAPKnpTfCJpsYPPzlE-WrOJZIC1CVni5MMJo/s400/HL7_Message_code.png" height="124" width="400" /></a></div>
HL7 also includes an escape character that looks like this: / . This character can be used with other characters to ensure message field data is presented in its proper context. For example, if message data includes the ampersand sign (&) the "&" would be added to the message as follows /T/ so the message data relays as an ampersand. This is done because the "&" symbol is also an encoded symbol in HL7.<br />
<br />
As previously mentioned, all fields in a segment are accounted for through the field separators. Within a message the identity of the segment will always be first. The following partial message shows the MSH segment. After the segment identity the first position holds a field separator. The second position defines the encoding characters ^~\&. The third position includes the name of the sending application (TBHS). The fourth position includes the name of the sending facility "The Best Hospital System", etc.<br />
<br />
<br />
MSH|^~\&|TBHS|The Best Hospital System|SBHS|Second Best Hospital System|20130701143619||ADT^A04|MSG.0|D|2.4 <br />
<br />
The MSH segment of every message will always contain the same fields because segments are defined by the standard. Through the standard's definition systems built by different organizations or even different developers can share data because everyone knows the rules regarding what is or is not acceptable. <br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Defining the Data to Share</span></h3>
<br />
Whether two systems in the same medical facility want to share data; or, two systems in two different facilities want to share data--information regarding what will be shared must be defined. Most organizations produce a guide that describes the HL7 messages to be shared and relevant information about those messages. For example, the Center for Disease Control (CDC) developed an HL7 Implementation Guide describing immunization messages that can be shared. The US Department of Veterans Affairs produced an HL7 Interface Specification or handbook that contains the HL7 message information. Regardless of what the guide is called it must include details about the HL7 messages, segments and fields that will be shared.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_gGUT27Am42sWu26iijKMrDp1m5nHyehFuwUQFBGn3gyg9h6jTJAIVloQmGEXYxIQYl_ISGnYj_jL41JIYCUe95MKTT5F4XwE4aGcikL9mMnVFvVQipifEQZ1FiM3ulIdtxHg1g1BqrE/s1600/HL7_imp_guide_CDC.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_gGUT27Am42sWu26iijKMrDp1m5nHyehFuwUQFBGn3gyg9h6jTJAIVloQmGEXYxIQYl_ISGnYj_jL41JIYCUe95MKTT5F4XwE4aGcikL9mMnVFvVQipifEQZ1FiM3ulIdtxHg1g1BqrE/s320/HL7_imp_guide_CDC.png" height="308" width="320" /></a></div>
These documents typically describe the message types that will be shared, the segments and fields as well as what fields will be repeated. The guides will also define what fields are required. If this information is not captured sharing data will become a problem. For example, if a receiving system requires data that the sending system does not include, the receiving system will not accept the message. In addition, the acceptable field lengths are also included in the document. And, if Z segments (which are locally defined segments not outlined in the HL7 standards) will be used these segments are also described in detail along with other HL7 message details<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">HL7 Interface (or Integration) Engines</span></h3>
<br />
To share data between medical systems (whether internal or external) an interface engine is required. An HL7 Interface Engine is created by installing the applicable interface engine software on a computer running the appropriate operating system.<br />
<br />
An HL7 Message Mapping tool must be used to map the HL7 segment fields to database table fields. This ensures the interface engine knows what database table fields the HL7 segment fields are associated with. A Software Developer also must build two components (if the interface engine doesn't come with them). These components reside on the interface engine. One component assembles database table data into an HL7 message. The interface engine then sends the data to the receiving system. The second component strips away the HL7 symbols so only data that can be inserted into a database table remains. Interface Engines include listeners that look out for incoming HL7 messages. As these messages are received they are properly processed and the data is inserted into the applicable database table.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKw5M5DpYi6J54Miy-DMSzVmZrgSXJJRpDiMWgXSxcNS_gNa839RS_36SzwJYTNAkiskQhmkKD2ycIW5BFfX7_BNfmtXlCybccoC3eNS3ixLd9jIRkTANnSkLB_vt9D4xJrxNqCAz_d9w/s893/electronic_medical_record_systems.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKw5M5DpYi6J54Miy-DMSzVmZrgSXJJRpDiMWgXSxcNS_gNa839RS_36SzwJYTNAkiskQhmkKD2ycIW5BFfX7_BNfmtXlCybccoC3eNS3ixLd9jIRkTANnSkLB_vt9D4xJrxNqCAz_d9w/s893/electronic_medical_record_systems.png" height="640" width="537" /> </a><br />
<br />
Another message type worth discussing is the Acknowledgment or ACK HL7 message type. Most interface engines can be configured to support Acknowledgment messages, which are particularly useful for messages sent between two different local area networks (LANs). When a sending interface engine sends a message the receiving interface engine can return an Acknowledgement message. The Acknowledgement includes information identifying the message received. One key purpose of the ACK is to let the sending system know the message sent was received. <br />
<br />
There are a number of HL7 Interface Engines available on the market. Following is a list of some of the HL7 Interface Engines available today:<br />
<br />
<ul style="text-align: left;">
<li><a href="http://www.orionhealth.com/rhapsody-integration-engine" target="_blank">Orion Health Rhapsody</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/bb967001%28v=bts.10%29.aspx" target="_blank">Microsoft® BizTalk® Server</a></li>
<li><a href="http://www.interfaceware.com/iguana.html" target="_blank">Iguana by iNTERFACEWARE</a></li>
<li><a href="http://www.intersystems.com/hl7/" target="_blank">Ensemble by Intersystems</a></li>
</ul>
<br />
For more information about HL7 you can visit <a href="http://www.hl7.org/implement/standards/product_brief.cfm?product_id=185#ImpGuides" target="_blank">Health Level Seven International</a>.
</div>
Anonymoushttp://www.blogger.com/profile/11770164970801071498noreply@blogger.comtag:blogger.com,1999:blog-7793781044289546361.post-22996848056021699552013-06-24T20:43:00.005-07:002013-06-24T21:28:41.147-07:00Requests for Change: Change Management<div dir="ltr" style="text-align: left;" trbidi="on">
Change Management is the process of managing requests to change the software after it has been deployed into production. This article discusses the concepts associated with change management including the change control manager, the change management request and the change management process.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">What is Change Management?</span></h3>
<br />
Change management is the methodology used to manage changes to software in production. There are several reasons why software changes after it has been released into production:<br />
<br />
1. If a user uncovers a defect, not encountered during testing, a Request is submitted to fix the defect.<br />
<br />
It may seem that if testing was performed on software defects should not be encountered. However, this thought is not true. When a test case is created, depending on the software functionality, variations of the test items are used to ensure the software behaves the way it is supposed to. For example, there may be a test case designed to test various scenarios associated with adding a customer order. For example, a requirement may state that “if, on Tuesday, a customer’s order is $100 or more the customer shall receive a $10 discount on the order.” This one requirement requires multiple test scenarios to ensure the system behaves as stated. For example, one test scenario may include creating an order, on Tuesday, that totals $99.99 to make sure a discount isn’t added to orders below $100. Another scenario may test adding an order on Monday to make sure the $10 discount isn't added to orders over $100.00. The tester will also need to create a test scenario to make sure the discount is added, to orders over $100.00, on Tuesday. The tester will even create scenarios that test adding orders over $100 for Thursday through Sunday to make sure discounts are only added on the correct day. This is necessary because there are various ways the requirements can be programmed. The programming logic used to create the procedure that calculates and applies the discount is what drives how the software will behave when tested using different scenarios. Therefore, it is possible for a tester to test the software and the user may still uncover a scenario that wasn’t covered during testing.<br />
<br />
2. If a user submits a Request identifying required software functionality that is missing; a request to enhance the software is submitted.<br />
<br />
Let’s say all of the requirements have been gathered. Everyone agrees that all of the requirements are listed. The stakeholder prioritizes the requirements. However, a requirement that was supposed to be implemented in the first release was overlooked. For example, the “delete order” functionality was omitted. A customer then calls the Help Desk and requests to delete an order; but the functionality was not included in the current release. Although there is an upcoming planned release; an immediate enhancement may need to be performed to support customer satisfaction.<br />
<br />
3. A menu or button name or other text built into the software may be misspelled. A Request will also be submitted to request this change.<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">The Change Request</span></h3>
<h3 style="text-align: left;">
<span style="color: #0b5394;"> </span></h3>
The Change Request (CR) is a form. An organization may use a paper CR or an online CR. IBM's Rational ClearQuest is the most commonly used Change Management software. However, online CRs are more practical because the software can ensure the process is properly executed for each request. The CR provides information about the software product to be changed, the type of change requested (i.e., enhancement, defect, etc.), details about the change, the name of the person requesting the change, etc.<br />
<br />
Typically, during the planning phase of the project, a plan is defined regarding how the software change will be managed. This information is usually outlined in the Configuration Management Plan, which is part of the Software Development Plan. Configuration Management and Change Management typically go hand-in-hand. This is because Configuration Management involves concepts used to assign a unique identifier to software builds and artifacts so all items related to a particular version of software may can be identified. <br />
<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">The Change Management Process</span></h3>
<br />
Change Management is implemented as part of the Help Desk Support services. Often help desk software (such as IBM's Remedy) is used along with Change Management software. The Help Desk software manages problem requests. However, the problems may not require change to software. This is why the two separate software systems are used. For example, a user may encounter problems using software because the user may not understand how to properly operate the software. The user may then call the Help Desk. The Help Desk Specialist can instruct the user on how to perform the task properly and the Help Desk ticket is closed. Change Management software, on the other hand, captures requests for change or CRs. A Help Desk associate may enter the CR. Or, depending on the organization, business analysts and end-users may enter CRs.<br />
<br />
The CR is associated with statuses so it may move through a process. This approach ensures the appropriate notifications are sent to the applicable people to alert them about the CR and related activities. The most commonly used statuses are as follows: Submitted, Postponed, Opened, More Information, Rejected, Assigned, Resolved, Test Failed, Verified, Closed.<br />
<br />
When a CR is entered it is assigned a "Submitted" status. After the Change Control Board (CCB) accesses the CR it moves to the Open, More Info, Postponed, Rejected, or Closed state. Following is a brief description of these statuses:<br />
<br />
<ul style="text-align: left;">
<li>Open: The CR will be assigned so the software can be changed.</li>
<li>Postponed: The change will be made to the software during an upcoming release.</li>
<li>More Info: This status is assigned if the Business Analyst must gather additional information from the submitter.</li>
<li>Rejected: The CR is assigned this status if the change is not approved. For example, if a duplicate CR is found. When this occurs a second review is conducted to confirm that a duplicate exists. If it does the CR is Closed. </li>
<li>Assigned: The CR moves to this state when a software developer has been assigned to make the changed.</li>
<li>Resolved: Once the changes have been made the CR is marked as Resolved so the software change(s) can be verified.</li>
<li>Verified: The software change(s) have been verified through testing. If the change(s) pass(es) testing the build is incorporated into a release and deployed into production. The Release build is verified again to make sure everything works fine. (Production testing is particularly important because the production server will usually have a different name from the test server. If an improper server name is used some of the code will not work. And, the production server may be configured differently from the test server, which will also cause problems.) If everything works fine the CR is closed. If there is a problem additional work is performed and the CR is verified again.</li>
<li>Test Failed: Once the status is changed to resolved the changes are verified through testing. If the change fails testing the status of the CR is changed to "Test Failed". Additional changes must be made; and, once the software is tested. If the changes pass testing the status is then changed to Verified.</li>
</ul>
<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Change Control Board</span></h3>
<br />
The Change Control Board (also referred to as the change control manager) is responsible for ensuring a cohesive Change Control process is used. The Change Control Board is made up of a group of people who represent users, developers, testers, project managers and executives. The job of the Change Control Board is to review the CR to ensure the request is appropriate and necessary. A Chair is also assigned to head the Change Control Board. The Chair is used to handle problems and enforce the Change Control Board's decisions.<br />
<br />
The amount of work performed by the Change Control Board is usually driven by the size of the organization. For example, a large organization that has multiple applications may need to review information from the <a href="http://bussystemanalysis.blogspot.com/2010/10/requirements-defining-business.html" target="_blank">Software Architecture</a> before making a decision. The Change Control Board will request a report that shows software capabilities for each software component. Each software components is associated with the name of the software so the Change Control Board can tell what software offers what capabilities:<br />
<ul style="text-align: left;">
<li><b>Time Management Software</b></li>
<ul>
<li><b>Software Component: </b>Projects</li>
<ul>
<li><b>Capability</b>: Add Projects</li>
<li><b>Capability</b>: Update Projects</li>
<li><b>Capability</b>: Search Projects</li>
<li><b>Capability</b>: Add Project Tasks</li>
<li><b>Capability</b>: View List of Project Tasks</li>
<li><b>Capability: </b>Update Project Tasks</li>
<li><b>Capability: </b>Delete Project Tasks</li>
</ul>
</ul>
</ul>
<br />
If a request is made for software capability that already exists for the same software further clarification, regarding the request, is requested. In addition, the CCB may ask for an <a href="http://bussystemanalysis.blogspot.com/2010/09/requirements-traceability.html" target="_blank">Impact Analysis</a> Report. If this occurs a Tester is asked to create the test cases and test items. The test cases and test items are traced so the amount of work can be properly accessed by the CCB. The CCB takes costs, risks and other organizational objectives and concerns into consideration before making a decision. If the CCB agrees to the change it will also identify when the change should be made (i.e., now or a specific release).<br />
<br />
<h3 style="text-align: left;">
<span style="color: #0b5394;">Summary</span></h3>
<br />
Change management is the methodology used to manage changes to software in production. The Change Request (CR) is a form. An organization may use a paper CR or
an online CR. IBM's Rational ClearQuest is the most commonly used
Change Management software used to submit and manage change requests. The Change Control Board is also referred to as the change control manager. The change control manager is responsible for overseeing the overall Change Control process.<br />
<br />
Each Change Request must move through the defined Change Control process. Depending on the organization the process may be as follows: The Submitter submits the Change Request. Next, the Change
Control Board Reviews the request. If the change is approved the
software developer makes the change; and, the <a href="http://bussystemanalysis.blogspot.com/2012/06/technical-writing-technical-training.html" target="_blank">technical writer and/or technical trainer</a> updates related guides. Once the change is completed
the tester tests the change. Lastly, once the change has successfully
passed testing it is deployed into production as scheduled and the release notes are distributed to users.
</div>
Anonymoushttp://www.blogger.com/profile/11770164970801071498noreply@blogger.com