User Tools

Site Tools


opus:spring2013:ahughe12:journal

sysprog Journals

MONTH Day, YEAR

This is a sample format for a dated entry. Please substitute the actual date for “Month Day, Year”, and duplicate the level 4 heading to make additional entries.

As an aid, feel free to use the following questions to help you generate content for your entries:

  • What action or concept of significance, as related to the course, did you experience on this date?
  • Why was this significant?
  • What concepts are you dealing with that may not make perfect sense?
  • What challenges are you facing with respect to the course?

unix Journals

First 2 chapters of Unix for the Beginning Mage.

The Command Prompt is the super magical spellcasting area. It's where you summon your creatures for battle, your sorceries and enchantments for stat buffers and where you play instances that can interfere with your opponants strategy(well, maybe not that lst one, but you get it. )

__Command: 'whoami'__

prints the name of the host user commanding the prompt, IE the name of your spellcaster. IE,My name is alex, but on skyrim I have a character named Improper Grammar Dessimator. (because to Dessimate, one only needs to have to attempt to correct improper grammar.)

__Command: 'cp'__

this copies files

__Command: 'mv'__

this moves files

__Command: 'rm'__

This removes files (in magic, it would remove it from the game)

__Command: '/'__

this is the root, the root of the filesystem in which you can make a pathway to other files, like the front door of your house.

