From 21c8e2aa43c8bf0a1afc109cc5f9b124e90d849b Mon Sep 17 00:00:00 2001 From: Nathan Meyer <Canon44444@gmail.com> Date: Fri, 26 Oct 2018 18:38:10 -0400 Subject: [PATCH] Update Labs --- Lab 4/Question Answers.txt | 5 ++ Lab 4/css/index.css | 53 ++++++++++++++++++++ Lab 4/index.html | 35 +++++++++++++ Lab 4/js/index.js | 73 ++++++++++++++++++++++++++++ Lab 5/CI101-Lab5-InfoRetrieval.docx | Bin 0 -> 10369 bytes 5 files changed, 166 insertions(+) create mode 100644 Lab 4/Question Answers.txt create mode 100644 Lab 4/css/index.css create mode 100644 Lab 4/index.html create mode 100644 Lab 4/js/index.js create mode 100644 Lab 5/CI101-Lab5-InfoRetrieval.docx diff --git a/Lab 4/Question Answers.txt b/Lab 4/Question Answers.txt new file mode 100644 index 0000000..1d57a76 --- /dev/null +++ b/Lab 4/Question Answers.txt @@ -0,0 +1,5 @@ +1. I see the value of Agile software development, but this + trial run was too rushed to fully represent its benefits. +2. My role as programmer was fun, I'm not very good at coming + up with ideas on short notice, but I can implement other + people's ideas and have fun doing it. \ No newline at end of file diff --git a/Lab 4/css/index.css b/Lab 4/css/index.css new file mode 100644 index 0000000..03e6c86 --- /dev/null +++ b/Lab 4/css/index.css @@ -0,0 +1,53 @@ +*{ + font-family: verdana; +} + +#Main{ + padding-left: 20px; + padding-top: 4px; +} +.navbar-brand{ + user-select: none; + cursor: default; +} + +/* Begin rainbow background (https://codepen.io/nohoid/pen/kIfto?editors=1100) */ +.wrapper{ + z-index: -1; + height: 100%; + width: 100%; + left:0; + right: 0; + top: 0; + bottom: 0; + position: absolute; + background: linear-gradient(124deg, #ff2400, #e81d1d, #e8b71d, #e3e81d, #1de840, #1ddde8, #2b1de8, #dd00f3, #dd00f3); + background-size: 1800% 1800%; + + -webkit-animation: rainbow 120s ease infinite; + -z-animation: rainbow 120s ease infinite; + -o-animation: rainbow 120s ease infinite; + animation: rainbow 120s ease infinite; +} + +@-webkit-keyframes rainbow{ + 0%{background-position:0% 82%} + 50%{background-position:100% 19%} + 100%{background-position:0% 82%} +} +@-moz-keyframes rainbow{ + 0%{background-position:0% 82%} + 50%{background-position:100% 19%} + 100%{background-position:0% 82%} +} +@-o-keyframes rainbow{ + 0%{background-position:0% 82%} + 50%{background-position:100% 19%} + 100%{background-position:0% 82%} +} +@keyframes rainbow{ + 0%{background-position:0% 82%} + 50%{background-position:100% 19%} + 100%{background-position:0% 82%} +} +/* End rainbow background */ \ No newline at end of file diff --git a/Lab 4/index.html b/Lab 4/index.html new file mode 100644 index 0000000..7ceab14 --- /dev/null +++ b/Lab 4/index.html @@ -0,0 +1,35 @@ +<!doctype html> +<html> + <!-- Hosted on https://www.cs.drexel.edu/~nim28/CS101/Lab-4/index.html --> + <head> + <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" + integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous"> + <link rel="stylesheet" href="./css/index.css"/> + <!-- Util Libraries --> + <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" + integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> + <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" + integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script> + <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" + integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script> + <script src="./js/index.js"></script> + <head> + <body> + <nav class="navbar navbar-expand-lg navbar-dark bg-dark"> + <div class="collapse navbar-collapse" id="navbarSupportedContent"> + <div class="navbar-brand"> + Password Generator + </div> + <input id="in" class="form-control mr-sm-2"> + <button id="bt" class="btn btn-outline-success my-2 my-sm-0">Generate</button> + </div> + </nav> + <div class="wrapper"> + <div id="Main"> + <p class="output"></p> + </div> + </div> + <body> + + +</html> \ No newline at end of file diff --git a/Lab 4/js/index.js b/Lab 4/js/index.js new file mode 100644 index 0000000..01d0348 --- /dev/null +++ b/Lab 4/js/index.js @@ -0,0 +1,73 @@ +var invalid = new Set(["and","not","the","it","is","or","an","a","i"]); +var passes = 10; // Change pass number (WIP) +var output; +var input; +var questions = new Array( + "Describe your dream house", // ~Nick + "Describe the term \"family\"", // ~Nick + "Describe why your role model is your role model", // ~Alec + "Describe your ideal vacation" // ~Alec +); + +$(document).ready(function(){ // Upon DOM load + $("#in").attr("placeholder", questions[Math.floor(Math.random()*questions.length)] + "..."); // Ask question +}); + +$(function(){ // JQuery event listener + $("#bt").click(function(){ // On button click + /* Logic */ + input = new String($('input.form-control').val()); // Get input + $('input.form-control').val(""); // Clear box + if(input.trim() === "")return; // Abort if no input + $('p.input').html(input); // Print input text for user + var parse = input.split(" "); + for(var i=0; i<parse.length; i++){ + // Delete invalid words + if(invalid.has(parse[i].toLowerCase())){ + delete parse[i]; + } + } + for(var j=0; j<passes; j++){ + $("p.output").append(getRandomPass() + "<br/>"); // Display passwords for user + } + /* Nested Functions */ + function getRandomPass(){ + return populate( + shuffle( // Fisher-Yates shuffle + parse.filter(function (el){ + // Remove empty elements + return el != null; + }) + ).join(" ").split("") // To char array -> Spaces to numbers + ); + } + // Replace spaces with single digit random numbers + function populate(input){ + var output = ""; + for(var j in input){ + if(input[j] === " "){ + input[j] = Math.round(Math.random() * 9); + } + output += input[j]; + } + return output; + } + // Begin Fisher-Yates randomization algorithm (http://sedition.com/perl/javascript-fy.html) + function shuffle(array){ + var currentIndex = array.length, temporaryValue, randomIndex; + // While there remain elements to shuffle... + while (0 !== currentIndex){ + // Pick a remaining element... + randomIndex = Math.floor(Math.random() * currentIndex); + currentIndex -= 1; + // And swap it with the current element. + temporaryValue = array[currentIndex]; + array[currentIndex] = array[randomIndex]; + array[randomIndex] = temporaryValue; + } + return array; + } + // End Fisher-Yates randomization algorithm + }); +}); + diff --git a/Lab 5/CI101-Lab5-InfoRetrieval.docx b/Lab 5/CI101-Lab5-InfoRetrieval.docx new file mode 100644 index 0000000000000000000000000000000000000000..d5f49c58c01a3642afe0a28499b455b921e984dc GIT binary patch literal 10369 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 Uyjj^mia?7E`I#6PV$?u90J_)bPXGV_ literal 0 HcmV?d00001 -- GitLab