User Tools

Site Tools


blog:spring2016:mpotapen:journal

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
blog:spring2016:mpotapen:journal [2016/02/22 01:20] – week 4 mpotapenblog:spring2016:mpotapen:journal [2016/05/11 15:51] (current) mpotapen
Line 91: Line 91:
 ====Week 4==== ====Week 4====
  
-This is a sample format for a dated entryPlease substitute the actual date for "Month Day, Year", and duplicate the level 4 heading to make additional entries.+This week was spent learning about VI. VI, of course, stands for vertical integrationHold on, 8th grade social studies is leaking, let me just fix that. Okay, VI actually is short for "visual", but like vertical integration, it can greatly reduce overhead costs if applied properly. Just make sure you know how to control it or you're in for a world of pain.
  
-As an aidfeel free to use the following questions to help you generate content for your entries:+The beauty of VI is that it was created before the invention of the mouse whichIf you agree with Matt, is a humiliating and debasing thing for a human to have to use. Cursor keys didn't exist either and neither did many amenities that we're used to nowadays like volume buttons and delete keys. People had to be clever and economical with their keystrokes and needed a lot of functionality to be commanded by only a small number of actual buttons. The thing that appeals to me about VI is that it gives you the tools to have the computer do your work for you instead of having to scroll through documents yourself like some kind of animal. Using a computer well is a beautiful thing. Honestly speaking, it does put me off how different it is and I'm not entirely convinced that some of its appeal isn't just based on nostalgia but I have an open mind I look forward to becoming more proficient with it. 
  
