jdb enterprises: music kiosk - capstone...

44
JDB ENTERPRISES: MUSIC KIOSK This document encompasses the JDB Enterprises Capstone Project at SAIT Polytechnic. 2010 JDB Enterprises BJ Brommeland Dale Baziw Jamie Scales

Upload: trankhanh

Post on 05-Oct-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

JDB Enterprises: Music KioskThis document encompasses the JDB Enterprises Capstone Project at SAIT Polytechnic.

2010JDB Enterprises

BJ Brommeland Dale Baziw Jamie Scales

Executive SummaryThe goal of this project was to create a client server relationship which would allow the retail market to take advantage of digital continuity between customers and products. This was to be accomplished by establishing a client interface which was easy to use and implement. Further to the goal of our project was the ability to dynamically populate a client interface with data from a central repository, accomplishing scalability in relation to the number of connected clients as well as the amount of available content.

The main focus of the implemented system was to provide CD retailers with a system which would preview CD’s to prospective customers. This aim identifies a lack of selection in today’s CD retailers; a multidisc reader previews a few physical CD’s which are changed out at the discretion of the retailer. By utilizing a kiosk type system, it is possible to preview a multitude of content while reducing facilitation from the retailer.

Implementation of the system uses barcode technology, which is unanimous in retail markets, to query a central database for related content. To aid in client simplicity a touch interface was selected for interactions in place of a traditional mouse and keyboard. Further to client interactions a custom web interface was designed; keeping in mind known navigation issues associated with touch interfaces.

In conjunction with interface options the system is designed to be as transparent as possible to the user, providing seamless transfer and playback of content. Solving this requirement justified the use of solid state drives to mitigate file access and seek times. The second area explored was performance of the host machine, which needed to support the load requirements of running multiple virtual servers. This was accomplished by implementing an adequate backend server, allowing specific allocation of resources to demanding servers. A third point discussed was the implementation of a separate network card for streaming operations. By improving network throughput, the transparency requirement was met.

After achieving project goals a few recommendations surfaced addressing client interaction with the system. The first problem was the implementation of the front end MP3 player which did not adequately fulfill client interaction. Small buttons and text in comparison with the rest of the user interface was deemed to be disproportionate to web page elements and the average users’ finger. There is a strong recommendation to update the player to a more adequate size. An implementation of a custom search is also recommended however, this would require an appropriate software or physical keyboard for input.

i Acknowledgements | JDB Enterprises: Music Kiosk Thursday April 15, 2010

Acknowledgements

The members of JDB Enterprises would like to acknowledge all the parties involved in the assistance, creation, production, and support of the ITCS 4th semester Capstone Project.

Thanks to:

All SAIT instructors, with special thanks for: Jason Fisher, Colin Chamberlain, Tim Williams, Dylan Saunders, Connie Aman, John O’Loughlin and Jim Catley.

Classmates in the ITCS Program, with special thanks for: Jordan Legatto, Matthew Baezner, Jonathan Fuller, Cody Burns and Justin Olmstead.

Friends and family, for their support, assistance and patience.

And finally, Jamie Scales would like to give special thanks his wife Melissa. “Thank you for being so understanding, patient and supportive as I strive to better our lives.”

ii Acknowledgements | JDB Enterprises: Music Kiosk Thursday April 15, 2010

Table of ContentsExecutive Summary...................................................................................................................................... i

Acknowledgements..................................................................................................................................... ii

Project Background.....................................................................................................................................1

Functionality................................................................................................................................................2

Budget.........................................................................................................................................................3

Problems.....................................................................................................................................................4

Lessons Learned..........................................................................................................................................4

Recommendations.......................................................................................................................................5

References...................................................................................................................................................6

Appendices................................................................................................................................................... I

Appendix 1: User Manual.........................................................................................................................I

Appendix 2: Technologies Explored.........................................................................................................II

2-1: Virtualization................................................................................................................................ II

2-2: Solid State Hard Drives.................................................................................................................II

2-3: Touch Screen Technology.............................................................................................................II

Appendix 3: Meeting Documentation....................................................................................................III

3-1: Meeting Agendas......................................................................................................................... III

3-2: Meeting Minutes..........................................................................................................................V

Appendix 4: Scripts..................................................................................................................................X

4-1: MP3 Population............................................................................................................................X

4-2: MP3 Scanning.............................................................................................................................XII

4-3: Database Genre Table Population..............................................................................................XII

4-4: Database Population.................................................................................................................XIII

Appendix 5: Implementation Manuals.................................................................................................XIV

5-1 How to Add Additional Physical NICs to XenServer....................................................................XIV

5-2: Setting up the NFS-based Storage Repository for Virtual Disks..................................................XV

5-3: Setting up the CIFS share for ISO files......................................................................................XVIII

Project BackgroundFrom previous educational experiences the project was designed to exercise an understanding of computer hardware, server communications, virtualization concepts, web development and systems automation. This was exercised thoroughly throughout the project life cycle and often spanned beyond the expertise of group members providing a most interesting experience.

Justification for the project stems from the current popularity of digital distribution and the traditional emphasis on physical retail products. Many customers are willing to purchase a physical medium as opposed to a digital one. From an industry standpoint, a niche market was identified within CD retailers which would bring to light the concept of digital distribution while maintaining traditional retail delivery. The exploration of digital distribution within the project was not meant to span a customer transaction but rather explores the functionality of the client server relationship in relaying content to the customer.

The project was structured around several technologies including virtualization, solid state drives and touch screen technologies allowing an advanced exploration into systems integration. Through the use of these technologies it was possible to consolidate servers to a single physical system which was highly optimized for database and network streaming operations. An elementary understanding of these concepts was required to initially integrate the technologies however, as previously mentioned, a deeper understanding of these technologies required research, commitment and a positive group dynamic.

1 Appendices | JDB Enterprises Thursday April 15, 2010

