Skip to content

Instantly share code, notes, and snippets.

@caward12
Created February 16, 2017 17:53
Show Gist options
  • Save caward12/bb790fbb2550d6153e14ed2ff196e556 to your computer and use it in GitHub Desktop.
Save caward12/bb790fbb2550d6153e14ed2ff196e556 to your computer and use it in GitHub Desktop.
Mod 1 week 4 diagnostic
# Module 1 Week 4 Diagnostic
This exercise is intended to help you assess your progress with the concepts and techniques we've covered during the week.
For these questions, write a short description or snippet of code that meets the requirement. In cases where the question mentions a "given" data value, use the variable given to refer to it (instead of re-writing the information).
##### 1. Give one difference between Modules and Classes.
- One difference between modules and classes is that modules are not instantiated.
##### 2. Defining Modules
First, create a module `Doughy` which defines a method `has_carbs?` that always returns true. Then, given the following Pizza class, update Pizza to use your new Doughy module to gain the defined `has_carbs?` behavior.
```
module Doughy
def has_carbs?
true
end
class Pizza
include Doughy
def tasty?
true
end
end
```
##### 3. What are two benefits modules provide us in Ruby? Elaborate on each.
- They allow us to write "drier" code - meaning you can use a module to perform tasks that you may be repeating in a class
- They allow for mixins. You can have one module that is used across multiple classes - allows ruby, which is an object oriented language to have some of the traits of funtional programming.
##### 4. What values in Ruby evaluate as "falsy"?
- nil and false
##### 5. Give 3 examples of "truthy" values in Ruby.
- true, 1.0 and "false"
##### 6. List 3 HTTP Verbs
- GET, POST, (don't know a third)
##### 7. HTTP Parsing: given the following HTTP Request, identify the following:
* HTTP Verb - POST
* Request Path - /students?name=horace
* Query Parameters - name=horace
```
POST /students?name=horace HTTP/1.1
Host: 127.0.0.1:9292
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
```
What is the full request URL?
- http://127.0.0.1:9292/students?name=horace
##### 8. Git and Branches: give a git command to accomplish each of the following:
* Switch to an existing branch iteration-1: git branch iteration-1
* Create a new branch iteration-2: git checkout branch iteration-2
* Push a branch iteration-2 to a remote origin: git push branch iteration-2 (I'm not sure on this one)
* Merge a branch iteration-1 into a branch master (assume you are not on master to begin with): git merge (again, not sure)
##### 9. Load Paths and Requires
Given a project with the following directory structure, give 2 ways that we could require file_one from file_two.
```
. <you are here>
├── lib
│ │── file_one.rb
│ └── file_two.rb
```
- require './lib/file_one'
- require_relative 'file_one'
##### 10. Refactoring: given the following snippet of code, show 2 refactorings you might make to improve the design of this code.
```
class Encryptor
def date_offset
date = Time.now.strftime("%d%m%y").to_i
date_squared = date ** 2
last_four_digits = date_squared.to_s[-4..-1]
[last_four_digits[-4].to_i,
last_four_digits[-3].to_i,
last_four_digits[-2].to_i,
last_four_digits[-1].to_i]
end
end
Encryptor.new.date_offset
class Encryptor
def date_offset
date = Time.now.strftime("%d%m%y").to_i
date_squared = date ** 2
last_four_digits = date_squared.to_s[-4..-1]
last_four_digits.each_char do |digit|
digit.to_i
end
end
end
class Encryptor
def date_offset
date = (Time.now.strftime("%d%m%y").to_i) ** 2
new_date = []
new date << date.to_s[-4..-1].to_i
end
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment