Last active
February 21, 2017 16:52
-
-
Save dannyradden/591a47a488ad26a9f745a4af40d58646 to your computer and use it in GitHub Desktop.
Mod 1 - Week 4 diagnostic
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1. Give one difference between Modules and Classes. | |
Instances are made of classes while modules dont do instances, they are like libraries full of constants. | |
#classes have state. modules are stateless. | |
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 | |
end | |
class Pizza | |
include 'Doughy' | |
def tasty? | |
true | |
end | |
end | |
3. What are two benefits modules provide us in Ruby? Elaborate on each. | |
modules have a namespace of methods and constants that dont interact with other things. | |
modules have mixins which allow multiple inheritence for classes | |
4. What values in Ruby evaluate as “falsy”? | |
false | |
nil | |
5. Give 3 examples of “truthy” values in Ruby. | |
true | |
6 | |
"hello" | |
6. List 3 HTTP Verbs | |
GET, POST, ... | |
#DELETE, PUT | |
7. HTTP Parsing: given the following HTTP Request, identify the following: | |
HTTP Verb: POST | |
Request Path: /students | |
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 checkout iteration-1 | |
Create a new branch iteration-2: | |
git branch -add iteration-2 | |
#git checkout -b iteration -2 | |
Push a branch iteration-2 to a remote origin: | |
git push origin interation-2 | |
Merge a branch iteration-1 into a branch master (assume you are not on master to begin with): | |
git checkout master | |
git merge iteration-1 | |
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 | |
lfd = LastFourDigits.new(date_squared) | |
lfd.last_four | |
end | |
end | |
class LastFourDigits | |
def initialize(number) | |
@number = number | |
end | |
def last_four | |
@new_num = @number.to_s[-4..-1] | |
to_array | |
end | |
def to_array | |
@new_num.chars | |
end | |
end | |
puts Encryptor.new.date_offset |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment