Skip to content

Instantly share code, notes, and snippets.

@dannyradden
Last active February 21, 2017 16:52
Show Gist options
  • Save dannyradden/591a47a488ad26a9f745a4af40d58646 to your computer and use it in GitHub Desktop.
Save dannyradden/591a47a488ad26a9f745a4af40d58646 to your computer and use it in GitHub Desktop.
Mod 1 - Week 4 diagnostic
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