-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
- Loading branch information
There are no files selected for viewing
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,224 @@ | ||
<!DOCTYPE html> | ||
<html xmlns="http://www.w3.org/1999/xhtml" lang xml:lang> | ||
<head> | ||
<meta charset="utf-8" /> | ||
<meta name="generator" content="pandoc" /> | ||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> | ||
<title>L3</title> | ||
<style> | ||
html { | ||
color: #1a1a1a; | ||
background-color: #fdfdfd; | ||
} | ||
body { | ||
margin: 0 auto; | ||
max-width: 36em; | ||
padding-left: 50px; | ||
padding-right: 50px; | ||
padding-top: 50px; | ||
padding-bottom: 50px; | ||
hyphens: auto; | ||
overflow-wrap: break-word; | ||
text-rendering: optimizeLegibility; | ||
font-kerning: normal; | ||
} | ||
@media (max-width: 600px) { | ||
body { | ||
font-size: 0.9em; | ||
padding: 12px; | ||
} | ||
h1 { | ||
font-size: 1.8em; | ||
} | ||
} | ||
@media print { | ||
html { | ||
background-color: white; | ||
} | ||
body { | ||
background-color: transparent; | ||
color: black; | ||
font-size: 12pt; | ||
} | ||
p, h2, h3 { | ||
orphans: 3; | ||
widows: 3; | ||
} | ||
h2, h3, h4 { | ||
page-break-after: avoid; | ||
} | ||
} | ||
p { | ||
margin: 1em 0; | ||
} | ||
a { | ||
color: #1a1a1a; | ||
} | ||
a:visited { | ||
color: #1a1a1a; | ||
} | ||
img { | ||
max-width: 100%; | ||
} | ||
svg { | ||
height: auto; | ||
max-width: 100%; | ||
} | ||
h1, h2, h3, h4, h5, h6 { | ||
margin-top: 1.4em; | ||
} | ||
h5, h6 { | ||
font-size: 1em; | ||
font-style: italic; | ||
} | ||
h6 { | ||
font-weight: normal; | ||
} | ||
ol, ul { | ||
padding-left: 1.7em; | ||
margin-top: 1em; | ||
} | ||
li > ol, li > ul { | ||
margin-top: 0; | ||
} | ||
blockquote { | ||
margin: 1em 0 1em 1.7em; | ||
padding-left: 1em; | ||
border-left: 2px solid #e6e6e6; | ||
color: #606060; | ||
} | ||
code { | ||
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace; | ||
font-size: 85%; | ||
margin: 0; | ||
hyphens: manual; | ||
} | ||
pre { | ||
margin: 1em 0; | ||
overflow: auto; | ||
} | ||
pre code { | ||
padding: 0; | ||
overflow: visible; | ||
overflow-wrap: normal; | ||
} | ||
.sourceCode { | ||
background-color: transparent; | ||
overflow: visible; | ||
} | ||
hr { | ||
background-color: #1a1a1a; | ||
border: none; | ||
height: 1px; | ||
margin: 1em 0; | ||
} | ||
table { | ||
margin: 1em 0; | ||
border-collapse: collapse; | ||
width: 100%; | ||
overflow-x: auto; | ||
display: block; | ||
font-variant-numeric: lining-nums tabular-nums; | ||
} | ||
table caption { | ||
margin-bottom: 0.75em; | ||
} | ||
tbody { | ||
margin-top: 0.5em; | ||
border-top: 1px solid #1a1a1a; | ||
border-bottom: 1px solid #1a1a1a; | ||
} | ||
th { | ||
border-top: 1px solid #1a1a1a; | ||
padding: 0.25em 0.5em 0.25em 0.5em; | ||
} | ||
td { | ||
padding: 0.125em 0.5em 0.25em 0.5em; | ||
} | ||
header { | ||
margin-bottom: 4em; | ||
text-align: center; | ||
} | ||
#TOC li { | ||
list-style: none; | ||
} | ||
#TOC ul { | ||
padding-left: 1.3em; | ||
} | ||
#TOC > ul { | ||
padding-left: 0; | ||
} | ||
#TOC a:not(:hover) { | ||
text-decoration: none; | ||
} | ||
code{white-space: pre-wrap;} | ||
span.smallcaps{font-variant: small-caps;} | ||
div.columns{display: flex; gap: min(4vw, 1.5em);} | ||
div.column{flex: auto; overflow-x: auto;} | ||
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} | ||
|
||
ul.task-list[class]{list-style: none;} | ||
ul.task-list li input[type="checkbox"] { | ||
font-size: inherit; | ||
width: 0.8em; | ||
margin: 0 0.8em 0.2em -1.6em; | ||
vertical-align: middle; | ||
} | ||
</style> | ||
</head> | ||
<body> | ||
<header id="title-block-header"> | ||
<h1 class="title">L3</h1> | ||
</header> | ||
<h1 id="libraries-and-modules">Libraries and Modules</h1> | ||
<h2 id="modules">Modules</h2> | ||
<ul> | ||
<li>Module ≙ namespace (collection) of method</li> | ||
<li>Not a class</li> | ||
<li>Can mix method into a class</li> | ||
<li>eg: <code>Enumerable</code> | ||
<ul> | ||
<li>Provides most collection operations including <code>each</code></li> | ||
</ul></li> | ||
<li>eg: <code>Comparable</code> enables <code><=></code> and | ||
<code>sort</code></li> | ||
<li>Ensure you read documentation for implementation</li> | ||
<li>Defined for a class using <code>include</code></li> | ||
</ul> | ||
<h2 id="gems">Gems</h2> | ||
<ul> | ||
<li>Gem ≙ ruby library</li> | ||
<li>Used with <code>require</code> at the top of a file</li> | ||
<li>Bundler solves “library hell” | ||
<ul> | ||
<li>Every project has a <code>Gemfile</code> and a | ||
<code>Gemfile.lock</code></li> | ||
<li><code>Gemfile</code> defines libraries and versions needed for a | ||
file</li> | ||
<li><code>Gemfile.lock</code> should be versioned with project</li> | ||
</ul></li> | ||
</ul> | ||
<h3 id="semantic-versioning-semver">Semantic Versioning (semver)</h3> | ||
<ul> | ||
<li>Version A.B.C | ||
<ul> | ||
<li>C ≙ patch / backwards-compatible</li> | ||
<li>B ≙ minor backwards-compatible new functionality</li> | ||
<li>A ≙ major ‘breaking changes’ in API</li> | ||
</ul></li> | ||
</ul> | ||
<h2 id="ruby-blocks">Ruby Blocks</h2> | ||
<ul> | ||
<li>Iterators define <code>each</code> which yields the value with | ||
<code>yield</code></li> | ||
<li>The value yielded is what will be the variable defined in the | ||
block</li> | ||
</ul> | ||
<h2 id="coding-notes">Coding Notes</h2> | ||
<ul> | ||
<li><code>attr_reader</code> only provides a get and not a set</li> | ||
<li>Can also use <code>self</code> instead of <code>@</code></li> | ||
<li><code>send</code> will send a value to a method</li> | ||
</ul> | ||
</body> | ||
</html> |