This is the starting point to which you connect to other files (like walking into the front of your house, as you step into the living room, the code would be:

'/ living room/'

=If you were to want to travel to the sofa in the living room, the code would be:= ='/living room/ sofa'=

=notice how you would have to start at the root '/' then enter the living room, and from there sit on the sofa.=

=RELATIVE VS ABSOLUTE Path:=

=the last example of '/living room/ sofa', is considered to be an ABSOLUTE path, because one has to start at the front of the house.=

Now Consider: 'sofa/living room/' this would be considered a a RELATIVE path because you are starting from the current location and then continuing onto a different location, from the sofa in the living room to just standing in the living room

__Command: '..'__

This command tells this system that you are leaving your current location so, say if you were in the living room. by entering

'../kitchen'

this would imply you leave your living room and continue into the kitchen, because the kitchen is not in the living room(unless you live in one of those super cool 10×10 studio apartments in NYC, in which case, every room is in one)

__Command: 'pwd'__

This is an acronym for “print working directory” This tells you where you're at. So after a long night of drinking hard, you might wake up in the morning and be like “where am i ?!”. By using this command it will hopefully tell you are in:

'/your house/your room/your bed/'

but sometimes it may be:

'/some city/ some alley/ some cardboard box'

In which case you may want to lay off the drinking so much, but that's besides the point.

__Command: 'mkdir 'argument''__

This command creates a new directory, kind of like creating an addition to your house, the name of that addition is what is placed in the argument so say if you were in your living room, and you just bought a coffee table to hold all your super awesome gamer magazines you would cast these:

When already in your living room, you place the coffee table there. the code would be:

'mkdir coffeetable'

this creates directory in the existing directory, much like the different room of the house, but there are things in some rooms that aren't in others.

__Command: 'cd'__ 'name of desired directory to switch to'

this stand for change directory if you were to take the last example, were already within your living room and used this command:

'cd coffeetable'

it would take you out of your living room and shrink you down into the coffeetable. (insert some benign “Honey, I Shrunk the Kids!” Reference here)

CONDITION: 'cd' with no argument or with a '~' afterward will take you to the home directory, or your front door.
CONDITION: 'cd ..' will take you to the directory before the one you are currently in
CONDITION: 'cd' 'ABSOLUTE PATH' will take you to anywhere you want to go.
__Command:** ls**__

ls stands for list, which simply lists the contents of a directory. So if you were in /living room/coffeetable and then commanded ls, it would be like :

GamerWorld, You play games too?! etc.

====2/1/13 Alex Hughes 'Mage ch. 3.' 'Basic file and directory copying and navigation'====

Creating Empty files

_Command: 'touch 'name''_

This Creates a blank file. to know if something is a file and not a directory, use *cd* and the name of the thing you wish to see if it is a file. If cd fails, then it is a file.

_Command option: 'ls -F'_

the - calls an option of the command '-F' makes the command 'ls' list only the files in the current directory you are in.

'Editing Files'
_Command: 'nano 'name''_

an interactive command that produces a text editor

_nano interactions:_
='^' = control key=
_Command: 'cat'_

Splits the content of the file to the terminal so when you use nano to edit a file, the text you put into the file will be spit out into the terminal with cat

_command: 'less'_

a interactive command that supports paging paging uses the command 'more' and 'less' to navigate

'Copying and Moving Files'

_Command: 'cp 'name of file' 'name of copy''_

copies the file into the other file.

_command: 'mv 'name' 'location of where you wish to move file to''_

Moves the file named to the location from the files current location

='sending files to the grave'=

_Command: 'rm'_

Removes file

_Command: 'rmdir'

removes directory

—>option '-rf' - stand forrecursive force, which keeps the prompt from asking wether or not you wish to delete the directory and automatically deletes it.

'Making Shells'

_Command: 'echo $SHELL'or('echo $shell')_
_Command: 'history'

prints all typed and entered into prompt by the user.

Pressing the 'Tab' key once with the condition of letters will show you the commands entered with those letters

'changing your prompt'

with Bash:

'PS1="<My New Prompt>"

with other Shells:

set prompt=<"My New Prompt>"

..

Hahns - Chapter 9.

_Key Words:_

RTFM (Really Try For Myself)(Read the fucking manual) -Try to solve the Problem or find the information for yourself before you ask for help, when others ask of you for your help, give willingly your time.

_Command:_ 'man [command name(s)]'

This command accesses the user manual and prints the reletive information about the command name.

_Command:_'less,more,pg'

Any one of these are page viewer programs, which are opened with the use of the command, the most popular that being of 'less'

_'using the UNIX Online Manual and the Accompanying Commands'_

_In man, '/'( pattern ) <return>_

This searches man for a pattern associated with a word, to enact the search throughout the manual for this pattern, you have to press retuen, or enter.

n

goes to the next pattern in the search,

? (pattern) <return>

will go back

'!' 'man (command)'

will allow you to open up another man terminal whilst already in one.

'man (number 1-8) (command)'

this tells UNIX what section of the manual to look for the command. the number being a different section, each with their own specific levels of commands.

=(this may need -s before on some systems)=

'man -f (command)'

=or 'whatis (command)'= This only shows the description, instead of the whole manual page

'man -k' (keyword)

=or 'apropos manual' (keyword)= This searches the manual for all encompassing strings that match your keyword, including other commands that use that keyword.

_'HINT'_ If you want to view commands that are built into the shell

'man bash'
'man ksh'
'man csh'

_The INFO Manual_

'which info'
'type info'
'whence info'

or =='man info'= =_the 'info' manual allows information to be linked and to access those links to further access more information, unlike 'man'=

=much like that of a website. (ughh, but it was developed by the emacs developers…)=

Alex Hughes

Harley Hahns Ch.23

Unix FileSystem

The Types of Files

_1.Ordinary_

- Contains data, most of the files that the user works/ interacts with. - 2 types, text and binary.

_2.Directories_

- I pitty the fool who doesn't organize their files in directories. - Essentially directories are pointers to other files, or other directories, that point to files.

/proc - this goes to the proc file directories, part of the pseudo files below. ls /proc to list them files !

_3.Pseudo Files_

- These files are service files, they access the kernal and central elements of the OS. - Special: In the category of Pseudo Files there are SPECIAL files, which are primarily device files.

  1. a device file is that which represents physical objects that interact with yo (yes, i meant to type'yo') machine. such as a keyboard, mouse, hard disc etc…

- Pipe. Another type of pseudo file is that of a pipe, which connects the output of one program into the input into another. - Proc: A file that gains access to (and in some cases, change) the kernal data itself

3.1 Hardware:

/dev/[name] - device directory

3.2 Terminal:

/dev/tty[#] - terminal /dev/pts/0 or, /dev/ttyp0 - Pseudo terminal

3.3 Pseudo Devices:

/dev/null - discard output, input returns nothing

/dev/zero - discard output, input returns nulls(this is important, sometimes you gotta send somethin!)

/dev/random - random number generator, has some redunduncy

/dev/urandom - random number generator, can be slow from having to collect noise

3.4 Pipe Files:

File output | file input the | key is a command for a single instance pipe.

mkfifo - fifo satands for file input/ file output - use to maked named pipes

Anonymous vs. NAMED - Named pipes continue to exist until deleted, anonymous pipes are single instance commands.

3.5 Proc Files

ls -l /proc/kcore - wanna see the memory of your system!?

_Mounting Vs. Unmounting_

Every storage device has its own directories and subdirectories, in order to connect two more devices, the smaller device root need to be connected

to a specific directory in the parent device. The Connection is called a MOUNT. The directory that the smaller filesystem is located in the parent

device is called the MOUNT POINT.

mount [device directory] [main tree directory location] - mounts a device manually

the device directory is the root of the device itself, whereas the main tree directory is where access to that devices directories on the system.

- the main tree directory has 2 types fixed, and removeable. the fixed is used for titems like hard drives and other coponants that will be

permanently attached to the computer. removeable are things like CD's Flash drives etc.

/mnt - the fixed mount directory

/media - the removeable mount directory

umount - unmounts a device manually

Alex Hughes

Ch.4+5 Mage

Partitions and Access

_/bin_ - this holds commands!

df -(stands for disc filesysyems) lists all partitions, the memory allocated for certain key storage programs, lists amount of allocated memory that is in use, the location of the partion, and keeps that allocated memory from being accessed by everyone, so that only certain people with access can modify or access that memory.

groups - all the groups your user is a part of.

ls-l

ls -l - this lists a bunch of stuff about the directory you're in.

- 1.lists the read (r), Write(w), and execute(x) access to files, in three groups of the user, the group, and other, otherwise known as the UGO. - 2.number of links to the file - 3.Owner of the file - 4.What group the file belongs to - 5.the size of the file in bytes. - 6.The month the file was created. - 7.The day the file was created. - 8.the time the file was created. - 9.the name of the file

chmod

chmod [(UGO) (+/-) (RWX access)][name of file changing] - Change mode - This allows you to put a file or directory in a shield, or protect it so that only users with access can change its memory.

the first argument states whether you are giving the user(U), Group(G), or everyone else or other(O), read®, write(w), or execute(x) access. you give them RWX access with a + sign and take away RWX access with a - sign

If one were to want to give the same RWX access to UGO, one could use a instead, for All

multiple commands to RWX and UGO can be done simultaneously with a comma:

User with RWX access and Other with only RX access:chmod U+RWX,O+RX

This can also be done with a numeric value, with read = 4, write = 2, execute = 1, none = 0. With each user in the UGO getting a numeric value for each RWX group.

for the user to get all access, it would add to 7, or RWX 4+2+1,for read and execute it would be 5, or RX 4+1, and so on and so forth.

for this mod, a number must be assigned for each UGO group, otherwise it will only modify the other group, and erase the other user and groups RWX access.

IE: chmod 777 [filename] - gives RWX access to all UGO users. chmod 666 [filename] - gives RW access to all UGO users. etc…….

types of files in ls -l

- - Plain File d - Directory l - Link p - Pipe b - Block Device c - Character Device

links are copies of files that span file system. ln [file 1][file 2]

Case Study x 01

Number 1:

To copy the files in the archives folder:

cp archive1.tar.gz ~

This copies the file and puts it into the home directory ~

Repeat for archive2.zip

Number 2:

To extract archive1.tar.gz ,

first, you gotta go to your home directory to access write access to your copied files.

cd ~

second

tar -zxvf archive.tar.gz (I had to look this up on them there internets to find all the options to decompress)

to decompress that shiz

third to unzip archive2

unzip archive2.zip

Number 3:

tar -cf arc.tar filea fileb filec filez

-c creates the compression f creates the file

number4:

gzip –best filea fileb filec filez

Case Study x 02

1. Use the * wildcard

from the path /src/unix/badname:

chmod 777 -R exercise

this gives write and read access to errryone.

nano just\ a\ simple\ file.txt

rm “??? can you delete me ???.abc”

mv “change my\ name.file” No_I_Will_Not.file

and so forth

2. Using the escape **'\'** character
3.Change to the /challenge subdirectory

rm ./“- challenge round -“

then type yes and enter

Ch. 21 Harley Hahns

Pagers

less, more, pg, cat

Others for specific parts of a file instead of a whole file.

Head For the head of a file

tail to display the end of a file

grep

a pager is a command that displays the contents of a file.

less (name of file)

(to see more about less refer to pages 527 through 535 of Hahns )

You can edit the pager your system uses by default when a program calls the Pager program for display. this is done by:

Bash:

export PAGER= then put in the pager you would prfer to use, primarily is is less so it would be export PAGER=less

C-Shell:

setenv PAGER less

less Navigation

= =

Commands:

:n change to next file in list

:p change to previous file in list

:x change to first file in list

:e insert a new file into the list

:d delete current file from list

:f display name of current file (same as =)

=same as :f

/* (pattern) - search forward for a specified pattern

?* (pattern) - search backward for a specified pattern

vi

vi be a text editor

vi -R - Read only mode! to keeo you from changing important stuffssss

hexdump, od

hexdump -C (command path) | (command) - displays command in canonical format

od -Ax -txlz (command path) | (command) - displays command in canonical format

od options

= =

-A - address

x - canonical output

-t - type of format

x1 - display canonical format

z - display in hex one byte at a time

-j (bytes ie:0x120) - jump over bytes declared

-N (bytes ie:96) - Limit output to bytes

these display binary data.

Also, Learn how to count in multiple number systems, DO IT.

whereis

whereis (command) - displays the path to the location of a command

Ch.11 Harley Hahns

The Shell - The Shell is a User interface and script interpretter. or a COMMAND PROCESSOR

Shell Command Types

sh- Enter shell, start work session, enter commands, shell processes commands and then sends a new shell prompt. the Bourne shell eventually adapted the standard title in 1975

ksh - the KORN Shell - an inprovement to the sh Bourne capabilities

bash - The free shell devolped by users for the a$h-Holes at AT&T

C-Shell

csh - A shell based off and expanded from the original sh shell, but expanded with major improvements like aliases. was also created by Bill Joy, ans he's awesome, because he made vi

tcsh - the free version of csh developed by ken greer.

the Bourne Family Shells were better at programming and shell scripts, so C-Shells got phased out of use.

Hahns found it pertinent to state that C-Shells are not widely used, but highly regarded, and that Bourne Shells are better, but then goes on how to use them. I don't find this important

Shells and using them!

There are many different types of shells and the commands for them may alias other versions, but this isn't entirely imporant for beginers.

open command: sh - may open bash or ksh shells

open command: csh - may open tcsh by default

Remote Shells

ssh - Secure Shell

rsh - remote Shell

Changing to a different shell

= =

Shells are treated just like any other program, your operating system just has a default in which it is set to.

In order for you to try another shell, you just have to type the name of the shell as a command, then the system will pause the default shell, and open the shell you had commanded to open.

IE: If you have a default shell of bash and you would like to open tcsh you just type and execute the tcsh command and use ^D to exit the tcsh program.

To View the Shells Available on your system

View:

'less(or any other text editor) /etc/shells'

or

'chsh [-1]

Changing Shells: chsh or passwd

=Howto:=

you can change your login shell you use the chsh command which functions with 2 parameters and options

chsh [-s shell] [userid]

Ch.12 Harley Hahns

The Shell

Display:

Display Current Shell: echo $shell

Names and types of terminals being used: TERM, xterm, linux, vt100, ansi;

Variables

Variable Interaction:

There are only 4 ways in which to interact with variables: Create, Check Value, Change Value, and Destroy

Local Vs. Global

Types and Definitions:

Two types of variables are Local and Global

Local - variables that are located and only have a scope of influence in the place in which they are created.

Global - Variables that are located in one place, but have a scope that is wider than simply in the place they are created.

Displaying Environment Variables

Commands:

env - Display the default Environment variables.

printenv - display default variables.

Use less - to display one page at a time of environment variables

use sort to display variables in alphabetical order

IE: env | sort | less This is a pipeline command. It implements many commands at once.

To display the Shell Variables

Commands:

set - display all shell variables

echo ${Terminal Type} - display a single shell variable.

IE: echo $TERM

Declaring and Creating Variables

Commands and use:

Use all caps with a equal sign after, this creates a shell+environment variable(in Bourne Shells).

non bourne families - in other shell families, the export [VARIABLE] command needs to be used to make a created variable both shell and environment variables.

one could also use an expression to create and declare a variable to environment:

VARIABLENAME=variablecontent ; export VARIABLENAME

Removing/Deleting Variables

Command:

unset VARIABLENAME VARIABLENAMEetc…

C-Shell Variable Differences

Explanation:

The C-Shell Family has a more clear distinction from global and envirionment variables than the borne shell family, the bourne shell family only has shell(local) variable and combination variables that are both shell(local) and environmental(global). The C-shell family uses unique Environment(global) variables. As such there are different commands for these shells.

To set(create) and unset(delete) shell variables the set and unset commands are used. To create and delete environment variables the setenv and unsetenv commands.

If you create a variable without giving it content, it will be set to NULL

Shell Options (Bourne Shells)

Shell options are that in which control the operation of the shell.

set -o - Displays all shell options

set +o - Displays shell options data to be used in a script

send either to less to display in an easier manner to read.

- For you to change your shell, you have to have the other shell in the /etc/shells directory, and you can only change your user id settings, you cannot change another users shell setting unless you are a superuser(The Sayian of Users).

-some systems don't have a chsh command so passwd is used with the [-s] option on AIX, and the [-e] on solaris.

As System Administrator, the way to change someone else's shell is to use usermod with the option[-s](see man for more implementation)

Ch.13 Harley Hahns

Using the Shell: Commands and Customizations

Metacharacters

Definition:

Metacharacters are characters that have special meanings and functionality that is specific to the shell.

Use:

Because there are so many damned metacharacters for specific uses, it would be redundant to list them here, it would be like trying to list all theo words in the dictionary. At some point, from using them, it will become apperent what should be used when.

I will just describe the ones used as they are mentioned in this and the upcoming chapters. A few of which have already been explained, but not as that they are metacharacters.

Metacharacters: Nullifying Metacharacters and printing them literally

sometimes it is pertinent to print a metacharacter and not have it be enacted by the shell, for viewing and explaining purposes, there are a few ways in which to do this.

the Backslash

placing a \ before a metacharacter in a sentence will nullify it from being enacted by the shell

IE:

echo mike wizowski \; you didn't fill out your paperwork

The ; in this instance has been ketp from enacting by the \ character

This implies that the \ is an escape character, in that it changes the mode the shell interprets the following character.

The \ is good for single characters, but it can get tedious for multiple characters you wish to escape, in that instance, there are other ways to escape from other metacharacters.

the single quote

IE:

echo 'mike wizowski; you didn't fill out your paperwork'

by encasing the entire statement after echo it escapes all metacharacters that ly within them.

the double quote

The double quote is used to escape displaying metacharacters, but for variables that can output a value, it does not escape the $ character and the variable name, so that the value of that variable can be displayed.

IE:

echo “mike wizowski; you didn't fill out your paperwork, <$TERM>“

This will print the value of <$TERM>, while escaping the ; character within the quotes.

the double quote only recognizes 3 characters to not escape:

1.$ - Value

2.`(backquote)

3.\ - specific character escape

BUILTIN vs. EXTERNAL Commands

Process:

When a Command is enteres the shell breaks it apart into sections, or parses it.

It breaks it into the

1.name

and

2.Arguments/options

of each command.

The Difference

When a command is BUILTIN, it is run directly by the shell within its own process.

When a Command is EXTERNAL, the shell searches for a specific program and runs it in a seperate process.

Checking whether a command is BUILTIN or EXTERNAL

Command:

type [command]:

type is a command that will output the path to EXTERNAL Commands, and state whether or not if the command is a shell command, also called a BUILTIN command or KEYWORD(specific for shell scripts).

Listing BUILTIN Commands with man

The man [command] pages work well for external commands for viewing, however, one cannot view BUILTIN commands because they are not seperate programs, they are within the shell program.

Viewing Builtin Commands

To do this you need to view the man page for the shell itself

so it would be:

man bash:

(or whatever shell you are using)

Other systems have seperate man pages for their BUILTIN commands, but this is system dependendat.

to tell whether or not this is the case for your system use:

apropos builtin

Which will print the place in which the commands are held.

How EXTERNAL commands are executed by the shell

Because EXTERNAL Commands are not enacted directly by the shell itself, it has to find and execute them seperately.

It does this by searching a standard PATH search within the /bin or /usr/bin directories, or something along those lines, to find and execute those commands.

Modifying Search PATHS

the PATH variable is the where the shell searches for external commands. In most circumstances this is set for you in default places, however, sometimes it is necessary to declare the PATH for the shell to find a command that is not in a standard /bin directory.

the export command

the extort command allows for the PATH(or path in C-shell families) variable to become an EXTERNAL variable, and then that variables' content needs to be set for the PATH to be set to the right directory.

IE

export PATH=”/bin:usr/bin:/usr/ucb:/usr/local/bin”

(in C-Shell Family the set path= [path] command is used for the same result)

Reasoning

Sometimes Shiz just aint where it ought to be, or its where it ought to be, and ya'll gotta go find it, and let the machine know where it is for it do to its shiz.

Kinda hard to take a shiz when you don't know where the bathroom is!

Shell Script Use

Say you write a shell script, that has its own /bin directory($HOME/bin), you would want the shell to enact those commands and the PATH of $HOME would needed to be changed in order for the shell to find those commands.

IE

export PATH=“$HOME/bin:$PATH”

This changes the value of PATH to the value of $HOME in the /bin directory of the EXTERNAL of HOME, allowing your script to find its shiz.

the :$PATH at the end makes it so the PATH still retains its standard searching directories as well, instead of completely erasing the standard PATH and replacing it with HOME/bin.

By putting HOME/bin in the front it allows the HOME/bin directory to be searched for commands first, by putting it at the end it does the oppisite.

NEVER PUT YOUR ROOT INTO YOUR PATH VARIABLE

if you do this you will be HACKED and you probably deserve it as well.

by implementing the root into the PATH you open yourself up to allow other people to access everything on your system without needing a password. DON'T Do it

Shell Prompts

$ - Bourne Shell Fanily

% - C-Shell

> - Tcsh

# - root on either shell system

Modifying the Shell Prompt

The Bourne shell family has an EXTERNAL variable named PS1 that holds the value of the prompt. Because it is an EXTERNAL variable it can be set eith the export in Bourne shells and set in C-Shells.

IE

Bourne:

export PS1=“$ “

C-Shell

set prompt = ”> “ or, set prompt = ”% “

Command Substitution

COMMAND SUBSTITUTION = This Embeds one command with another, executing an embedded command and then replaces it by its output.

The `(Backquote) character tells the shell to execute commands in 2 parts.

IE

echo "the time and date are `date`."

What it's doing:

it evaluates date first due to the ` (backquote), and replaces its value into the space within the backquotes, and then continues to evaluate the rest of the command.

so if the date were Monday April 5th 3013 at 8 am the command would read:

echo “the time and date are Mon Apr 5 08:00:00 EST 3013”

which would then just print:

the time and date are Mon Apr 5 08:00:00 EST 3013

The History List

the history list is the list of commands that have been sent to the shell.

The bourne shell history list

fc -l

fc stands for “fix command

other options allow you to execute members of the list such as:

fc -s [command number within list]

the C-Shell history list

to execute members of the list:

![number on list]

history

history list size

the list size is the amount of commands that are saved into the history value

this can be changed using the variable:

HISTSIZE

and can be set with the export(or set in C-Shell) command:

export HISTSIZE=[size you wish to save]

the rest of the chapter is aliases and autocompleting that I can do without the extended detail as of right now

Ch.14 Harley Hahns

Initialization Files

Initialization files are that in which customize your shell and be executed automatically upon your behalf.

Environment vs. Login

Environment files are the files in which you put all the commands you wish to be executed everytime a new shell starts and Login files for everytime you log in.

Running Bash in POSIX

yo fool? got a shell script that needs to be POSIX compatible?

Start it with the –posix option. so it'd be bash –posix

DOTFILES and rc Files

Dotfiles are hidden files

rc files are initialization files for their encompassing named programms/commands.

IE

.exrc

which is the initialization file for the vi and ex text editors.

When Initialization files are executed

Non-login files Files

Non-login files only execute you environment variables
Login Files only execte after logining in

Bash login and environment

Bash Login:

.bash_login

Bash Environmental

.bashrc

The rest of this chapter is just implementing into the environment and login files all that has been explained previously in the past 4 chapters

MONTH Day, YEAR

This is a sample format for a dated entry. Please substitute the actual date for “Month Day, Year”, and duplicate the level 4 heading to make additional entries.

As an aid, feel free to use the following questions to help you generate content for your entries:

  • What action or concept of significance, as related to the course, did you experience on this date?
  • Why was this significant?
  • What concepts are you dealing with that may not make perfect sense?
  • What challenges are you facing with respect to the course?
opus/spring2013/ahughe12/journal.txt · Last modified: 2013/05/04 16:30 by ahughe12