FunctionalityEncompassing the technologies associated with this project as well as the goals identified, a basic functional model was developed which focused on client server relations. The first milestone within the project was the creation of the backend server. The initial step was to implement a virtual environment from which the core structure would be derived. This would allow multiple virtual servers to be geared toward a specific task or service without concern for physical hardware constraints, utilization issues, space requirements or compatibility problems. Another important concept covered by virtualization was the ability to assign resources to specific virtual machines, allocating more resources to machines with heavier requirements.

The second milestone developed communication between servers and the implementation of storage repositories. This allowed servers to better utilize resources by centralizing important files and controlling communications more efficiently. Creation of hardware constructs, such as RAID arrays which utilized Solid State Drives, allowed better allocation of disk space as well as improved performance in seek and access times.

As scalability continued to be a prevalent theme throughout the project a web based interface was decided upon to mitigate local resource constraints of the small foot print PC. This would centralize communications on the backend and allow any number of clients to connect. Configuration of the webpage steamed from the completion of server communications and continued on to reinforce the original project goal of dynamic content population. This activity spawned a client interface which emphasised the importance of web design aspects in conjunction with the interfacing medium of touch technologies. The interface development focused on providing an interface which would be easily navigated including simple layouts, large buttons and minimal or simple user input.

Following web interface design; a prototype of the client system was constructed utilizing a small foot print PC, to address space constraints, and a touch interface for the client’s interactions. This system also integrated a barcode scanner as an input medium, allowing content population to address a unique UPC code on the server side to be read from the CD. To address input concerns a decision was made to exclude keyboards and mice from the scope of the client relying solely on the barcode system and touch interface as input mediums.

Database interactions, such as table data population, were scripted for automation purposes producing scripts to modify, query and upload information with minimal to no interaction by the user. Abstraction of MP3 files to a separate virtual server and the integration of Solid State Drives allows for streaming operations to be highly optimized and appear transparent to the user. This creates a system which is highly scalable and easily maintainable.

2 Acknowledgements | JDB Enterprises: Music Kiosk Thursday April 15, 2010

Budget

Quantity Item Price/Unit Total Cost Price With Tax1 Dell Vostro 220 Mini-Tower $559.00 $559.00 $586.953 Kingston SSD 64 GB $179.99 $539.97 $566.971 USB IR Scanner $179.99 $179.99 $188.991 LG L1734s 17" Flat Panel LCD Monitor $129.99 $129.99 $136.491 Acer T230 Widescreen Touch Screen LCD $379.00 $379.00 $397.951 D-Link Green Gigabit Ethernet Switch $59.99 $59.99 $62.991 Belkin Gigabit Ethernet Card $22.99 $22.99 $24.141 Asus Eee-Box B202 $239.95 $239.95 $251.953 Ethernet Cables $4.99 $14.97 $15.72

Total Cost of Purchase $2,125.85 $2,232.14

LabourNumber of Employees 3Hours worked per week 9Length of Project (weeks) 14Cost Per Hour $35 Total Labour Cost $13,230

Total Project CostsLabour $13,230 Purchases $2,232.14Total Cost of Project $ 15462.14

3 Acknowledgements | JDB Enterprises: Music Kiosk Thursday April 15, 2010

ProblemsWhen embarking on the project many considerations were initially overlooked. One immediate issue encountered was software compatibility. This occurred when dealing with the chosen virtualization technology as support had not been developed for the host operating system. After research into the issue a fix was discovered however, the underlying compatibility issue lead to several early server crashes. Overcoming this problem lead the project to a separate virtualization platform but unfortunately further compatibility issues between the two virtualization technologies rendered early work unusable.

Following successful integration of the virtualization technology more problems ensued, encompassing server communications. This issue was rooted in version compatibility and carried over into software dependency. Further exploration also revealed issues between servers including client/server requirements and network problems.

After correcting early mistakes, an exploration into database and webpage creation unveiled several other issues. At the helm of database considerations stood data formatting which called to question data consistency. This proved to be a formidable issue when dealing with improperly formatted data as it was not visible within the database. Through careful analysis this issue was corrected but proved to be a challenge with other code.

From a web interface perspective, the aim of the project was to implement a flash based MP3 player. This was to be dynamically populated, when the user submitted a query, with database content. Initial implementations of the player seemed promising however; following integration functionality did not meet scope requirements. This problem was compounded by the inability to dynamically populate the player and later lead to its obsolescence.

Lessons LearnedThroughout the duration of the project there were many lessons to be learned. A major area to be noted is project planning. An initial project plan which laid out important tasks, timeframes and responsibilities was the foundation of the project. One issue with the project plan was properly assigning estimated times to important tasks. This occurred predominantly due to inexperience with a project of this size however, time management was also an issue. To correct the issue it is strongly recommended to assign clear roles to group members including responsibilities, accountability and consequences for missing deadlines.

Another contributing factor dealt with ensuring software compatibilities by carefully researching packages and identifying required components. A lack of exploration into software dependencies led to issues early on in the project where the core server structure was unable to utilize the software to its full potential. For example; the basis of the server utilized a software package (VMware Server) which was

4 Acknowledgements | JDB Enterprises: Music Kiosk Thursday April 15, 2010

incompatible with the host operating system (Ubuntu 9.10). It is of utmost importance to fully understand the software packages employed and their core dependencies.

5 Acknowledgements | JDB Enterprises: Music Kiosk Thursday April 15, 2010

While working on this project, it was discovered that things don’t always work as planned. As previously mentioned an adequate understanding of utilized software packages is an asset and greatly mitigates issues however, no amount of planning can account for every situation or occurrence. This was an important factor when assessing timeframes and establishing project goals. Planning for a project should include “slack” time to compensate for these “unforeseen” issues.

Throughout the project lifecycle the use of virtualization enabled the creation of separate testing environments. This allowed proposed changes to be established before being moved to the production server and greatly reduced issues. It also allowed for experimentation with data formatting in a test or “sandbox” environment. Through the use this environment regression testing could be employed prior to implementation and sidestepped many issues during the project.

An ongoing theme to the project was proper formatting as it directly affected the functionality of the client in relation to database population, MP3 tag querying and web content. Through the use of the testing environment it was possible to note the results of database population and troubleshoot issues. This was a time consuming aspect of the project as simple errors were sometimes difficult to catch. A suggestion to avoid this issue is to carefully scrutinize code and data formatting prior to implementation.

RecommendationsWhile the purposed functionality was achieved during the project lifecycle, a few suggestions have surfaced. An immediate modification to the flash player is strongly recommended to better represent the content. This suggestion takes into account the touch interface medium as controls in the flash based player are difficult to interact with. An important aspect to consider during project execution is the effect of controls, externalized code and modules in the functionality and display of a client interface.

To compliment the project an advanced search function could be implemented requiring a software or physical keyboard. Adding this would allow users to search artists by name, album, genre or any other parameter available in the database. Further to search functionality, search linking could be implemented which would return related data such as artists within the same genre or similar attributes. Another area for improvement resides in returned search data. It is strongly recommended that search results return associated album art and a short paragraph on the artist.

A final suggestion would be to expand the database to include other media’s or functions. The possibility of including movie previews or video game demos could expand the versatility of the system. This will give the system a wider use of application than just within the CD section of any retail store. A user could then take any media to any station in the facility and preview it without being concerned about being in the correct department for preview. By marketing to a wider audience the system would better showcase the technology and provide an in-depth exploration of databases.

6 Acknowledgements | JDB Enterprises: Music Kiosk Thursday April 15, 2010

References[1] How to Add Additional Physical NICs to XenServer. Internet: http://support.citrix.com/article/CTX121615?printNov 1, 2009 (accessed: March 16, 2010)

[2]XenServer Demo/Evaluation System: Technical Setup Guide. Internet: http://maximiseyourapps.com.au/pdf/xs/White%20Papers/XenServer%20Demo%20and%20Evaluation%20Setup%20Guide.pdf. June 2009 (accessed: March 2010)

How do touch-screen monitors know where you're touching? Internet: http://www.howstuffworks.com/question716.htm. September 4, 2001 (accessed: April 15, 2010)

Solid-state drive. Internet: http://en.wikipedia.org/wiki/Solid-state_drive. April 15, 2010 (accessed: April 15 2010)

Transform your Business with Virtualization. Internet: http://www.vmware.com/virtualization/what-is-virtualization.html. (Accessed: April 2010)

Paul Barham, Boris Dragovic, Keir Fraser, Steven H, Tim Harris , Alex Ho, Rolf Neugebauer, Ian Pratt, Andrew Warfield. Xen and the art of virtualization. Internet: http://www.cs.princeton.edu/courses/archive/fall05/cos518/papers/xen.pdf. 2003 (accessed: March 2010)

Alan Cox. Optimizing network virtualization in Xen. Internet: http://infoscience.epfl.ch/record/85598/files/usenix06.pdf. 2006. (Accessed: March 2010)

7 Acknowledgements | JDB Enterprises: Music Kiosk Thursday April 15, 2010

Appendices

Appendix 1: User ManualJDB Enterprises was established 2009 in response to SAIT Polytechnics Capstone project. This manual deals with the operation of the JDB Enterprises Music Kiosk. This includes operation of the touch interface, barcode scanner and interface functionality.

The system incorporates a touch interface where users utilize a stylus or finger/fingernail to interact with the system. On the client a web interface is used. This interface allows users to scan CD barcodes, via barcode scanner, and return associated track listings for preview.

Select a CDSelect a CD of your choice from the CD rack

Using the Touch Screen MonitorTo navigate the Touch-screen interface the following can be used:

Index Finger/Finger Nail Stylus

Note * When using index finger ensure finger is clean and dry** Be sure to not press the screen to hard

Navigating the User InterfaceNavigation buttons are located in the left hand pane of the screen.

- HOME: returns to the main page. - SCAN: will navigate to the scan page used for imputing CD bar codes.

Scanning the CD1. Select a CD2. Turn CD around displaying the barcode if not seen upon selection3. Hold scanner, pointing the red laser at the barcode4. Pass scanner over the barcode until a beep is heard

Playing Selected MusicFollowing a successful scan, tracks will appear in the right hand section of the screen. To play a song, select the title by touching the screen. Proceed to press the play button located above the selection.

I Appendices | JDB Enterprises Thursday April 15, 2010

Appendix 2: Technologies Explored

2-1: VirtualizationA prevalent technology used in this project was virtualization. This is the means by which common hardware can be utilized by multiple virtual systems in order to overcome utilization issues. According to VMware, utilization statistics in production servers are commonly between 5% and 15%. This drastic underutilization has driven interest in virtualization technologies by exploring sever consolidation concepts, failover operations and availability requirements.

Insight into production environments reveals a reoccurring “One application, one server model” mentality which traditionally requires the implementation of new physical servers to reduce compatibility issues. This contributes to under-utilization issues by creating more physical servers to support extra individual services. Through the use of virtualization it is possible to reduce this mentality and provide application stability while consolidating servers and improving utilization rates.

2-2: Solid State Hard DrivesA solid state drive or SSD, compared to a traditional electromechanical drive, has no moving parts. This affords a few advantages such as low access times and latency allowing virtualized operating systems to be more quickly accessed as well as providing better access times for database activities and file shares.

Solid state drives function on either volatile or non-volatile memory, depending on manufacturers’ specifications, which utilize semiconductors to maintain a charge. This charge is interpreted by the controller to return data to the requesting operation. Solid state drive technology is inhibited by limited write cycles to these semiconductors. After performing a number of writes, these semiconductors burn out rendering the location unusable. This makes solid states a poor choice for applications which require a multitude of writes however, in applications with low write requirements; this technology is a good choice.

2-3: Touch Screen TechnologyAn interesting component of the client side operation is the incorporation of touch screen technologies to aid in user navigation. Touch screen technologies deal with the interpretation of a touch interaction. This is performed by first detecting the interaction, followed by interpreting the action. Completion of this task is accomplished by utilizing a system driver which translates the action. Three implementations of this technology exist: resistive, capacitive and surface acoustic wave.

The capacitive system, used within this project, stores an electrical charge in a conductive layer which is placed on the surface of the monitor. In each corner of the monitor a circuit is placed which is used to measure changes in the capacitive field. A touch is interpreted by applying a conductive material to the surface of the monitor, such as a finger or stylus, and measuring the relative change in charge at each circuit.

