User Tools

Site Tools


blog:spring2016:aslater1: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:aslater1:journal [2016/03/15 18:08] – [March 8, 2016] aslater1blog:spring2016:aslater1:journal [2016/05/05 00:39] (current) – [May 4, 2016] aslater1
Line 113: Line 113:
   * Print out each step of the loop, including if statements   * Print out each step of the loop, including if statements
   * Version control source code in the case that you, say, accidentally overwrite it   * Version control source code in the case that you, say, accidentally overwrite it
 +
 +====March 15, 2016==== 
 +I'm still working on the cos0 project, and so far so good. My math is off, as only one quarter of the circle is visible, but I'll keep tinkering, hopefully I'll get it together. \\ 
 +On an unrelated note: I am __super__ pumped to be learning about file input/output streams. That was pretty much the only thing I did in Java, and I'll attest to the fact that it's the coolest thing ever.
 +====March 17, 2016==== 
 +Finally got done done with cos0, and just shy of 160 lines. All right! Getting better with loops, although I did have a seemingly superfluous "i++" in my for loop that apparently carried all the other code, as the program wouldn't work without it. Oh, and \\  <code> warning: incompatible implicit declaration of built-in function ... 'cos' [enabled by default] </code> Means that you forgot to include the math library. \\ \\   In the prime project ( that I'm trying to forget) I had trouble getting an error message to display to stderr when there weren't enough arguments. It would always seg fault instead of displaying my message. Turns out you can just throw the actual code in an if (argc > whatever) statement and at the end have an else. This way the program still runs (long enough to display the message and exit). \\ 
 +**__Learn't__**
 +  * warning incompatible ... -> check to make sure you included the header file
 +  * if statements can save from seg faults
 +  * Math > trial + error
 +====March 28, 2016====
 +So the sam0 project was a no go, not really proud of that one. I'm going to redo it, just to make sure that I really grasp the idea of multiple functions. \\ \\  I'm really excited to start working with C++, I'm still a little shaky on the idea of object-oriented languages, but I think I'm on the verge of getting it. My plan is to write make a simple game, //Yahtzee//, in C, C++ and Java, maybe I'll write it in Python if I'm feeling __super__ ambitious. \\ \\  Oh yeah, and the next project, I should probably start that too. 
 +====April 7, 2016====
 +The cbf project is done, and I kept having a problem with getting the program to stop output once it reaches the end of the file. Because the characters were actually printed in a for loop that was nested inside of the while loop, the while loop would have already run before the for loop could determine if if had reached the end of the file. \\ \\ 
 +I cobbled together a solution involving an array ( which I should have stored the ''fgetc(whatever)'' in anyway). The only solution that I could see involved the ability to foresee one character in the future, hence the use of an array. Boom, problem solved, everything else is just green. 
 +====April 11, 2016====
 +So I was thinking that I could manage to get through this course without the use of pointers, but unfortunately that is not the case ( which is probably a good thing).\\ \\  'Neways I'm having a little trouble with function returns, but I think with a little more tinkering I'll get it.
 +====April 12, 2016====
 +Getting really weird output? Try initialing the variable to 0.  
 +====April 17, 2016====
 +<code>
 +int i = 0
 +int proj [ i ];
 +...
 +proj[ i ] = something;
 +</code>
 +WILL SEGFAULT
 +<code>
 +int i;
 +int proj[ i ];
 +...
 +proj[i] = something;
 +</code>
 +WILL **NOT** SEGFAULT ( but is still bad )
 +i is typically the incremental value ( so you don't really use it for the declaration), if there's anyway you know how much " stuff you're going to throw in the array, use that instead. Otherwise determine the size and THEN declare it. 
 +====April 19, 2016====
 +Holy wall of text, Batman! \\ 
 +Here's the thing: it turns out if you initialize an array with an index of 0, you're going to have a bad time. Which makes since because you're saying that you want to store zero elements. That's why it will crash and burn when you run the program. \\ \\  In more relevant news, I actually went back through and fixed what may have been the most inefficient program ever. Instead of having main make the array, I just opened the file in each one of my functions (4 times). That was just the beginning, as there were nested loops and a million variables with no point. \\ \\  I went back through and had main put all the values in the array, and then passed the pointers to the functions. This way I didn't have to open and close the file, and the math turned out to be a lot easier. The code itself is way less complex, and I managed to cut down on more than 40 lines of superfluous garbage. In other words, I think I'm //finally// starting to embrace pointers. Just in time for the semester to be over!
 +====May 2, 2016====
 +So I've been doing the stuff. 
 +\\ \\ I used some(a lot) switch cases in the project. They took a little to get used to, but they're really handy for comparing a bunch of stuff. 
 +\\ \\ Por Ejemplo:
 +<code c 1>
 +switch (pineapple_pizza)
 +{
 +    case 1:
 +        printf("Is gross");
 +        break;
 +    case 2:
 +        printf("Violates the Geneva Convention");
 +        break;
 +    case 3:
 +        printf("Should not be ingested under any circumstances");
 +        break;
 +    case 4:
 +        printf("Hurts your soul");
 +        break;
 +    default:
 +        printf("Is a literal crime against humanity");
 +        exit(1);
 +}
 +</code>
 +Where the "case #" is referring to the condition you're checking for. Don't forget the '':''! The use of a 'default' is optional, as well as the break. \\ Breaks can be omitted if you want the statement to "fall through" and hit multiple conditions.  
 +====May 4, 2016====
 +Oh man, I just had all of the breakthroughs.
 +\\ \\ Turns out, if you're compiling multiple c files, and you simply use
 +<cli>
 +gcc file1.c file2.c file3.c -o combinedfiles
 +</cli>
 +Your functions won't be able to "talk" to each other. That is, you can run the program as many times as you want, but the function will never return anything (at least it wouldn't for me). How do you get around this? Header files! Which, by the way, are where the function prototypes go. Don't put the entire function in there.
 +\\ \\ 
 +So, when using multiple files you can just throw the above into a header file (making sure to include it in main). When you compile the c files functions work!
 +<code c 1>
 +#ifndef HEADERFILE_H_
 +#define HEADERFILE_H_
 +
 +int stuff(char this, char that);
 +
 +#endif
 +</code>
 +
 ======UNIX/Linux Fundamentals Journal====== ======UNIX/Linux Fundamentals Journal======
 ====January 25, 2016==== ====January 25, 2016====
