1,760
edits
Changes
no edit summary
<font color= Lab Preparation 'red'>'''** DO NOT USE - TO BE UPDATED FOR CENTOS 8.0 **'''</font>= LAB OBJECTIVES =
= Investigation INVESTIGATION 1 - Installing Linux : INSTALLING LINUX VM=
=== Part PART 1 - Choosing Installing Your Linux Distribution ===
<!-- Try to use tables and simplify the layers of WIKI to make top links less verbose to students -->
:Centos 7 - release 1810 will be used for this course. The purpose for this is to allow you to use a consistent and stable '''RedHat''' based OS, and to lower the amount of new linux distros that you need to learn.
<!--==== Environment Setup ====
-->
:'''Perform the following steps:''' :#After choosing your Regardless of the Linux distribution to use that is used for this course, these labs, install lab will be using and referring to the latest graphical current version of that '''CentOS 7''' (Graphical Desktop) for our main Linux OSmachine. When creating your VM, refer to the '''Details / Minimum Requirements''' section above for assistance. :#Install CentOS 7 VM selecting the default partitions. When you have finished the installation of CentOS 7, you may proceed to the next step.<brblockquote style="margin-left:35px;"><br>This course {{Admon/important|style="padding-left:25px"|Unit Feedback Scripts|Each '''Part''' (within an 'Investigation) is designed with referred to as a unit testing suite'''Unit'''. Each Unit will require that the student download and run a '''Unit Feedback Script''', which can be used to look at provides the scripts you write and give OPS435 student "real-time feedback" of their completed work.<br>This feedback is not considered to be perfector fool-proof; however, however it may offer some provide feedback (hints if you get ) in case a student gets stuck with a or experiences an errorwhen performing administration tasks or when creating their Python scripts. It These unit feedback scripts can also be used to make sure you are confirm that the student's Python script is on the right track, and show provide a consistent record of their Python scripting progressthroughout their labs.}}<br/blockquote> <!--<ol><brli value="3" style="margin-left:25px;">#Download the check script. Enter Issue the following commands from (as a regular user) in order to setup, download and run the bash shell.first unit feedback script:<br><sourcelang="bash">mkdir -p ~/ops435/lab1/
cd ~/ops435/lab1/
pwd # <-- i.e. confirm that you are in the right correct directoryls CheckLab1.py || wget matrixhttps://raw.senecacollegegithubusercontent.cacom/~acoatleySeneca-willisCDOT/ops435/master/LabCheckScripts/CheckLab1.py
python3 ./CheckLab1.py -f -v lab0a
</source></li>#<li style="margin-left:25px;">Before moving on to the next step make sure you identify any and all errors in "lab1a.py"from the check script. <br>When the check script tells you everything is "ok" for "lab0a", you may proceed to the next step.<br><br></li></ol>-->
=== Part PART 2 - Setting Up up Your Linux Python Environment For OPS435 Labs===
In order to learn how to use python on your Linux machine, it is important to setup your Linux environment and learn how to interact with a Python shell. The following should be done on a terminal as the superuser (i.e. root).
:'''Perform the following steps:'''
:#The first step is to update your entire system. Fedora uses a new package manager: it is based on yum, yet it contains newer code and has more maintainer features as also contains improved features. It should work very similarly to the yum command, but check the man pages if you get confused.<pre>dnf update</pre> '''Perform the following steps:''' #Lets start installing applications we need, first Python version 3 and version 2:<sourcelang="bash">dnf install python3 python2 # Install python3.5 and python2.7yum update
</source>
:#Next, you will install a couple of useful applications called '''tmux''' and '''screen'''. They are referred to as '''terminal multiplexers'''. If you plan to spend a lot of time in the terminal, this powerful tool will help you get it done. Lets install it and plan to use it laterInstall extra packages for enterprise linux:<sourcelang="bash">dnf yum install screen tmux && ln -s /usr/bin/true /etc/sysconfig/bash-promptepel-screenrelease
</source>
:# You will now set your hostname to the Linux Distribution Next install applications that we are usingrequired, first Python version 3 and version 2:<sourcelang="bash">hostnamectl setyum install python34 python34-hostname fedora24 devel # Set hostname to distributionInstall python3.4 and python3.4 development librariesyum install python python2-namedevel # Install python2.7 and python2.7 development libraries
</source>
:#Installing vim(Vi IMproved) will give us syntax highlighting and allow for advanced customization for terminal editingWe now need to create a link to python3.4:<sourcelang="bash">dnf install vim-common vimcd /binln -enhanced # Install vim s python3.4 python3
</source>
:#Python pip is a package manager specifically for Python. While it is usually not recommended to install software outside of dnf or yumNext, sometimes the only way to get a specific or latest version you will be through pip:<source>dnf install python-pip python3-pip # Install pip</source><br>a couple of useful applications called '''Gittmux''' is a version control system that allows you to track any changes made to files and programs'''screen'''. The benefit They are referred to using git is primarily found when itas '''terminal multiplexers'''s used with multiple people, sharing and working on code together. While that is not how we will be using it If you plan to spend a lot of time in the terminal, this course, powerful tool will help you may find some benefits in using get it for managing multiple versions of the same program or for backing up your code onto the internetdone. Check out bitbucket for a free private code repository.<br><br>#Issue the following command Lets install it and plan to install gituse it later:<sourcelang="bash">dnf yum install git # Install git command line toolscreen tmux && ln -s /usr/bin/true /etc/sysconfig/bash-prompt-screen
</source>
:#IPython will be one of Set your hostname to the tools Linux Distribution we will use are using in case you did not set it correctly during the most. Lets install it. You will learn more about it in the next sectionprocess:<sourcelang="bash">dnf install pythonhostnamectl set-ipython python3hostname centos7 # Set your hostname to distribution-ipython # Install enhanced interactive pythonname
</source>
::You will be required to use a text editor in order to create and modify your Python scripts. There are many text editors that provide various features to become more comfortable and productive during your Python coding sessions. ::Below is a listing of several common text editors and their features.<blockquote style="margin-left:35px;">{{Admon/tip|style=Part 2 "padding- Lab Check lab0b ==left:25px"|Selecting an Appropriate Text Editor|'''Geany''' (recommended text editor for labs)<br>A simple graphical text editor for developers. It is available in the CentOS package repositories.<br>'''Vim'''<br>vim is a powerful text editor for system administration and programming tasks. All of the shortcuts and commands you've learned over the years will help you edit programs efficiently.<br>'''Sublime'''<br>Another powerful and popular text editor designed for programming. Is not free or open source.}}</blockquote>
<preol><li value=6" style="margin-left:25px;">'''Python pip''' is a package manager specifically for Python. While it is usually not recommended to install software outside of '''dnf''' or '''yum''', sometimes the only way to get a specific or latest version will be through pip:<source lang="bash">yum install python-pip # Install python2.7 pipyum install python34-pip # Install python3.4 pip</source></li><li style="margin-left:25px;">Upgrade python34-pip with the following command:<source lang="bash">pip3.4 install --upgrade pip</source></li><li style="margin-left:25px;">Issue the following command to install '''git''':<source lang="bash">yum install git # Install git command line tool</source></li></ol> <blockquote style="margin-left:35px;">{{Admon/tip|What is a Git?| '''Git''' refers to a '''version control system''' that allows you to track any changes made to files and programs. Our primary use for git in this course will be for backup onto to the internet. Check out '''bitbucket''' for a free private code repository.}}</blockquote> <ol><li value="8" style="margin-left:25px;">IPython will be one of the tools we will use the most. Lets install it. You will learn more about it in the next section:<source lang="bash">yum install python-ipython # Install ipython for python2.7pip3.4 install ipython # Install ipython for python3.4</source></li><li style="margin-left:25px;">Exit from the superuser shell to your regular user shell and issue the following commands to check your work for this section:<source lang="bash">mkdir -p ~/ops435/lab1/
cd ~/ops435/lab1/
pwd #confirm that you are in the right directory
ls CheckLab1.py || wget matrixhttps://raw.senecacollegegithubusercontent.cacom/~acoatleySeneca-willisCDOT/ops435/master/LabCheckScripts/CheckLab1.pypython3 ./CheckLab1.py-f -v lab0a
python3 ./CheckLab1.py -f -v lab0b
</presource></li><li style="margin-left:25px;">Before moving on to the next step, make sure you identify and correct any and all errors in "lab0b" output. When the check script tells you everything is "ok", you may proceed to the next step.</li></ol><br><br>
:'''IPython''' is an interactive environment that allows us to run python code line by line as we write it. This will also act like a bash shell prompt allowing users to enter a limited number of Bash shell commands. You will notice this by seeing an [IN] prompt where to enter commands and an [OUT] prompt that will display output from issued commands. We will start creating scripts out of the code within this '''IPython''' environment.
<blockquote style="margin-left:35px;">{{Admon/important|style="padding-left:25px"|ipython and python|[https://plot.ly/python/ipython-vs-python/ What is the difference between '''python''' and '''ipython'''?] Please note that in later labs, you can use either '''python''' or '''ipythone''' as the interactive python shell.}}</blockquote>
=== PART 1 - Common Ipython Commands and Features ===
=== Part 3 - Selecting a Text Editor to Use For Your OPS435 Labs = Using Magic Functions ====
:'''Perform the following steps:'''
:::This resource will appear OVERWHELMING (a huge amount of information)! As we move throughout this course, you will slowly use different magic functions from here, but we will never use all of them. They cover a huge range of different tasks, while we are writing code, allowing us to interactively inspect the Python we are writing and running. Lets move on for now.
<ol><li value="6" style== Vim Editor === === Atom Editor ==="margin-left:25px;">Issue the following command to exit your ipython session:<source> exit</source>=== Sublime ===</li>Sublime is a popular text editor with tons :In the future see if '''ctrl-d''' works instead of customizations and themesissuing the exit command to quit the ipython shell. === More === Suggest some more.</li>
<li style== Part 3 "margin- Lab Check lab0c ==left:25px;">Perform the following steps to evaluate this unit. Run these check scripts regularly as you work through the labs, they may give you hints if you get stuck.</li>:<presource lang="bash">
cd ~/ops435/lab1/
pwd #confirm that you are in the right directory
ls CheckLab1.py || wget matrixhttps://raw.senecacollegegithubusercontent.cacom/~acoatleySeneca-willisCDOT/ops435/master/LabCheckScripts/CheckLab1.py
python3 ./CheckLab1.py -f -v lab0c
</presource> Before moving on to the next step make sure you identify any and all errors in "lab1a.py". When the check script tells you everything is "ok", you may procede to the next step. = Investigation 2 - IPython = IPython is an interactive environment that allows us to run python code line by line as we write it. This will function almost exactly like a bash shell prompt, enter a command and recieve the output back. However the commands that we will be running are lines of python code. Using this method we will start creating scripts out of the code we build in the IPython environment. == Part 1 - Using IPython == === Using Magic Functions === Lets start with trying to run some python code in a interactive shell. This is a advanced python shell, similar to the bash shell that you have been using throughout the linux courses. To get into the ipython shell type: <pre>ipython3</pre> Now we are inside the IPython environment. We can run some basic bash commands in here, this is done through by using IPython magic functions. Lets try a few commands out now:<pre>%ls%pwd%cd ~/%ls</pre> Now hold on. You are not using Python here. These are aliases, that IPython gives you access to. What you are actually using is bash, but not all bash commands are available in the IPython environment. Lets find out which ones are available, type the following command into the IPython shell: <pre>%alias</pre> We should now have a list of all the bash command available in IPython. Shortly we will go over how to add new bash commands into this environment, but you must remember, these are only here to assist in your python scripting, we are not here to learn bash commands. Next lets add a new bash command that seems to be missing from this list: <pre>%alias vim vim</pre> The vim command will give us our much needed syntax highlighting, while we are editing scripts from within the IPython environment. These magic %alias functions do not save in between sessions, this creates a problem since you would have to create them every time you start IPython. This will create a error. <pre>exitipython3vim</pre> You should be seeing an error telling you invalid syntax. This is happening because we need to create a config file to make this alias persist inbetween sessions. Exit your current IPython session:<pre>exit</pre> Create a new file and add the following content to it: <pre>vim ~/.ipython/profile_default/startup/00-alias.ipy <pre> Place our alias inside:<blockquote>%alias vim vim</blockquoteol> Save and quit the file. Now lets return to our IPython shell and confirm that our alias is available right away. <prebr>ipython3%vim</pre> At this point vim should open successfully and you should now understand how to create new IPython aliases and store them persistently. Exit vim now and head back to the IPython shell. Lets setup a directory structures for completing and organizing labs. These should be the locations to store your lab scripts. <pre>%mkdir ~/ops435%mkdir ~/ops435/lab1%mkdir ~/ops435/lab2%mkdir ~/ops435/lab3%mkdir ~/ops435/lab4%mkdir ~/ops435/lab5%mkdir ~/ops435/lab6%mkdir ~/ops435/lab7%mkdir ~/ops435/lab8</pre> If you are interested in finding more information about magic functions in IPython, try entering the IPython shell and typing the following:<pre>%magic</prebr>
<preblockquote style="margin-left:35px;">cd ~{{Admon/ops435/lab1/pwd #confirm that you important|style="padding-left:25px"|Object and Variable|The terms '''object''' and '''variable''' are used to refer to a data item in the right directoryls CheckLab1computer programming.py || wget matrixThe term '''variable''' are mostly used in 3rd generation programming/scripting languages (e.senecacollegeg.ca/~acoatley-willisbash) while the term '''object''' is preferred in object oriented programming/CheckLab1.pypython3 scripting languages like Python.In the context of Python programming/CheckLab1scripting, When you see the term '''variable''' in the lab instructions, it can be replaced by the term '''object'''.py -f -v lab1a}}</preblockquote>
=== PART 1 - Common Introductory Python Functions ===
= Investigation 3 - Writing a Python ===Creating the introductory "Hello World" Script ====
print()
</presource>And run it from the command-line: <source>python3 ./lab1a.py</source> You will notice that nothing happened when is printed even though we ran this called the "print()" function. This is because we didn't pass any arguments to it, lets try again.<br><br> :# Modify your call to print() to inlcude an argument ('hello world'):<br><presource>
print('hello world')
</presource> This time we should now see that the python function "print()" has outputted to the screen the words 'hello world'. In python a word or a bunch of characters like 'hello world' is called a 'string'. So what we did In the above isexample, passed a '''string''' was passed as a '''argument''' to the print '''function'''. These words are important for understanding and talking about different aspects of code.<br><br> == Part 2 - Hello World == Next, we will make our first script with :# Note that there are similarities between the above Python print() function. Open and the Bash echo command, but Python is more picky than bash (which is a new text file called "lab1agood thing).py"Try to run print without the brackets or without the quotes to see what happens. <preblockquote style="margin-left:35px;">%vim ~{{Admon/ops435/lab1/lab1atip|Reading errors|One of the things that makes a good programmer is debugging skills. The first and most important debugging technique is reading and understanding error messages. Try to understand what the errors are saying even if you think you already know what the problem is and already have some idea about how to fix it.py}}</preblockquote> <ol><li value="5" style="margin-left:25px;">Write the following code into our python file. Note the she-bang line at the top of the file to run this script in the python3 environment. You will need to add this she-bang line for all python scripts you create for this course.<presource lang="python">
#!/usr/bin/env python3
print('Hello world')
</presource><li style="margin-left:25px;">Another way of running a pythion program is executing it directly, e.g.: <source>./test.py</source>Note that the file will need execute permissions even though you ran it just fine earlier. Why is that? Save <li style="margin-left:25px;">Download the file check script and quit vimcheck your work. Enter the following commands from the bash shell.<source lang="bash"> cd ~/ops435/lab1/ pwd #confirm that you are in the right directory ls lab1a. We will now go over py #confirm that you have the process of manually running this python lab1a.py scriptin your directory ls CheckLab1.py || wget https://raw.githubusercontent.com/Seneca-CDOT/ops435/master/LabCheckScripts/CheckLab1.py python3 ./CheckLab1. Both in py -f -v lab1a</source><li style="margin-left:25px;">Before moving on to the Bash shell next step make sure you identify any and all errors in "lab1a.py". When the check script tells you everything is "ok", you may proceed to the IPython shellnext step.</ol>
=== PART 2 - Working with Python Objects ===
print(name)
</presource>:#Think about why this does something different:<source lang="python">print('name')</source>:#Now lets try something new, we are going to print out the string and concatenate/combine it with another string. The plus sign can be used to join 2 strings together. However, make sure that your variable object is always outside the quotes, or it will not resolve to a value. <presource lang="python">
print('I have a friend named ' + name)
</presource> === Part 3 - Evaluation === Create a :#To gain practice, complete your python scriptwith the following content and details: lab1b.py::::* The script should have a '''Shebang line''' like you did for your lab1a.py python script::::* The script should use a single variable object called "name"::::* The value of the "name" variable object should be "Isaac"::::* The script, when executed, should print out "How old are you Isaac?" Example ::::*Sample run: <presource>% cd ~/ops435/lab1/%run ./lab1b.py How old are you Isaac?</presource> Try the check checking script as you are working through a script to sometimes get hints.<br><br> <ol><li value="7" style== Part 3 "margin- Lab Check lab1b === This course is designed with a unit testing suite, which can be used to look at the scripts you write left:25px;">Download and give real-time feedback. This feedback is not perfect, however it may offer some hints if you get stuck with a error. It can also be used to make sure you are on run the write track, and show progress. Download the check checking script. Enter the following commands from the '''bash shell.''':<presource lang="bash">
cd ~/ops435/lab1/
pwd #confirm that you are in the right directory
ls CheckLab1.py || wget matrixhttps://raw.senecacollegegithubusercontent.cacom/~acoatleySeneca-willisCDOT/ops435/master/LabCheckScripts/CheckLab1.py
python3 ./CheckLab1.py -f -v lab1b
</presource></li><li style="margin-left:25px;"> Before proceeding, make certain that you identify any and all errors in "lab1b.py". When the check script tells you everything is "ok", you may proceed to the next step.</li></ol>
:#Create a python script (called lab1c.py) and first - start with a few simple things to try: :#Lets create some new variables objects to play with.<presource lang="python">
num1 = 5
num2 = 10
</presource> In IPython we :#You can inspect these variables by just typing the name of print the variable. But values in a those integer objects:<source lang="python script this will not provide any output. This feature is useful however for debugging. <pre">print(num1)print(num2)</presource> :#Now we will make a new variable integer object and try some math. :<presource lang="python">
sum = num1 + num2
</presource> This will add the values contained in the variables integer objects together, providing a sum. However you will note that there is no output. First lets Let's inspect the new value. :<pre>sum</pre> Does this value look right? If we wanted to print this out to the screen we could use the following source lang="python code. <pre">
print(sum)
</presource>Does this value look right? Are you sure?<br> :#Now lets try printing this sum out with a string.:<presource lang="python">
print('The sum is: ' + sum)
</presource> What happened? Did you receive an error? This will may have been the first time you've seen this error, but it won't be the last. What we tried to do is combine a string with a number, and this won't work. <br><br>In order to use display this number as a string we will use the "str()" function on it. The "str()" function will return a string of your number and provide it as a argument to "print()". This function will not change the value of your variableobject, your variable object is still a an intergerobject.<br><br> :# Issue the following:<presource lang="python">
print('The sum is: ' + str(sum))
</presource>What did you notice this time?<br /> === Part 4 - Evaluation === Create a :#To gain practice, complete your python scriptwith the following features: lab1c.py:::* The script should have a Shebang line.:::* The script should have a variable an object called '''name''':::* The script should have a variable an object called '''age''':::* The value of the '''name''' variable object should be '''Isaac''':::* The variable object '''age''' should contain a integer:::* The value of the '''age''' variable object should be '''72''':::* The script, when executed, should print out "Isaac is 72 years old!" :::Example run: <presource>%cd ~/ops435/lab1/%run ./lab1c.py
Isaac is 72 years old!
</presource><br> Try the check script as you are working through a script to sometimes get hints.<br> =<ol><li value=10" style= Part 4 "margin- Lab Check lab1c === This course is designed with a unit testing suite, which can be used to look at the scripts you write left:25px;">Download and give real-time feedback. This feedback is not perfect, however it may offer some hints if you get stuck with a error. It can also be used to make sure you are on run the write track, and show progress. Download the check checking script. Enter the following commands from the bash shell.:<presource lang="bash">
cd ~/ops435/lab1/
pwd #confirm that you are in the right directory
ls CheckLab1.py || wget matrixhttps://raw.senecacollegegithubusercontent.cacom/~acoatleySeneca-willisCDOT/ops435/master/LabCheckScripts/CheckLab1.py
python3 ./CheckLab1.py -f -v lab1c
</presource></li><li style="margin-left:25px;">Before moving on to the next step make sure you identify any and all errors in "lab1c.py". When the check script tells you everything is "ok", you may proceed to the next step.</li></ol>
:In the previous section, you performed a couple of simple mathematical operations. In this section, you will learn some additional mathematical operations.
:'''Have Ready to Show Your Instructor:'''
::<span style="color:green;font-size:1.5em;">✓</span> Output of: <code>./CheckLab1.py -f -v</code>::<span style==Part 5 "color:green;font- Evaluation ===size:1.5em;">✓</span> Output of: <code>cat lab1a.py lab1b.py lab1c.py lab1d.py</code>