II Acknowledgements | JDB Enterprises: Music Kiosk Thursday April 15, 2010

Appendix 3: Meeting Documentation

3-1: Meeting Agendas

Week 4: Progress Meeting

Date called: February 2nd 2010 (tentative)February 3rd 2010 (alternate)

Time: 3:15 PMMeeting called by: BJ BrommelandFacilitator: Jamie ScalesMinutes By: Dale BaziwAttendees: BJ Brommeland

Dale BaziwJamie Scales Jason FisherColin Chamberlain

Agenda Items

Topic Presenter Time allotted Item Classification

Server Virtualization BJ Brommeland 2 minutes Informational- Database Server BJ Brommeland 1 minute Informational- Web Server Dale Baziw 2 minutes Informational

Database Implementation Jamie Scales 4 minutes InformationalConclusion Jamie Scales 1 minute Informational

Week 7: Progress Meeting

Date called: March 3nd 2010 (tentative)

Time: 12:15 PM (tentative)12:45 PM (alternate)

Meeting called by: Dale BaziwFacilitator: BJ BrommelandMinutes By: Jamie ScalesAttendees: BJ Brommeland

Dale BaziwJamie Scales Jason FisherColin Chamberlain

Agenda Items

Topic Presenter Time allotted Item Classification

Review Agenda BJ Brommeland 2 minutes InformationalReview Minutes Dale Baziw 1 minute InformationalNew Items BJ Brommeland 1 minutes InformationalServer Crash BJ Brommeland 4 minutes InformationalHypervisor switch Jamie Scales 2 minute InformationalUse of Openfiler Jamie Scales 1 minute InformationalEthernet Card Request Dale Baziw 1 minute ActionConclusion BJ Brommeland 1 minute Informational

III Acknowledgements | JDB Enterprises: Music Kiosk Thursday April 15, 2010

Week 10: Progress Meeting

Date called: March 26th 2010 (tentative)

Time: 08:15 AM (tentative)08:45 AM (alternate)

Meeting called by: Jamie Scales

Facilitator: Dale Baziw

Minutes By: BJ Brommeland

Attendees: BJ Brommeland, Dale Baziw, Jamie Scales, Jason Fisher, Colin Chamberlain

Agenda Items

Topic Presenter Time allotted Item Classification

Review Agenda Dale Baziw 2 minutes InformationalReview Minutes Jamie Scales 1 minute InformationalReview Gantt Chart Dale Baziw 2 minutes InformationalNew Items BJ Brommeland 1 minutes InformationalScript Development BJ Brommeland 3 minutes InformationalDatabase Population Jamie Scales 2 minutes InformationalEthernet Card Jamie Scales 1 minute InformationalWebpage/PHP Scripting Dale Baziw 2 minute InformationalReview Journals All 5 minutes ActionConclusion BJ Brommeland 1 minute Informational

Week 13: Close Out Meeting

Date called: April 14th 2010

Time: 1:15 PM (tentative)2:45 PM (alternate)

Meeting called by: BJ Brommeland

Facilitator: Jamie Scales

Minutes By: Dale Baziw

Attendees: BJ Brommeland, Dale Baziw, Jamie Scales, Jason Fisher, Colin Chamberlain

Agenda Items

Topic Presenter Time allotted Item Classification

Review Agenda Jamie Scales 2 minutes InformationalReview Minutes Jamie Scales 1 minute InformationalReview Gantt Chart Dale Baziw 2 minutes InformationalNew Items Jamie Scales 1 minutes InformationalScript Completion BJ Brommeland 3 minutes InformationalDatabase Population Jamie Scales 2 minutes InformationalWebpage Dale Baziw 2 minute InformationalReview Journals All 5 minutes ActionConclusion Jamie Scales 1 minute Informational

IV Acknowledgements | JDB Enterprises: Music Kiosk Thursday April 15, 2010

3-2: Meeting Minutes

MEETING SUMMARY Week 4

MEETING INFORMATION TEAM MEMBERS ATTENDING

DATE March 3, 2010 BJ BrommelandJamie Scales

CALLED BY Dale Baziw Dale BaziwJason Fisher

FACILITATOR BJ Brommeland Colin Chamberlain

PLACE MD 213 meeting room ScribeJamie Scales

START TIME 12:15 pm

END TIME 12:46 pm

SUMMARY Review Agenda – Revision – review of journals to be added to meeting agendaReview Minutes – revision/questions – noneNew items – noneServer Crash – BJ – server crash, non recoverable, not supported by the operation system. Conflicts for modules with the script used to integrate with Ubuntu 9.10. Use of ESX server, too many issues with hardware not being compatible, alternative was necessary.Hypervisor switch – Jamie – Different types of bare metal hypervisors are available. XenServer was found to be the easiest to implement. Installation was simple, small hiccup with the integration (mounting) of an NTFS filesystem based external hard drive. Found a work around based off network file sharing. XenServer is a thin virtual machine manager using few of the systems resources. Server was easy to implement new virtual machines once file share was created. Very impressed with ease of use and manageability of hypervisor.Use of open filer – Jamie – Used OpenFiler for a CIFS fileshare as a storage repository for XenServer to navigate around the non-native mountability of NTFS filesystem. Very easy to setup, found a manual/resource to setup. Once setup, it was easy for XenServer to see the fileshare and use to create new machines.Ethernet Card Request – Dale – requested a gigabit Ethernet card to segregate traffic between servers, fileshare and client machine. Jason – spec out a card and email to me for purchasing.Conclusion – review of journals, review of meeting, action to be taken regarding Ethernet card.Next meeting to be called by Jamie.

DECISIONS AND AGREEMENTS

n/a

ACTIONS TO BE TAKEN BY WHOM? BY WHEN?

Request for gigabit Ethernet card Dale Baziw March 10, 2010

V Acknowledgements | JDB Enterprises: Music Kiosk Thursday April 15, 2010

MEETING SUMMARY Week 7