-  * What action or concept of significance, as related to the coursedid you experience on this date+So what are the basics of VI? The first thing to know is how to type actual things to the document. It seems simple, and it is. But you have to be in insert mode. One of many ways to enter insert mode is to simply press the "i" key. Now when you start typing, words actually show up on the screen. Typing away at your document recklessly whilst being in command mode can be a very jarring experience. However, command mode is awesome and powerful. the "esc" key always puts you in command mode and it is where you can seriously start editing your document.  
-  Why was this significant+ 
-  * What concepts are you dealing with that may not make perfect sense? +For example, let's say you want to copy 4 words adjacent to your cursor. Are you going to spend time trying to highlight exactly what you want with your mouse? No, because you're not a barbarian. You simply, like a gentleman, press "4yw". The commands of VI combine very logically with each other. The "w" command advances your cursor by a word. The "y" command is copy. Putting a number prefix before commands tells VI to do the command that number of times. So "4yw" means copy the next word four times, or copy the next four words. Very elegant. You can do the same thing with lines instead of words by substituting the "w" key with the "$" key which moves the cursor to the end of the current line. Instead of copying the next x number of lines/words you can get the x previous lines/words by substituting the "w"/"$" commands for the "b"/"0" commands which do exactly the opposite. And the craziest thing isthis is just the tip of the iceberg. 
-  * What challenges are you facing with respect to the course?+ 
 +I can't remember much else you can do with VI right now but believe me, there's a lot. Therefore, I'm going to end this entry for now but when I do run across other VI commands that those savages using Microsoft Word don't have access to, I will describe them below. 
 + 
 +====Week 5==== 
 + 
 +In week 5, Matt taught us about wildcards and a variety of things about Linux in general. 
 + 
 +===Wildcards==== 
 + 
 +Wildcards are characters that the computer interprets as a substitute for a certain class of character. Using a wildcard allows you to specify your search criteria with greater Flexibility. Matt showed us 4 wildcard characters. You can do a lot with those four. The * represents any number of any character. It's not super specific but it gets a large amount of its importance from being in combination with the other characters. ? represents one or more of any character. It's slightly more specific and as far as I can see so far its main functionality is to determine the size of the token that you're seeking. Putting characters inside of square brackets tells the computer to search for any of those characters. For example [aeiouy] can be used to search for vowels. [A-Z] can be used to search for capital letters. The fourth wildcard character is [^]. That is referred to as the inverted char class character and searches for everything not included in the brackets. [^aeiouy] searches for any character that's not a vowel.  
 + 
 +Combining these wildcards can result in some very powerful searches but more importantlyit's fun to figure out how to use them to get what you want. 
 + 
 +The in class examples concerned counting the number of files with certain attributes in their names. By using ls in combination with the wildcard characters and then piping (or if you're in on this joke, passing the joint) to wc you count files based on their file names. For example the command  
 + 
 +<cli> 
 +lab46:~/src/unix/projects$ ls ??? | wc 
 +</cli> 
 + 
 +returns the number of files that have file names of exactly three characters. The command 
 + 
 +<cli> 
 +lab46:~/src/unix/projects$ ls *???* | wc 
 +</cli> 
 + 
 +Returns the number files with at least three characters in their file name. I wonder if there's a way to use these characters to represent a file with at most 3 characters (is there some kind of inclusive or command?). Anyway, I'll stop the examples here, thus ending the section on wildcards except for some brief, original words that I've just written about performing searches. You can't always get what you want but if you try, sometimes, you just might find that you get what you need. 
 + 
 +====A Variety of Things About Linux in General==== 
 + 
 +Matt talked about the environment variable $PATH. $PATH tells the computer which directory to search through when trying to match what's in STDIN with possible commands. When typing ls, for example, and pressing enter, the computer will search through the directory specified by $PATH and see if it finds a file called "ls" and execute it if it does. A cool thing that can be done with commands is aliasing. By aliasing commands, one can run certain options every time they run the command without having to specify it manually. For example aliasing the command "rm -i" to "rm" results in the rm command running with the -i option switched on even if the user only types "rm" into the command line. Incidentally, the -i option tells the computer to ask if you're sure that you want to remove the files you've specified them before tossing them in the bottomless abyss into which I once lost a 15 minute power-point presentation due to a tragic miss-click. 
 + 
 +Matt also mentioned that starting a file name with "." hides that file from ls. Luckily, you can alias ls to always run the option which shows hidden files. Matt also showed that you can use the up and down arrow keys to cycle through previously run commands, meaning you don't have to type them over again. Another useful but of information was that you can take advantage of Linux's multitasking capabilities by using the ctrl z key. Ctrl z takes the process currently running in the foreground and backgrounds it. You can then run the fg command to foreground that process. Matt also showed us some other ctrl key shortcuts which are summarized in the table below. 
 + 
 + Ctrl key  |Function| 
 +|c|exits process| 
 +|d|exits process more nicely| 
 +|h|backspace| 
 +|j|enter| 
 +|l|clear screen| 
 +|a|move cursor to start of command line| 
 +|e|move cursor to end of command line| 
 +|k|kill command from the cursor to the end of the command line| 
 +|s|transmit off| 
 +|v|ctrl character escape| 
 +|w|cut| 
 +|y|paste| 
 + 
 + 
 +====Week 6==== 
 + 
 +===Killing Things=== 
 + 
 +This week Matt taught us how to kill things like a ninja. The Unix operating system supports various signals that can be sent to programs. I've had some experience with signals when programming with the gtk package in my previous adventures in which I attempted to create windowed programs. The code must be written in order to handle the signals and act on them properly. In Unix, there are 64 signals that can be sent to programs and many of them kill the program by default. Again, it depends on how the program is written to handle those signals. Signals can be sent using the kill command. "kill -l" lists all 64 signals. 
 + 
 +SIGHUP, number 1 on the list, stands for signal hang up. Hanging up on a stopped process results in the termination of that process. SIGINT, for Signal interrupt, is what is sent out when one presses the control c key. SIGILL generally gets sent out in the event of an illegal operation being performed. SIGTRAP is similar to SIGINT. SIGKILL is the agent 47 of kill signals. It never fails. SIGSTOP sends a stop signal to programs and when followed with a SIGCONTINUE effectively backgrounds the program. SIGSEGV is the signal sent out to kill programs that are seg faulting.  
 + 
 +===Scripting=== 
 +Typing commands into the command line and watching the computer do your work for you while you laugh maniacally and pet your cat is all well and good, but isn't there sometimes even more efficient ways to implement your evil plans? The answer is "yes, scripting". A script is a series of shell commands that are organized in a document so that they can be fed automatically into the computer instead of manually typing them. Scripts start with #! in order to tell the computer which shell the script is written for as different shells have different languages associated with them. Typing "#! /bin/bash" tells the computer that the document is a bash script. Scripts aren't really programs and a script language isn't really a programming language. It's more like pseudo code. For example, while there are variables in bash, there are no variable types or memory allocation functions. All variables are basically treated as a string. 
 + 
 +There are some trick that Matt taught us about scripting. Curly braces isolate variable names in situations where the computer may misunderstand whether you are referring to a variable or the string you assigned to the variable name. Bash isn't really meant to complex calculations but it does have a command called "bc" which handles mathematical operations of some reasonable complexity. Some cool things you can do in bc is change the base used in calculations and change the output type to long int for more accuracy. Square brackets can be used to compare values. For example in the following code  
 + 
 +<code> 
 +["${result}" -eq "4"]; 
 +</code> 
 + 
 +compares the value of the "result" variable to the number 4 and returns true if they are equal. The square brackets can be combined with if then statements in the usual programming way in order to give your scripts some decision making capabilities. The bash scripitng language also has for in loops which are analogous to for each loops in other programming languages such as C/C++. The following code snippet results in bash outputting the numbers 1-10 in standard output through the use of a for loop. 
 + 
 +<code> 
 +for ((x=0;$x<10;x++)); do 
 +      echo "x is $x" 
 +done 
 +</code> 
 + 
 +It's generally considered good practice to end scripts with an exit 0 command.  
 + 
 +===HTML=== 
 +This week's project involved the use of HTML to create web pages and as a result was my first use of HTML. I learned a lot in the short time that I used it. HTML is used to toggle various properties of web pages (font of text, buttons, images) on and off. HTML works with tags that are placed around the object you want to toggle the property of. For example the <font></font> tags will change the font of the text within those tags. By the way, tags pretty much always start with <tag> and end with </tag>
 + 
 +I also ran into CSS, which is a product of the modern internet that people use within HTML code to gain further functionality and organization. For example with out the css command "style" I'm pretty sure it's impossible to customize your own button without creating an image of it and putting it on the page through the use of the <img> tag. I wasn't able to spend a lot of time in HTML and the code I created wasn't very intelligently written partly due to my ignorance but I look forward to having more opportunities to learn about it.
  
 ====MONTH Day, YEAR==== ====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.+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: As an aid, feel free to use the following questions to help you generate content for your entries:
Line 110: Line 188:
   * What concepts are you dealing with that may not make perfect sense?   * What concepts are you dealing with that may not make perfect sense?
   * What challenges are you facing with respect to the course?   * What challenges are you facing with respect to the course?
- 
  
blog/spring2016/mpotapen/journal.1456104058.txt.gz · Last modified: 2016/02/22 01:20 by mpotapen