Line 185: Line 266:
   * offset: is the distance from the beginning of the file, this is why this number gets "skipped" with dd   * offset: is the distance from the beginning of the file, this is why this number gets "skipped" with dd
   * count: Count this many "blocks"    * count: Count this many "blocks" 
 +====March 21, 2016====
 +I've been doing some exploration of grep and Wget for that matter. I'm trying to find a way to view the contents of a web page and grep it to just show certain information. I've been trying curl, too which is pretty similar to Wget. I also downloaded lynx, which is probably the coolest browser ever (move over Google Chrome). \\ 
 +I kind of regret not paying as much attention to wget in the customization project, it has some __really__ cool features. I already went back and made some adjustments to my terrible, terrible config file. Cool stuff, yo. 
 +====March 28, 2016====
 +I wasn't really aware of what an mbr was, so learning about it was pretty cool. The next project looks a little intimidating and complex. \\ \\
 +I'm still getting used to using regular expressions, and I'm working on making some useful shell scripts. For the C class, we used a program called primerun, and it was a really cool shell script. I'm going to attempt to make something similar while fixing up my program, so I'll see how that goes. 
 +====April 5, 2016====
 +So, all the stuff I said I would do last week is a no-go. I still want to make a variation of primerun so I'm not going to abandon that pursuit.
 +\\ \\ Regular expressions are tripping me up a a little bit, but I think that practice will help. I'm using more wildcards, so hopefully it will be the same with Regular Expressions. 
 +\\ \\ Still working on udr2, and I see that time management is a factor of the next project. 
 +====April 11, 2016====
 +chmod!
 +
 +^ Privilege  ^Denoted By ^ Octal value  ^
 +^ read        | **r**    | 4            | 
 +^ write       | **w**    | 2            | 
 +^ execute     | **x**    | 1            | 
 +
 +There are three modes:\\  
 +User Mode:  u \\
 +Group Mode: g \\ 
 +Other Mode: o \\ 
 +Example:
 +<code>
 +-rw-rwxr--
 +with modes being:
 +  u            o
 +-|rw-|  |rwx  ||r--|
 + |4+2|  |4+2+1||4  |
 + |6  |  |7    ||4  |
 +</code>
 +The command to set a file to have these privileges would be  
 +<code>
 +chmod 674 somefile
 +</code>
 +===Set UID, GID & Sticky Bit===
 +Really good information [[https://en.wikipedia.org/wiki/Chmod | here]]
 +
 +This one's a little different. UID/GID are denoted by an upper or lowercase '' s ''
 +Sooo...\\ 
 +SET UID:    4 \\ 
 +SET GID:    2 \\ 
 +STICKY BIT: 1 \\ 
 +==Where's the s?==
 +^ S location  ^Example            ^ Octal value  ^
 +^ User        |   -**rws**rw-rw-  | **4**766 
 +^ Group         -rwx**-ws**-w-  | **2**732 
 +^ Both        |   -**rws****-ws**-w-  | **6**732  |   
 +^ "S" in u    |   -**rwS**rwx--x  | **4**671  |
 +^ "S" in g    |   -rwx**-wS**-w-  | **2**722  |
 +
 +The 'Sticky bit' acts in the same way, but is only present in the 'o' field.\\ Just like the Set GID/ UID, if the 't' is captital, it means that the execute bit is not set.
 +Example:
 +<code>
 +            o
 +-|rws|  |rwS  ||r-t|
 + |4+2|  |4+2+1||5  |
 + |6  |  |6    ||5  |
 +7665
  
 +or
 +            o
 +-|rws|  |rwS  ||r-T|
 + |4+2|  |4+2+1||4  |
 + |6  |  |6    ||4  |
 +7664
 +</code>
 +====April 20, 2016====
 +Oh man, I can't remember the last time I submitted a Unix project on time. Not gonna lie, it feels pretty good. I think this was the first time I made, by myself, an actual complex-ish shell script. It doesn't really look the greatest, it was basically a c program with bash syntax (wait...).\\ 
 +To get the values for the project portion I used an array, and I tried comapring it the way I'm used to, something like 
 +<code>
 +array[index] 
 +....
 +array[i] = stuff
 +</code>
 +but it just got too complicated. So, what I ended up doing instead is this:
 +<code>
 +array=(`command to get all the values of said array into a space separated list`)
 +</code>
 +I actually did 2 arrays this way, and incremented through them both with a cool for loop. That being said...:
 +<code>
 +${arr[*]}  # All of the items in the array
 +${!arr[*]} # All of the indexes in the array
 +${#arr[*]} # Number of items in the array
 +${#arr[0]} # Length of item zero
 +</code>
 +with more information here [[http://www.linuxjournal.com/content/bash-arrays]] I used the ${#array[@]}, which means the number of elements in the array ( I think). I also may have neglected to make the lines shorter than 80 characters because I discovered colors.\\
 +\\ Yes.\\ 
 +\\ Escape sequences are pretty cool. Unfortunately my c program now looks dull by comparison. \\ 
 + ====May 2, 2016====
 +Wow, I feel like its been forever since I've done one of these. \\ So I've been working on the eoce and its been going 'aight. There's been some more extensive shell scripting going on. \\ \\ Also if statements. \\ Lots of if statements, which reminds me: 
 +<code bash 1>
 +if [ some condition ]; then
 +    whatever
 +fi
 +</code>
 +Is the correct syntax for an if statement, don't have anything touch the brackets(besides ;), either.\\ \\ If there's some kind of problem where vim doesn't like the "fi" statement, and you're sure that one needs to go there, check to make sure there's a "done" for the appropriate loop. \\ \\ 
 +What if there's MULTIPLE if statements?
 +<code bash 1>
 +if [ some condition ]; then
 +    whatever
 +elif [ some other condition ]; then
 +    whatever
 +elif [ another condition ]; then
 +    whatever
 +else      ##Don't need to end on an else, can just use an elif
 +    whatever
 +fi
 +</code>
 +What if you want a COMPOUND if statement, ie if this AND/OR this?
 +<code bash 1>
 +if [ some condition ]; then
 +    whatever
 +elif [ some condition ] || [ another condition ]; then
 +    whatever
 +elif [ some condition ] && [ other condition ]; then
 +    whatever
 +fi
 +</code>
blog/spring2016/aslater1/journal.1458065295.txt.gz · Last modified: 2016/03/15 18:08 by aslater1