MEETING INFORMATION TEAM MEMBERS ATTENDING

DATE February 2, 2010 BJ BrommelandJamie Scales

CALLED BY BJ Brommeland Dale BaziwJason Fisher

FACILITATOR Jamie Scales Colin Chamberlain

PLACE MD 213 meeting room

START TIME 2:30 pm

END TIME 2:50 pm

SUMMARY BJ Brommeland

Dale Baziw

Jamie Scales

- Installing VM server on Ubuntu with a specialized script- Installing Ubuntu 9.10 for the database- Installed configured mysql- Statically set IP for database and host machine- Server communication – webserver(apache) to database(mysql)

- Observe how VMserver works and how to use the web interface- Installing Ubuntu 9.10 for the webserver- Install and configuring apache and PHP- testing and verifying – webserver(apache) to database(mysql) communication

- mysql relational table structure- features in the relational table structure to be able to expand and add additional functionality

DECISIONS AND AGREEMENTS

n/a

ACTIONS TO BE TAKEN BY WHOM? WHEN?

Acquire router for static IP configuration

Jason Fisher February 02/2010

VI Acknowledgements | JDB Enterprises: Music Kiosk Thursday April 15, 2010

MEETING SUMMARY Week 10

MEETING INFORMATION TEAM MEMBERS ATTENDING

DATE March 26, 2010 BJ BrommelandJamie Scales

CALLED BY Jamie Scales Dale BaziwJason Fisher

FACILITATOR Dale Baziw Colin Chamberlin

PLACE MD 213 meeting room ScribeBJ Brommeland

START TIME 8:15 am

END TIME 8:57 am

SUMMARY Capstone Progress Meeting Summary – Start Time 8:14 AMReview Agenda

- Jamie Scales printed off meeting minutes from February 2nd meeting; resolution in progress 8:16 AM; Resolution time 8:18 AM

- Adding Review of Capstone Website – Jason Fisher- Adding Review of project report outline – BJ Brommeland- Modifying conclusion presenter to Dale Baziw – BJ BrommelandReview Previous Meeting minutes 8:21 AM- No revisions or changes 8:22 AMReview of Gantt Chart- Jason Fisher has concerns with some Gantt items being at 0%- Colin Chamberlin has shown items which are “Past due” possible problem with dates- Several items are out of place – Colin Chamberlin and Jason Fisher- Suggestion to revise Gantt to reflect correct dates- Missing item Written report – Colin Chamberlin- Jason Fisher suggests a major category of documentation to encompass the final

preparation- Comment: Very well broken down- Dale Baziw comments: some items could be updated to reflect actual completenessScripting- Colin Chamberlin: new items was misinterpreted; solution additions to agenda option- Jason Fisher: normally done with agenda review; new business does occur however

people usually have new action items brought to the table for discussion; Colin Chamberlin concurs

- 3 scripts created; manage mp3info tags to populate the database with CSV files – BJ Brommeland

- Jamie Scales mentions difficulties importing CSV file into database due to multiple table population

- Perl module will facilitate the communication with the database so the CSV files can be imported – BJ Brommeland

Database population- Jamie Scales is working on the script to facilitate database communication – Stated work

will be done this weekend to completeEthernet Card- Jamie Scales mentions the network card install crediting - Jamie Scales mentions the documentation provided by Citrix to install the NIC- Mentions the use of both NIC’s to be used in conjunction with associated virtual machine- One will be used solely for streaming - Colin Chamberlin mentions the lessons learned section for the addition of knowledgeWebpage/ PHP scripting- Dale Baziw: Main design has been completed; basic layout complete- Possible need for JavaScript- Working on PHP script- Pending review of websiteReview Journals

VII Acknowledgements | JDB Enterprises: Music Kiosk Thursday April 15, 2010

- Dale Baziw: suggests time to review journals- Jason Fisher suggests “lessons learned” section is not properly used while reviewing

Jamie Scales’ journal- Dale Baziw’s journal review; Doesn’t contain a lessons learned field – Colin Chamberlin

and Jason Fisher; comment retracted as lessons learned field spanned to the next page; confusing entry due to two description fields in the entry; Entry description reflects a lessons learned; very good detail in the lessons learned section

- Review of BJ Brommeland Journal not conducted due to missing entries from week 8 to week 10; due to time constraints existing entries have not been reviewed

Review of project website- Colin Chamberlin will connect to the website for review- Clean looking – Colin Chamberlin and Jason Fisher- Good organization – Colin Chamberlin- Jamie Scales: Biography is due this week

o Suggestion: Colin Chamberlin; if the title isn’t used remove ito Site needs to be rectified by April 16th as per the invitationso Note: Dead link; Agendas and minutes links are dead; additional links are dead

Suggestion test website before releasing to production Review of project document

- Needs budget included – Jason Fishero Hardware - Colin Chamberlino Labour – Colin Chamberlino Fair price for yourself – Colin Chamberlin

- Table of contents - Colin Chamberlin- Executive summary – needs to be 1-2 pages – Colin Chamberlin- Purposed changes and recommendations could be its own heading if there is enough

contents- Recommendations to continued development of the project- Recommendations for additional features- Colin Chamberlin: you don’t have to give away what you may copyright or patent- Jamie Scales: difference between project charter and report

o Report; what did I do, budget, resultso Project charter; what we are going to do

- Include a budget (minimal) for the presentationo Jason Fisher – 4 to 5 categories topso Hardware and cost (possibly include in the appendiceso Jamie Scales requires a full list of hardware items for “ease”

- Colin Chamberlin and Jason Fisher will review the outline for next week – action itemConclusion

- Ethernet card implemented- Stored procedures- Continued development on the webpage and population of the database Colin Chamberlin – Final questions?- None- Meeting concluded

DECISIONS AND AGREEMENTS

n/a

ACTIONS TO BE TAKEN BY WHOM? BY WHEN?

Review of Project Report Outline Colin Chamberlin, Jason Fisher March 29, 2010

VIII Acknowledgements | JDB Enterprises: Music Kiosk Thursday April 15, 2010

MEETING SUMMARYProject Closeout Meeting Week 13 – JDB Enterprises

MEETING INFORMATION TEAM MEMBERS ATTENDING

DATE April 14, 2010 BJ BrommelandJamie Scales

CALLED BY BJ Brommeland Dale BaziwJason Fisher

FACILITATOR Chair Jamie Scales Colin Chamberlin

PLACE MD 213 meeting room ScribeDale Baziw

START TIME 1:12 am

END TIME 1:31 am

SUMMARY Capstone Progress Meeting SummaryReview Agenda

- Colin Chamberlin added 2 new agenda items - Item: Deliverables- Item: Review of capstone website- Removed agenda items- Item: Script completion- Item: Database population- Item: Project webpage- Agenda revision: Change the agenda title to reflect group name and what type of meeting

is being held (e.g. closing meeting)The Capstone Website- Dead journal link on Dale Baziw’s page- Layout is satisfactoryDeliverables- Have capstone documentation on capstone website by April 16/2010 6:00 pm- Hand in hard copy of capstone documentation on CD media - Hand in hardcopy, cerlox bound, of technical report by April 19/2010

DECISIONS AND AGREEMENTS

n/a

ACTIONS TO BE TAKEN BY WHOM? BY WHEN?

Deliverables completed Jamie, Dale, BJ Website: April 16, 2010 @ 6pm,Hard Copy April 19, 2010

Appendix 4: Scripts

4-1: MP3 Population#! /usr/bin/perl$rootPath="/mnt/CIFS/";system("clear");

print "Please enter what you would like to validate. c: Barcode or g: genre: ";chomp ($field=<STDIN>);

chomp (@artists= `ls $rootPath`);

foreach $artist(@artists){

$artistPath =$rootPath . "\"" . $artist . "/\"";chomp(@albums = `ls $artistPath`);

foreach $album(@albums){

$albumPath = $artistPath . "\"" . $album . "/\"";if ($field eq "g"){

&checkField($field, $albumPath);}elsif ($field eq "c"){

&populateField($field, $albumPath);}else{

print "Not a Vaild Option\n";}

}}

sub checkField{

my($field, $albumPath) = @_;$temp = "ls " . $albumPath . "*.mp3";

# print "$temp\n";chomp(@songPath = `$temp`);foreach $song(@songPath){

$cmdResult = "mp3info -p \"%" . $field . "\" \"" . $song . "\"" ;$cmdResult = `$cmdResult`;

# print "$cmdResult\n";if ($cmdResult eq ""){

print "Genre field is blank for " . $albumPath . "\nPlease Enter Genre Value: ";chomp($genreReplace = <STDIN>);$tmp = "mp3info -g " . $genreReplace . " " . $albumPath . "*.mp3";print `$tmp` . "[Done]\n";last;

}else{

print "Current genre field info for " . $albumPath . " is: \n" . $cmdResult . ". Would you like to use this info? (y/n): ";

chomp($answer = <STDIN>);if($answer eq "y"){

# print $song . " Genre: " . $cmdResult . "\n";last;

IX Acknowledgements | JDB Enterprises: Music Kiosk Thursday April 15, 2010

}elsif($answer eq "n"){

print "What would you like the field to contain? ";chomp($genreReplace=<STDIN>);$tmp = "mp3info -g " . $genreReplace . " " . $albumPath . "*.mp3";print `$tmp` . "[Done]\n";last;

}next;

}}

}

sub populateField{

my($field, $albumPath) = @_;$temp = "ls " . $albumPath . "*.mp3";

chomp(@songPath = `$temp`);foreach $song(@songPath){

$cmdResult = "mp3info -p \"%" . $field . "\" \"" . $song . "\"" ;$cmdResult = `$cmdResult`;

# print "$cmdResult\n";if ($cmdResult eq ""){

print "Comment field is blank for " . $albumPath . "\nPlease Enter UPC Value: ";chomp($commentReplace = <STDIN>);$tmp = "mp3info -c " . $commentReplace . " " . $albumPath . "*.mp3";print `$tmp` . "\n";last;

}else{

print "Current comment field info for " . $albumPath . " is: " . $cmdResult . ". Would you like to use this info? (y/n): ";

chomp($answer = <STDIN>);if($answer eq "y"){

print $song . " UPC: " . $cmdResult . "\n";last;

}else{

print "What would you like the field to contain? ";chomp($commentReplace=<STDIN>);$tmp = "mp3info -c " . $commentReplace . " " . $albumPath . "*.mp3";print `$tmp` . "[Done]\n";last;

}next;

}}

}

X Acknowledgements | JDB Enterprises: Music Kiosk Thursday April 15, 2010

4-2: MP3 Scanning#! /usr/bin/perl$rootPath="/mnt/CIFS/";

chdir($rootPath) or die "Cannot chdir to path!";chomp (@artists = `ls`);

foreach $artist(@artists){

$artistPath = "\"" . $artist . "/\"";

chomp (@albums = `ls $artistPath`);foreach $album(@albums){

$albumPath = $artistPath . "\"" . $album . "/\"";$temp1 = "ls " . $albumPath . "*.mp3";chomp (@songs = `$temp1`);foreach $song(@songs){

$temp = "mp3info -p \"%a,%l,%t,%n,%m:%s,%g,%y,%c,%F\n\" " . "\"" . $song . "\" >> /root/scanned.txt";`$temp`;print ".";

}}

}

4-3: Database Genre Table Population#!/usr/bin/perluse DBI;

$database = "capstone_music";$hostname = "192.168.0.3";$dsn = "dbi:mysql:$database:$hostname:3306";$user = 'root';$password = 'P@ssw0rd';

$connect = DBI->connect($dsn, $user, $password) or die "Unable to connect: $DBI::errstr\n";

open (INFILE, "/root/genrelist.txt") || die "Cannot open Infile";

@contents = <INFILE>;foreach $content(@contents){# Used for error checking

chomp ($content2 = $content);$query1 = "call spAddGenre(?, \@result);";

$sth1 = $connect->prepare("$query1");$sth1->bind_param(1, $content2);$sth1->execute() or die $sth1->errstr;

}exit;

XI Acknowledgements | JDB Enterprises: Music Kiosk Thursday April 15, 2010

4-4: Database Population#! /usr/bin/perluse DBI;

$database = "capstone_music";$hostname = "192.168.0.3";$dsn = "dbi:mysql:$database:$hostname:3306";$user = 'root';$password = 'P@ssw0rd';

$connect = DBI->connect($dsn, $user, $password) or die "Unable to connect: $DBI::errstr\n";

open (INFILE, "/root/scanned.txt") || die "Cannot open Infile";

@contents = <INFILE>;#print @contents[0];foreach $content(@contents){

@listing = split(',', $content);$artist = @listing[0];$album = @listing[1];$trackName = @listing[2];$trackNum = @listing[3];$trackLen = @listing[4];$trackGen = @listing[5];$trackYear = @listing[6];$trackUPC = @listing[7];chomp($trackFile = @listing[8]);

$query1 = "call spAddCd(?, ?, ?, ?, \@result)";$query2 = "call spAddTrack(?, ?, ?, ?, ?, ?, \@result)";$query3 = "call spAddCDGenre(?, ?, \@result)";

$sth1 = $connect->prepare("$query1");$sth1->bind_param(1, $artist);$sth1->bind_param(2, $album);$sth1->bind_param(3, $trackYear);$sth1->bind_param(4, $trackUPC);$sth1->execute();

$sth2 = $connect->prepare("$query2");$sth2->bind_param(1, $artist);$sth2->bind_param(2, $album);$sth2->bind_param(3, $trackName);$sth2->bind_param(4, $trackLen);$sth2->bind_param(5, $trackNum);$sth2->bind_param(6, $trackFile);$sth2->execute();

$sth3 = $connect->prepare("$query3");$sth3->bind_param(1, $album);$sth3->bind_param(2, $trackGen);$sth3->execute();

}

exit;

XII Acknowledgements | JDB Enterprises: Music Kiosk Thursday April 15, 2010

Appendix 5: Implementation Manuals

5-1 How to Add Additional Physical NICs to XenServer Document ID: CTX121615 / Created On: Sep 16, 2009 / Updated On: Nov 1, 2009 [1]

SummaryYou just added an additional Physical Network Interface Card (NIC) to the XenServer, but it does not show up in the XenCenter. Below is the procedure for how to add additional physical NICs to the XenServer.

RequirementYou must make sure that the NIC(s) is on the Hardware compatibility List (HCL) hcl.xensource.com. If it is on the list then XenServer is supporting the NIC(s). In some cases, even though it is not on the list, the NIC might work, but when you encounter problems, Citrix Technical Support Engineers will do their best to help you, but there is no escalation path.

ProcedureTo get the NIC to show in XenCenter, you must follow these steps.

1. From the XenServer Command Line Interface (CLI), issue the following command:xe pif-list Press Enter.Note: If you have more than one XenServers in the pool, you must issue the xe host-list command to list all the XenServer hosts and write down the Universally Unique Identifier (UUID) of the host that you just added the new NIC, then issue command xe pif-list host-uuid=[uuid of the XenServer host]

2. The command above lists all the physical NICs of that XenServer. If you do not see the additional NIC, you must scan for new physical interface(s) on a XenServer and issue this command:xe pif-scan host-uuid=[uuid of the XenServer host]Press Enter.

3. Use xe pif-list again and you can see the new NIC.

4. If you see the device of the new NIC with something like this __tmp206888048 you must remove it and introduce so it can recognize in the correct way such as ethX.xe pif-forget uuid=[uuid of __tmp206888048 that you want to forget]xe pif-list you won’t see __tmp206888048 anymore.

5. Introduce the additional physical NIC to the XenServer so it can recognize it from the XenCenter.ifconfig –aPress Enter.You should see something similar to this:ifconfig:__tmp206888048 Link encap:Ethernet HWaddr 00:15:17:6B:6A:31 UP BROADCAST MULTICAST MTU:1500 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)Note: The __tmp206888048 is still there with the MAC address 00:15:17:6B:6A:31. You need to write down the MAC address 00:15:17:6B:6A:31 so later you can introduce that MAC address for the next available NIC device such as ethX.

6. Now you can introduce the new physical NIC(s) to the XenServer.xe pif-introduce host-uuid=[uuid of the XenServer host] device=[machine-readable name of the interface (for example, eth3)] mac=00:15:17:6B:6A:31Press Enter.The command returns a UUID, for example: 83750d2d-dd36-787c-da1c-951d7afc2cf0

7. Plug that new UUID 83750d2d-dd36-787c-da1c-951d7afc2cf0xe pif-plug uuid=83750d2d-dd36-787c-da1c-951d7afc2cf0xe pif-list to see the new PIF

8. Go to the XenCenter and you can see the new physical NIC(s) there.

XIII Acknowledgements | JDB Enterprises: Music Kiosk Thursday April 15, 2010

5-2: Setting up the NFS-based Storage Repository for Virtual Disks We will use an NFS-based SR for the XenServer demo/evaluation environment. Use of NFS will allow you to more easily import the VHD’s from the XenApp Evaluation Virtual Appliance kit (section 3). This section describes how to set up an NFS-based SR used for the heartbeat disk, using the freely available OpenFiler iSCSI software appliance. OpenFiler will be installed as a VM on your first server, which will eventually become the

resource pool master server. [2]

1. Download the OpenFiler XenServer Virtual Appliance (XVA) file (x86 version) from this web site: http://openfiler.com/community/download/

The instructions that follow are based on version 2.3 of the OpenFiler system.2. Use XenCenter (VM->Import) to import the OpenFiler XVA and create its virtual machine on your first XenServer.

a. ―Import Source screen: browse for and select the .xva file you just downloadedb. ―Home Server screen: select the server which will become your resource pool master server (server 1)c. ―Storage screen: select local storage on the serverd. ―Network screen: add default networks, as necessarye. ―Finish screen: leave defaults to allow the VM to boot up

3. Check the ―Logs tab and wait for the import to finish. After the OpenFiler XVA has been imported and its VM has booted up, go to the OpenFiler VM’s console in XenCenter and note the URL where you will access the OpenFiler web-based management console in step 5. The console will state something like something like:

Web Administration GUI: https://192.168.1.101:446/4. In XenCenter, add a disk to the OpenFiler VM. This will be used for storage of the VM disks. Select the OpenFiler VM in

XenCenter, select the ―Storage tab, and click ―Add. Name the disk ―Virtual Disk Storage, size the disk sufficiently large for the storage of virtual machine disks (i.e. 80-100GB), and use the local storage from the host (as shown below).

5. Enter the URL from step 3 into your web browser to administer the OpenFiler system. You may need to add a certificate/security exception in your web browser to get to the login screen. Use a username of ―openfiler and a password of ―password to login. (if this doesn’t work, check the install instructions on OpenFiler website for updated username/password)a. ―System Tab: Change your IP address to ―static and set IP, gateway, etc. accordingly. After you change the IP

address, you will need to re-launch the web console using the new OpenFiler IP address.b. Click the ―Volumes tab. Under ―Create a new volume group, click on the ―create new physical volumes link

i. Under ―Block Device Management click the ―/dev/xvdc link. This block device should be the same size as the disk you added to the VM in step 4 above.

ii. If the partition has already been created, you will need to delete it by clicking the ―Delete link. If the partition has not been created, skip to step iv.

XIV Acknowledgements | JDB Enterprises: Music Kiosk Thursday April 15, 2010

iii. After the partition has been deleted, scroll to the bottom of the page and click the ―Reset ― link (confirm the reset action when prompted)

iv. Create the partition by clicking the ―create button.c. Click the ―Manage Volumes link under the ―Volumes Section box on the right hand side of the paged. Create a new Volume Group as shown below:

i. Volume Group Name: vg1 ii. Check the box next to the physical volumeiii. Click ―add volume group

e. Click the ―Add Volume link under the ―Volumes Section box on the right hand side of the page. Select the ―vg1 volume group you just created, in the drop-down box. Scroll to the bottom of the page and enter the volume slice information:

i. Volume Name: vdiii. Required space: move the slider all the way to the right iii. Filesystem / volume type: Ext3iv. Click ―Create. This may take a minute to complete depending on the volume size.

XV Acknowledgements | JDB Enterprises: Music Kiosk Thursday April 15, 2010

f. Click the ―Services tab: Enable the NFSv3 server option.g. Click the ―Shares tab. You should see a share called ―vdi (/mnt/vol1/vdi) listed. h. Click on the ―vdi link and create a folder name called ―disksi. Click on the ―disks link and make this the homes share.j. You will see a notification telling you that you cannot configure network access control unless you create a list of

networks in the Local Networks section. Click on the ―Local Networks text. This will send you back to the Network Configuration screen.

k. Under the ―Network Access Configuration enter the name, IP address, and netmask for all of the XenServer hosts that will access the storage. Use the type ―share.

l. Click on the ―Shares Tab again. Then click on the ―disks link again. You will see a screen for administering share security. Under the NFS section, select the ―RW radio button for each of your hosts (as shown below) and click ―Update.

You have now completed the creation of your NFS share that you will use for VM virtual disk storage.

XVI Acknowledgements | JDB Enterprises: Music Kiosk Thursday April 15, 2010

5-3: Setting up the CIFS share for ISO files For creating new Windows virtual machines, a network-based ISO library can be used. In a demo environment, your OpenFiler VM is a good place to host this library. [2]

1. In XenCenter, add a disk to the OpenFiler VM. This will be used for storage of the ISO files. Select the OpenFiler VM in XenCenter, select the ―Storage tab, and click ―Add. Name the disk ―ISO File Storage, size the disk sufficiently large for the storage of virtual machine disks (i.e. 8 GB), and use the local storage from the host (as shown below).

2. Login to the OpenFiler web console, as was done previously.a. Click on the ―Volumes Tab, then the ―Block Devices link on the right hand side.b. Locate the disk you just added via XenCenter. It should appear as /dev/xvdc and be the size you specified in

the previous step. Click the ―/dev/xvdd linkc. If the partition has already been created, you will need to delete it by clicking the ―Delete link. If the partition

has not been created, skip to step e.d. Delete the partition by clicking the ―Delete link and then ―Reset. After clicking ―Reset confirm that you do

want to reset.e. Create the new partition; keep the defaults and click ―Create.f. Click on ―Volume Groups in the ―Volumes Section box. Create a new volume group called ―vg2

XVII Acknowledgements | JDB Enterprises: Music Kiosk Thursday April 15, 2010

g. Click on the ―Add Volume link under the ―Volumes section box on the right hand side of the page. In the drop-down box, select the ―vg2 volume group you just created and click ―change. Scroll to the bottom of the page and enter the volume slice information.

i. Volume name: ISOii. Required space: move the slider all the way to the rightiii. Filesystem / volume type: Ext3iv. Click ―Create. This may take a minute to complete depending on the volume size.

h. Click on the ―Services tab. Enable the ―SMB / CIFS server option.i. Click on the ―Shares tab. You should see a share named ―ISO under vg2.j. Click on the ―ISO link and create a sub-folder name ―ISO

k. Click on the ―ISO (/mnt/vg2/iso/ISO) link. Then click on the ―Make Share buttonl. On the next screen, in the ―Override SMB/Rsync share name box, type ―ISO and click ―Change.m. Under the ―Share Access Control Mode section, select the ―public guest access option and click ―update.

XVIII Acknowledgements | JDB Enterprises: Music Kiosk Thursday April 15, 2010

n. Under the ―Host access configuration /mnt/vg2/iso/ISO/ section. Select the ―RW options under the ―SMB/CIFS section, check ―Restart services, and click the ―update button.

You now have a share called ―iso on your OpenFiler server that can be accessed using the UNC path \\192.168.1.42\iso (replacing your IP address accordingly, if different). You can copy any ISO files used for OS installation to this share.

XIX Acknowledgements | JDB Enterprises: Music Kiosk Thursday April 15, 2010