first commit presentation
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,2 @@ | |||||||
|  | /node_modules | ||||||
|  | /img/not_used | ||||||
							
								
								
									
										
											BIN
										
									
								
								Mariano_12_11_2019_Version_Control_with_git.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										8
									
								
								asciidoctor-revealjs.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,8 @@ | |||||||
|  | // Load asciidoctor.js and asciidoctor-reveal.js | ||||||
|  | var asciidoctor = require('asciidoctor.js')(); | ||||||
|  | var asciidoctorRevealjs = require('asciidoctor-reveal.js'); | ||||||
|  | asciidoctorRevealjs.register() | ||||||
|  |  | ||||||
|  | // Convert the document 'presentation.adoc' using the reveal.js converter | ||||||
|  | var options = {safe: 'safe', backend: 'revealjs'}; | ||||||
|  | asciidoctor.convertFile('presentation.adoc', options);  | ||||||
							
								
								
									
										28
									
								
								custom_css.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,28 @@ | |||||||
|  | .reveal h1 { | ||||||
|  |   color: #133481 !important; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .reveal h2 { | ||||||
|  |  | ||||||
|  |     /* position: absolute !important; */ | ||||||
|  |     position: fixed !important; | ||||||
|  |     top: 0 !important; | ||||||
|  |     left: 0 !important; | ||||||
|  |  | ||||||
|  |     /* margin-left: auto !important; | ||||||
|  |     margin-right: auto !important; */ | ||||||
|  |      | ||||||
|  |     /* right: 0 !important; | ||||||
|  |     align-items: left !important; | ||||||
|  |     text-align: left !important; */ | ||||||
|  |     color: #133481 !important; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |   .reveal ul { | ||||||
|  |       color: #ff7c00 !important; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   .reveal ol { | ||||||
|  |       color: #ff7c00 !important; | ||||||
|  |   } | ||||||
							
								
								
									
										
											BIN
										
									
								
								img/architecture.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 136 KiB | 
							
								
								
									
										
											BIN
										
									
								
								img/git_workflow.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 47 KiB | 
							
								
								
									
										
											BIN
										
									
								
								img/intro.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 339 KiB | 
							
								
								
									
										
											BIN
										
									
								
								img/lyxlilipond.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 179 KiB | 
							
								
								
									
										
											BIN
										
									
								
								img/nocloud.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 63 KiB | 
							
								
								
									
										
											BIN
										
									
								
								img/normal.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 112 KiB | 
							
								
								
									
										
											BIN
										
									
								
								img/nvbqz.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 221 KiB | 
							
								
								
									
										
											BIN
										
									
								
								img/quicktourexample_small.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 191 KiB | 
							
								
								
									
										
											BIN
										
									
								
								img/version-control-flow.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 37 KiB | 
							
								
								
									
										
											BIN
										
									
								
								img/xkcd_git.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 57 KiB | 
							
								
								
									
										115
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,115 @@ | |||||||
|  | { | ||||||
|  |   "name": "presentacion_nov_2019", | ||||||
|  |   "version": "1.0.0", | ||||||
|  |   "lockfileVersion": 1, | ||||||
|  |   "requires": true, | ||||||
|  |   "dependencies": { | ||||||
|  |     "asciidoctor-reveal.js": { | ||||||
|  |       "version": "2.0.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/asciidoctor-reveal.js/-/asciidoctor-reveal.js-2.0.0.tgz", | ||||||
|  |       "integrity": "sha512-REnlW62qj6NPheOl8EwLwJZWpArUWOfAhDZv+lf9wX2MXUC/n9LN081buerQtByYAMG2ZiuY9ealPZqKTCIsvQ==", | ||||||
|  |       "requires": { | ||||||
|  |         "asciidoctor.js": "1.5.9", | ||||||
|  |         "reveal.js": "3.7.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "asciidoctor.js": { | ||||||
|  |       "version": "1.5.9", | ||||||
|  |       "resolved": "https://registry.npmjs.org/asciidoctor.js/-/asciidoctor.js-1.5.9.tgz", | ||||||
|  |       "integrity": "sha512-k5JgwyV82TsiCpnYbDPReuHhzf/vRUt6NaZ+OGywkDDGeGG/CPfvN2Gd1MJ0iIZKDyuk4iJHOdY/2x1KBrWMzA==", | ||||||
|  |       "requires": { | ||||||
|  |         "opal-runtime": "1.0.11" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "balanced-match": { | ||||||
|  |       "version": "1.0.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", | ||||||
|  |       "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" | ||||||
|  |     }, | ||||||
|  |     "brace-expansion": { | ||||||
|  |       "version": "1.1.11", | ||||||
|  |       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", | ||||||
|  |       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", | ||||||
|  |       "requires": { | ||||||
|  |         "balanced-match": "^1.0.0", | ||||||
|  |         "concat-map": "0.0.1" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "concat-map": { | ||||||
|  |       "version": "0.0.1", | ||||||
|  |       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", | ||||||
|  |       "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" | ||||||
|  |     }, | ||||||
|  |     "glob": { | ||||||
|  |       "version": "6.0.4", | ||||||
|  |       "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", | ||||||
|  |       "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", | ||||||
|  |       "requires": { | ||||||
|  |         "inflight": "^1.0.4", | ||||||
|  |         "inherits": "2", | ||||||
|  |         "minimatch": "2 || 3", | ||||||
|  |         "once": "^1.3.0", | ||||||
|  |         "path-is-absolute": "^1.0.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "inflight": { | ||||||
|  |       "version": "1.0.6", | ||||||
|  |       "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", | ||||||
|  |       "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", | ||||||
|  |       "requires": { | ||||||
|  |         "once": "^1.3.0", | ||||||
|  |         "wrappy": "1" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "inherits": { | ||||||
|  |       "version": "2.0.4", | ||||||
|  |       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", | ||||||
|  |       "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" | ||||||
|  |     }, | ||||||
|  |     "minimatch": { | ||||||
|  |       "version": "3.0.4", | ||||||
|  |       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", | ||||||
|  |       "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", | ||||||
|  |       "requires": { | ||||||
|  |         "brace-expansion": "^1.1.7" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "once": { | ||||||
|  |       "version": "1.4.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", | ||||||
|  |       "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", | ||||||
|  |       "requires": { | ||||||
|  |         "wrappy": "1" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "opal-runtime": { | ||||||
|  |       "version": "1.0.11", | ||||||
|  |       "resolved": "https://registry.npmjs.org/opal-runtime/-/opal-runtime-1.0.11.tgz", | ||||||
|  |       "integrity": "sha512-L+6pnRvXPlDtbamBRnJAnB9mEMXmsIQ/b+0r/2xJ5/n/nxheEkLo+Pm5QNQ08LEbEN9TI6/kedhIspqRRu6tXA==", | ||||||
|  |       "requires": { | ||||||
|  |         "glob": "6.0.4", | ||||||
|  |         "xmlhttprequest": "1.8.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "path-is-absolute": { | ||||||
|  |       "version": "1.0.1", | ||||||
|  |       "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", | ||||||
|  |       "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" | ||||||
|  |     }, | ||||||
|  |     "reveal.js": { | ||||||
|  |       "version": "3.7.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/reveal.js/-/reveal.js-3.7.0.tgz", | ||||||
|  |       "integrity": "sha512-HTOTNhF5mQAw6fcsptk4oql/DEEUwTG0YHk/LzTNNx0/3IgvOQZqKzvlK/zNpqqKMLlhn1gH9Nvp+FFoc/e5/w==" | ||||||
|  |     }, | ||||||
|  |     "wrappy": { | ||||||
|  |       "version": "1.0.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", | ||||||
|  |       "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" | ||||||
|  |     }, | ||||||
|  |     "xmlhttprequest": { | ||||||
|  |       "version": "1.8.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", | ||||||
|  |       "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										14
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,14 @@ | |||||||
|  | { | ||||||
|  |   "name": "presentacion_nov_2019", | ||||||
|  |   "version": "1.0.0", | ||||||
|  |   "description": "", | ||||||
|  |   "main": "index.js", | ||||||
|  |   "scripts": { | ||||||
|  |     "test": "echo \"Error: no test specified\" && exit 1" | ||||||
|  |   }, | ||||||
|  |   "author": "", | ||||||
|  |   "license": "ISC", | ||||||
|  |   "dependencies": { | ||||||
|  |     "asciidoctor-reveal.js": "^2.0.0" | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										376
									
								
								presentation.adoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,376 @@ | |||||||
|  | = Document Version Control with GIT | ||||||
|  | :customcss: custom_css.css | ||||||
|  | :imagesdir: img | ||||||
|  | :title-slide-background-image: intro.jpg | ||||||
|  | :background-image: normal.jpg | ||||||
|  | :revealjs_theme: white | ||||||
|  | :revealjs_margin: 0.1 | ||||||
|  | :revealjs_width: 1920 | ||||||
|  | :revealjs_height: 1200 | ||||||
|  |  | ||||||
|  | == Before we start... | ||||||
|  |  | ||||||
|  | image::nocloud.jpg[scaledwith=60%] | ||||||
|  |  | ||||||
|  | == What is version control? | ||||||
|  |  | ||||||
|  | [%step] | ||||||
|  | * Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later. | ||||||
|  | * Has existed for almost as long as writing has existed (ex. document version) | ||||||
|  | * Today, the most capable (as well as complex) revision control systems are those used in software development. | ||||||
|  |  | ||||||
|  | === Why? | ||||||
|  |  | ||||||
|  | [%step] | ||||||
|  | * Revert files back to a previous state | ||||||
|  | * "Freeze" important versions of a document | ||||||
|  | * Compare changes over time | ||||||
|  | * Track progress of a project | ||||||
|  | * See who modified something, and when | ||||||
|  |  | ||||||
|  | === Modern version control systems | ||||||
|  |  | ||||||
|  | [%step] | ||||||
|  | * Remote backup of files | ||||||
|  | * Powerful tool for collaboration | ||||||
|  |  | ||||||
|  | == GIT | ||||||
|  |  | ||||||
|  | [%step] | ||||||
|  | * Developed by Linus Torvalds in 2005 | ||||||
|  | * The linux Kernel: | ||||||
|  | ** ~63000 files | ||||||
|  | ** Roughly 15,600 developers from more than 1,400 companies | ||||||
|  |  | ||||||
|  | === Characteristics | ||||||
|  |  | ||||||
|  | [%step] | ||||||
|  | * Free and open source | ||||||
|  | * Distributed | ||||||
|  | * Powerful and flexible | ||||||
|  | * Learning curve can be steep | ||||||
|  |  | ||||||
|  | === ! | ||||||
|  |  | ||||||
|  | image:xkcd_git.png[] | ||||||
|  |  | ||||||
|  | === How does it work? | ||||||
|  |  | ||||||
|  | image::architecture.png[] | ||||||
|  |  | ||||||
|  | === Installation | ||||||
|  |   | ||||||
|  | https://git-scm.com/download/win | ||||||
|  |  | ||||||
|  | Package managers are heavily recommended! | ||||||
|  |  | ||||||
|  |  | ||||||
|  | === Creating a remote repository | ||||||
|  |  | ||||||
|  | [%step] | ||||||
|  | * register at the remote git server | ||||||
|  | ** https://git.webhosting.rug.nl/ | ||||||
|  | * create repository | ||||||
|  | * add participants __ssh public keys__ | ||||||
|  | * clone the repository in your machine | ||||||
|  |  | ||||||
|  | === README and .gitignore | ||||||
|  |  | ||||||
|  | Every repository should have these 2 files: | ||||||
|  |  | ||||||
|  | * **README**: project description and useful information | ||||||
|  | * **.gitignore**: special file indicating GIT which files are **not** to be tracked | ||||||
|  |  | ||||||
|  | === workflow | ||||||
|  |  | ||||||
|  | image::git_workflow.jpg[] | ||||||
|  |  | ||||||
|  | === copying remote repository: clone | ||||||
|  |  | ||||||
|  | * **git clone __repository__** | ||||||
|  | * Clones the remote repository into the local one | ||||||
|  |  | ||||||
|  | === staging changes (local) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | [%step] | ||||||
|  | * **git add __files__** | ||||||
|  | * Adds the changes into the local staging area | ||||||
|  |  | ||||||
|  | === Saving changes: commit (local) | ||||||
|  |  | ||||||
|  | [%step] | ||||||
|  | * **git commit "message"** | ||||||
|  | * Saves the changes in the staging area into the repository | ||||||
|  | * Creates a "snapshot" of the current state of one or more files | ||||||
|  | * A message describing the changes must be provided | ||||||
|  |  | ||||||
|  | === history and revert (local) | ||||||
|  |  | ||||||
|  | [%step] | ||||||
|  | * **git log __files__** | ||||||
|  | * returns a history of the file modifications | ||||||
|  | * **git revert __commit__** | ||||||
|  | * removes one or more commits from the local files, changes must be committed after | ||||||
|  |  | ||||||
|  | === upload to remote repository: push  | ||||||
|  |  | ||||||
|  | [%step] | ||||||
|  | * **git push** | ||||||
|  | * Uploads the state of the local repository to the remote one | ||||||
|  |  | ||||||
|  | === Download from remote repository: pull | ||||||
|  |  | ||||||
|  | [%step] | ||||||
|  | * **git pull** | ||||||
|  | * Fetch and merges the documents in the remote repository into the local one | ||||||
|  | * Merging files can generate conflicts, git will ask us to fix them and commit the changes | ||||||
|  |  | ||||||
|  | === Branching | ||||||
|  |  | ||||||
|  | image::version-control-flow.png[] | ||||||
|  |  | ||||||
|  | === other (advanced) stuff | ||||||
|  |  | ||||||
|  | * tags | ||||||
|  | * partial reverts | ||||||
|  | * change history | ||||||
|  | * ... | ||||||
|  |  | ||||||
|  | == Docs as code | ||||||
|  |  | ||||||
|  | [%step] | ||||||
|  | * Software is a small part of the documents a project must handle | ||||||
|  | * Still, version control and remote collaboration are needed for all the documents | ||||||
|  | * In the last years there is a big push of treating documents the same way as programming files | ||||||
|  | ** https://www.writethedocs.org/guide/docs-as-code/ | ||||||
|  |  | ||||||
|  | === Advantages | ||||||
|  |  | ||||||
|  | [%step] | ||||||
|  | * Working in plain text files (rather than binary file formats like Word) | ||||||
|  | * Collaborating using version control such as git and GitHub | ||||||
|  | * Storing docs in the same repositories as the programming code itself  | ||||||
|  | * Versioning docs through git tags/releases (rather than duplicating all the files to archive each release) | ||||||
|  | * Generate other formats or websites without modifying the document | ||||||
|  |  | ||||||
|  | === Just a little problem... | ||||||
|  |  | ||||||
|  | [%step] | ||||||
|  | * The most common document formats: word, pdf... are binary files | ||||||
|  | * git (text based) doesn't work with them | ||||||
|  |  | ||||||
|  | === Solutions? | ||||||
|  |  | ||||||
|  | [%step] | ||||||
|  | * Markup languages: | ||||||
|  | * Markup languages are ways of annotating an electronic document. | ||||||
|  | * Usually markup will either specify how something should be displayed or what something means. | ||||||
|  | ** html, xml, latex... | ||||||
|  |  | ||||||
|  | === Markup languages | ||||||
|  |  | ||||||
|  | [%step] | ||||||
|  | * Documents are written in plain text, then a program convert them into the final document | ||||||
|  | * The same document can be used to generate files in other formats: latex, word, pdf or even slides | ||||||
|  | * Formating is done by the computer, output is always consistent | ||||||
|  | * Fast and light | ||||||
|  | * Can be used in version control systems | ||||||
|  |  | ||||||
|  | === Markup languages: Advanced features | ||||||
|  |  | ||||||
|  | [%step] | ||||||
|  | * Automatic generation of documents | ||||||
|  | * Inline comments (not rendered in the final document) | ||||||
|  | * Split one the document into several. Ex: main document, chapters and bibliography | ||||||
|  | * Code executed and plots rendered __in__ the document | ||||||
|  |  | ||||||
|  |  | ||||||
|  | === Latex | ||||||
|  |  | ||||||
|  | [%step] | ||||||
|  | * Extensively used for technical papers | ||||||
|  | * Beautiful generated documents | ||||||
|  | * Very powerful... | ||||||
|  | * ...and very heavy | ||||||
|  | * Setup and document customization are complex | ||||||
|  |  | ||||||
|  | === Latex: example | ||||||
|  |  | ||||||
|  | ---- | ||||||
|  |  | ||||||
|  |  | ||||||
|  | \documentclass{article} | ||||||
|  | \usepackage{graphicx} | ||||||
|  |  | ||||||
|  | \begin{document} | ||||||
|  |  | ||||||
|  | \title{Introduction to \LaTeX{}} | ||||||
|  | \author{Author's Name} | ||||||
|  |  | ||||||
|  | \maketitle | ||||||
|  |  | ||||||
|  | \begin{abstract} | ||||||
|  | The abstract text goes here. | ||||||
|  | \end{abstract} | ||||||
|  |  | ||||||
|  | \section{Introduction} | ||||||
|  | Here is the text of your introduction. | ||||||
|  |  | ||||||
|  | \begin{equation} | ||||||
|  |     \label{simple_equation} | ||||||
|  |     \alpha = \sqrt{ \beta } | ||||||
|  | \end{equation} | ||||||
|  |  | ||||||
|  | \subsection{Subsection Heading Here} | ||||||
|  | Write your subsection text here. | ||||||
|  |  | ||||||
|  | \begin{figure} | ||||||
|  |     \centering | ||||||
|  |     \includegraphics[width=3.0in]{myfigure} | ||||||
|  |     \caption{Simulation Results} | ||||||
|  |     \label{simulationfigure} | ||||||
|  | \end{figure} | ||||||
|  |  | ||||||
|  | \section{Conclusion} | ||||||
|  | Write your conclusion here. | ||||||
|  |  | ||||||
|  | \end{document} | ||||||
|  |  | ||||||
|  | ---- | ||||||
|  |  | ||||||
|  |  | ||||||
|  | === Latex: example II | ||||||
|  |  | ||||||
|  | ---- | ||||||
|  | \documentclass[12pt]{article} | ||||||
|  | \usepackage{lingmacros} | ||||||
|  | \usepackage{tree-dvips} | ||||||
|  | \begin{document} | ||||||
|  |  | ||||||
|  | \section*{Notes for My Paper} | ||||||
|  |  | ||||||
|  | Don't forget to include examples of topicalization. | ||||||
|  | They look like this: | ||||||
|  |  | ||||||
|  | {\small | ||||||
|  | \enumsentence{Topicalization from sentential subject:\\  | ||||||
|  | \shortex{7}{a John$_i$ [a & kltukl & [el &  | ||||||
|  |   {\bf l-}oltoir & er & ngii$_i$ & a Mary]]} | ||||||
|  | { & {\bf R-}clear & {\sc comp} &  | ||||||
|  |   {\bf IR}.{\sc 3s}-love   & P & him & } | ||||||
|  | {John, (it's) clear that Mary loves (him).}} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | \subsection*{How to handle topicalization} | ||||||
|  |  | ||||||
|  | I'll just assume a tree structure like (\ex{1}). | ||||||
|  |  | ||||||
|  | {\small | ||||||
|  | \enumsentence{Structure of A$'$ Projections:\\ [2ex] | ||||||
|  | \begin{tabular}[t]{cccc} | ||||||
|  |     & \node{i}{CP}\\ [2ex] | ||||||
|  |     \node{ii}{Spec} &   &\node{iii}{C$'$}\\ [2ex] | ||||||
|  |         &\node{iv}{C} & & \node{v}{SAgrP} | ||||||
|  | \end{tabular} | ||||||
|  | \nodeconnect{i}{ii} | ||||||
|  | \nodeconnect{i}{iii} | ||||||
|  | \nodeconnect{iii}{iv} | ||||||
|  | \nodeconnect{iii}{v} | ||||||
|  | } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | \subsection*{Mood} | ||||||
|  |  | ||||||
|  | Mood changes when there is a topic, as well as when | ||||||
|  | there is WH-movement.  \emph{Irrealis} is the mood when | ||||||
|  | there is a non-subject topic or WH-phrase in Comp. | ||||||
|  | \emph{Realis} is the mood when there is a subject topic | ||||||
|  | or WH-phrase. | ||||||
|  |  | ||||||
|  | \end{document} | ||||||
|  |  | ||||||
|  | ---- | ||||||
|  |  | ||||||
|  | === Latex alternative: Lyx | ||||||
|  |  | ||||||
|  | [%step] | ||||||
|  | * WYSIWYG latex editor | ||||||
|  | * Documents are generated in .lyx, a subset of latex | ||||||
|  | * Can be used together with version control | ||||||
|  | * Provides, by default, templates for many of the biggest scientific journals | ||||||
|  |  | ||||||
|  | === Lyx: example | ||||||
|  |  | ||||||
|  | image::nvbqz.png[] | ||||||
|  |  | ||||||
|  | === Lyx: example II | ||||||
|  |  | ||||||
|  | image::lyxlilipond.png[] | ||||||
|  |  | ||||||
|  |  | ||||||
|  | === Lightweight Markup languages | ||||||
|  |  | ||||||
|  | [%step] | ||||||
|  | * Also called Plain Text Markup or humane markup language | ||||||
|  | * Provide a way of formating the document, while still being readable | ||||||
|  | * Widely used on websites and code documentation | ||||||
|  |  | ||||||
|  | === LML: current options | ||||||
|  |  | ||||||
|  | * Markdown | ||||||
|  | * reStructuredText (rst) | ||||||
|  | * Asciidoc | ||||||
|  |  | ||||||
|  | === Markdown | ||||||
|  |  | ||||||
|  | [%step] | ||||||
|  | * Created for minimal formating of web text | ||||||
|  | * used **__everywhere__**: web, jupyter notebooks, r-markdown... | ||||||
|  | * There is no standard, currently exist many flavours of it (github, commonmark, pandoc) | ||||||
|  | * Originally not intended for documents, very limited | ||||||
|  | * Different flavors and tools try to overcome this limitation | ||||||
|  | ** (+ pandoc) | ||||||
|  |  | ||||||
|  | === Markdown: example | ||||||
|  |  | ||||||
|  | image::quicktourexample_small.png[] | ||||||
|  |  | ||||||
|  | === Asciidoc | ||||||
|  |  | ||||||
|  | [%step] | ||||||
|  | * Developed for book creation. | ||||||
|  | * Limited number of users | ||||||
|  | * Standardized and extensible, great documentation | ||||||
|  | * Lack of resources makes that bugs or request take time to be fixed | ||||||
|  |  | ||||||
|  | === reStructuredText | ||||||
|  |  | ||||||
|  | [%step] | ||||||
|  | * Originally intended for python documentation | ||||||
|  | * medium sized but very tech-savvy community | ||||||
|  | * Syntax is a little different than the other two | ||||||
|  | * Very powerful and extensible | ||||||
|  |  | ||||||
|  |  | ||||||
|  | === Which one to use? | ||||||
|  |  | ||||||
|  | * Notetaking: | ||||||
|  | ** Markdown | ||||||
|  | ** Asciidoc | ||||||
|  | ** reStructuredText | ||||||
|  | * Anything more serious: | ||||||
|  | ** reStructuredText | ||||||
|  | ** Latex/Lyx | ||||||
|  |  | ||||||
|  | == Resources | ||||||
|  |  | ||||||
|  | https://chocolatey.org | ||||||
|  |  | ||||||
|  | ---- | ||||||
|  | choco install git vscode pandoc | ||||||
|  | ---- | ||||||
|  |  | ||||||
|  |  | ||||||
|  | == Questions? | ||||||
|  |  | ||||||
							
								
								
									
										234
									
								
								presentation.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,234 @@ | |||||||
|  | <!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>Document Version Control with GIT</title><meta content="yes" name="apple-mobile-web-app-capable"><meta content="black-translucent" name="apple-mobile-web-app-status-bar-style"><meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui" name="viewport"><link href="node_modules/reveal.js/css/reveal.css" rel="stylesheet"><link rel="stylesheet" href="node_modules/reveal.js/css/theme/white.css" id="theme"><!--This CSS is generated by the Asciidoctor-Reveal.js converter to further integrate AsciiDoc's existing semantic with Reveal.js--><style type="text/css">.reveal div.right { | ||||||
|  |   float: right; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* callouts */ | ||||||
|  | .conum[data-value] {display:inline-block;color:#fff!important;background-color:rgba(50,150,50,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold} | ||||||
|  | .conum[data-value] *{color:#fff!important} | ||||||
|  | .conum[data-value]+b{display:none} | ||||||
|  | .conum[data-value]:after{content:attr(data-value)} | ||||||
|  | pre .conum[data-value]{position:relative;top:-.125em} | ||||||
|  | b.conum *{color:inherit!important} | ||||||
|  | .conum:not([data-value]):empty{display:none}</style><link href="node_modules/reveal.js/lib/css/zenburn.css" rel="stylesheet"><script>var link = document.createElement( 'link' ); | ||||||
|  | link.rel = 'stylesheet'; | ||||||
|  | link.type = 'text/css'; | ||||||
|  | link.href = window.location.search.match( /print-pdf/gi ) ? "node_modules/reveal.js/css/print/pdf.css" : "node_modules/reveal.js/css/print/paper.css"; | ||||||
|  | document.getElementsByTagName( 'head' )[0].appendChild( link );</script><!--[if lt IE 9]><script src="node_modules/reveal.js/lib/js/html5shiv.js"></script><![endif]--><link rel="stylesheet" href="custom_css.css"></head><body><div class="reveal"><div class="slides"><section class="title" data-state="title" data-background-image="img/intro.jpg"><h1>Document Version Control with GIT</h1></section><section id="_before_we_start" data-background-image="img/normal.jpg"><h2>Before we start…​</h2><div class="imageblock" style=""><img src="img/nocloud.jpg" alt="nocloud"></div></section> | ||||||
|  | <section><section id="_what_is_version_control" data-background-image="img/normal.jpg"><h2>What is version control?</h2><div class="ulist"><ul><li class="fragment"><p>Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later.</p></li><li class="fragment"><p>Has existed for almost as long as writing has existed (ex. document version)</p></li><li class="fragment"><p>Today, the most capable (as well as complex) revision control systems are those used in software development.</p></li></ul></div></section><section id="_why" data-background-image="img/normal.jpg"><h2>Why?</h2><div class="ulist"><ul><li class="fragment"><p>Revert files back to a previous state</p></li><li class="fragment"><p>"Freeze" important versions of a document</p></li><li class="fragment"><p>Compare changes over time</p></li><li class="fragment"><p>Track progress of a project</p></li><li class="fragment"><p>See who modified something, and when</p></li></ul></div></section><section id="_modern_version_control_systems" data-background-image="img/normal.jpg"><h2>Modern version control systems</h2><div class="ulist"><ul><li class="fragment"><p>Remote backup of files</p></li><li class="fragment"><p>Powerful tool for collaboration</p></li></ul></div></section></section> | ||||||
|  | <section><section id="_git" data-background-image="img/normal.jpg"><h2>GIT</h2><div class="ulist"><ul><li class="fragment"><p>Developed by Linus Torvalds in 2005</p></li><li class="fragment"><p>The linux Kernel:</p><div class="ulist"><ul><li><p>~63000 files</p></li><li><p>Roughly 15,600 developers from more than 1,400 companies</p></li></ul></div></li></ul></div></section><section id="_characteristics" data-background-image="img/normal.jpg"><h2>Characteristics</h2><div class="ulist"><ul><li class="fragment"><p>Free and open source</p></li><li class="fragment"><p>Distributed</p></li><li class="fragment"><p>Powerful and flexible</p></li><li class="fragment"><p>Learning curve can be steep</p></li></ul></div></section><section data-background-image="img/normal.jpg"><div class="paragraph"><p><span class="image"><img src="img/xkcd_git.png" alt="xkcd git"></span></p></div></section><section id="_how_does_it_work" data-background-image="img/normal.jpg"><h2>How does it work?</h2><div class="imageblock" style=""><img src="img/architecture.png" alt="architecture"></div></section><section id="_installation" data-background-image="img/normal.jpg"><h2>Installation</h2><div class="paragraph"><p><a href="https://git-scm.com/download/win" class="bare">https://git-scm.com/download/win</a></p></div> | ||||||
|  | <div class="paragraph"><p>Package managers are heavily recommended!</p></div></section><section id="_creating_a_remote_repository" data-background-image="img/normal.jpg"><h2>Creating a remote repository</h2><div class="ulist"><ul><li class="fragment"><p>register at the remote git server</p><div class="ulist"><ul><li><p><a href="https://git.webhosting.rug.nl/" class="bare">https://git.webhosting.rug.nl/</a></p></li></ul></div></li><li class="fragment"><p>create repository</p></li><li class="fragment"><p>add participants <em>ssh public keys</em></p></li><li class="fragment"><p>clone the repository in your machine</p></li></ul></div></section><section id="_readme_and_gitignore" data-background-image="img/normal.jpg"><h2>README and .gitignore</h2><div class="paragraph"><p>Every repository should have these 2 files:</p></div> | ||||||
|  | <div class="ulist"><ul><li><p><strong>README</strong>: project description and useful information</p></li><li><p><strong>.gitignore</strong>: special file indicating GIT which files are <strong>not</strong> to be tracked</p></li></ul></div></section><section id="_workflow" data-background-image="img/normal.jpg"><h2>workflow</h2><div class="imageblock" style=""><img src="img/git_workflow.jpg" alt="git workflow"></div></section><section id="_copying_remote_repository_clone" data-background-image="img/normal.jpg"><h2>copying remote repository: clone</h2><div class="ulist"><ul><li><p><strong>git clone <em>repository</em></strong></p></li><li><p>Clones the remote repository into the local one</p></li></ul></div></section><section id="_staging_changes_local" data-background-image="img/normal.jpg"><h2>staging changes (local)</h2><div class="ulist"><ul><li class="fragment"><p><strong>git add <em>files</em></strong></p></li><li class="fragment"><p>Adds the changes into the local staging area</p></li></ul></div></section><section id="_saving_changes_commit_local" data-background-image="img/normal.jpg"><h2>Saving changes: commit (local)</h2><div class="ulist"><ul><li class="fragment"><p><strong>git commit "message"</strong></p></li><li class="fragment"><p>Saves the changes in the staging area into the repository</p></li><li class="fragment"><p>Creates a "snapshot" of the current state of one or more files</p></li><li class="fragment"><p>A message describing the changes must be provided</p></li></ul></div></section><section id="_history_and_revert_local" data-background-image="img/normal.jpg"><h2>history and revert (local)</h2><div class="ulist"><ul><li class="fragment"><p><strong>git log <em>files</em></strong></p></li><li class="fragment"><p>returns a history of the file modifications</p></li><li class="fragment"><p><strong>git revert <em>commit</em></strong></p></li><li class="fragment"><p>removes one or more commits from the local files, changes must be committed after</p></li></ul></div></section><section id="_upload_to_remote_repository_push" data-background-image="img/normal.jpg"><h2>upload to remote repository: push</h2><div class="ulist"><ul><li class="fragment"><p><strong>git push</strong></p></li><li class="fragment"><p>Uploads the state of the local repository to the remote one</p></li></ul></div></section><section id="_download_from_remote_repository_pull" data-background-image="img/normal.jpg"><h2>Download from remote repository: pull</h2><div class="ulist"><ul><li class="fragment"><p><strong>git pull</strong></p></li><li class="fragment"><p>Fetch and merges the documents in the remote repository into the local one</p></li><li class="fragment"><p>Merging files can generate conflicts, git will ask us to fix them and commit the changes</p></li></ul></div></section><section id="_branching" data-background-image="img/normal.jpg"><h2>Branching</h2><div class="imageblock" style=""><img src="img/version-control-flow.png" alt="version control flow"></div></section><section id="_other_advanced_stuff" data-background-image="img/normal.jpg"><h2>other (advanced) stuff</h2><div class="ulist"><ul><li><p>tags</p></li><li><p>partial reverts</p></li><li><p>change history</p></li><li><p>…​</p></li></ul></div></section></section> | ||||||
|  | <section><section id="_docs_as_code" data-background-image="img/normal.jpg"><h2>Docs as code</h2><div class="ulist"><ul><li class="fragment"><p>Software is a small part of the documents a project must handle</p></li><li class="fragment"><p>Still, version control and remote collaboration are needed for all the documents</p></li><li class="fragment"><p>In the last years there is a big push of treating documents the same way as programming files</p><div class="ulist"><ul><li><p><a href="https://www.writethedocs.org/guide/docs-as-code/" class="bare">https://www.writethedocs.org/guide/docs-as-code/</a></p></li></ul></div></li></ul></div></section><section id="_advantages" data-background-image="img/normal.jpg"><h2>Advantages</h2><div class="ulist"><ul><li class="fragment"><p>Working in plain text files (rather than binary file formats like Word)</p></li><li class="fragment"><p>Collaborating using version control such as git and GitHub</p></li><li class="fragment"><p>Storing docs in the same repositories as the programming code itself</p></li><li class="fragment"><p>Versioning docs through git tags/releases (rather than duplicating all the files to archive each release)</p></li><li class="fragment"><p>Generate other formats or websites without modifying the document</p></li></ul></div></section><section id="_just_a_little_problem" data-background-image="img/normal.jpg"><h2>Just a little problem…​</h2><div class="ulist"><ul><li class="fragment"><p>The most common document formats: word, pdf…​ are binary files</p></li><li class="fragment"><p>git (text based) doesn’t work with them</p></li></ul></div></section><section id="_solutions" data-background-image="img/normal.jpg"><h2>Solutions?</h2><div class="ulist"><ul><li class="fragment"><p>Markup languages:</p></li><li class="fragment"><p>Markup languages are ways of annotating an electronic document.</p></li><li class="fragment"><p>Usually markup will either specify how something should be displayed or what something means.</p><div class="ulist"><ul><li><p>html, xml, latex…​</p></li></ul></div></li></ul></div></section><section id="_markup_languages" data-background-image="img/normal.jpg"><h2>Markup languages</h2><div class="ulist"><ul><li class="fragment"><p>Documents are written in plain text, then a program convert them into the final document</p></li><li class="fragment"><p>The same document can be used to generate files in other formats: latex, word, pdf or even slides</p></li><li class="fragment"><p>Formating is done by the computer, output is always consistent</p></li><li class="fragment"><p>Fast and light</p></li><li class="fragment"><p>Can be used in version control systems</p></li></ul></div></section><section id="_markup_languages_advanced_features" data-background-image="img/normal.jpg"><h2>Markup languages: Advanced features</h2><div class="ulist"><ul><li class="fragment"><p>Automatic generation of documents</p></li><li class="fragment"><p>Inline comments (not rendered in the final document)</p></li><li class="fragment"><p>Split one the document into several. Ex: main document, chapters and bibliography</p></li><li class="fragment"><p>Code executed and plots rendered <em>in</em> the document</p></li></ul></div></section><section id="_latex" data-background-image="img/normal.jpg"><h2>Latex</h2><div class="ulist"><ul><li class="fragment"><p>Extensively used for technical papers</p></li><li class="fragment"><p>Beautiful generated documents</p></li><li class="fragment"><p>Very powerful…​</p></li><li class="fragment"><p>…​and very heavy</p></li><li class="fragment"><p>Setup and document customization are complex</p></li></ul></div></section><section id="_latex_example" data-background-image="img/normal.jpg"><h2>Latex: example</h2><pre class="highlight listingblock"><code>\documentclass{article} | ||||||
|  | \usepackage{graphicx} | ||||||
|  |  | ||||||
|  | \begin{document} | ||||||
|  |  | ||||||
|  | \title{Introduction to \LaTeX{}} | ||||||
|  | \author{Author's Name} | ||||||
|  |  | ||||||
|  | \maketitle | ||||||
|  |  | ||||||
|  | \begin{abstract} | ||||||
|  | The abstract text goes here. | ||||||
|  | \end{abstract} | ||||||
|  |  | ||||||
|  | \section{Introduction} | ||||||
|  | Here is the text of your introduction. | ||||||
|  |  | ||||||
|  | \begin{equation} | ||||||
|  |     \label{simple_equation} | ||||||
|  |     \alpha = \sqrt{ \beta } | ||||||
|  | \end{equation} | ||||||
|  |  | ||||||
|  | \subsection{Subsection Heading Here} | ||||||
|  | Write your subsection text here. | ||||||
|  |  | ||||||
|  | \begin{figure} | ||||||
|  |     \centering | ||||||
|  |     \includegraphics[width=3.0in]{myfigure} | ||||||
|  |     \caption{Simulation Results} | ||||||
|  |     \label{simulationfigure} | ||||||
|  | \end{figure} | ||||||
|  |  | ||||||
|  | \section{Conclusion} | ||||||
|  | Write your conclusion here. | ||||||
|  |  | ||||||
|  | \end{document}</code></pre></section><section id="_latex_example_ii" data-background-image="img/normal.jpg"><h2>Latex: example II</h2><pre class="highlight listingblock"><code>\documentclass[12pt]{article} | ||||||
|  | \usepackage{lingmacros} | ||||||
|  | \usepackage{tree-dvips} | ||||||
|  | \begin{document} | ||||||
|  |  | ||||||
|  | \section*{Notes for My Paper} | ||||||
|  |  | ||||||
|  | Don't forget to include examples of topicalization. | ||||||
|  | They look like this: | ||||||
|  |  | ||||||
|  | {\small | ||||||
|  | \enumsentence{Topicalization from sentential subject:\\ | ||||||
|  | \shortex{7}{a John$_i$ [a & kltukl & [el & | ||||||
|  |   {\bf l-}oltoir & er & ngii$_i$ & a Mary]]} | ||||||
|  | { & {\bf R-}clear & {\sc comp} & | ||||||
|  |   {\bf IR}.{\sc 3s}-love   & P & him & } | ||||||
|  | {John, (it's) clear that Mary loves (him).}} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | \subsection*{How to handle topicalization} | ||||||
|  |  | ||||||
|  | I'll just assume a tree structure like (\ex{1}). | ||||||
|  |  | ||||||
|  | {\small | ||||||
|  | \enumsentence{Structure of A$'$ Projections:\\ [2ex] | ||||||
|  | \begin{tabular}[t]{cccc} | ||||||
|  |     & \node{i}{CP}\\ [2ex] | ||||||
|  |     \node{ii}{Spec} &   &\node{iii}{C$'$}\\ [2ex] | ||||||
|  |         &\node{iv}{C} & & \node{v}{SAgrP} | ||||||
|  | \end{tabular} | ||||||
|  | \nodeconnect{i}{ii} | ||||||
|  | \nodeconnect{i}{iii} | ||||||
|  | \nodeconnect{iii}{iv} | ||||||
|  | \nodeconnect{iii}{v} | ||||||
|  | } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | \subsection*{Mood} | ||||||
|  |  | ||||||
|  | Mood changes when there is a topic, as well as when | ||||||
|  | there is WH-movement.  \emph{Irrealis} is the mood when | ||||||
|  | there is a non-subject topic or WH-phrase in Comp. | ||||||
|  | \emph{Realis} is the mood when there is a subject topic | ||||||
|  | or WH-phrase. | ||||||
|  |  | ||||||
|  | \end{document}</code></pre></section><section id="_latex_alternative_lyx" data-background-image="img/normal.jpg"><h2>Latex alternative: Lyx</h2><div class="ulist"><ul><li class="fragment"><p>WYSIWYG latex editor</p></li><li class="fragment"><p>Documents are generated in .lyx, a subset of latex</p></li><li class="fragment"><p>Can be used together with version control</p></li><li class="fragment"><p>Provides, by default, templates for many of the biggest scientific journals</p></li></ul></div></section><section id="_lyx_example" data-background-image="img/normal.jpg"><h2>Lyx: example</h2><div class="imageblock" style=""><img src="img/nvbqz.png" alt="nvbqz"></div></section><section id="_lyx_example_ii" data-background-image="img/normal.jpg"><h2>Lyx: example II</h2><div class="imageblock" style=""><img src="img/lyxlilipond.png" alt="lyxlilipond"></div></section><section id="_lightweight_markup_languages" data-background-image="img/normal.jpg"><h2>Lightweight Markup languages</h2><div class="ulist"><ul><li class="fragment"><p>Also called Plain Text Markup or humane markup language</p></li><li class="fragment"><p>Provide a way of formating the document, while still being readable</p></li><li class="fragment"><p>Widely used on websites and code documentation</p></li></ul></div></section><section id="_lml_current_options" data-background-image="img/normal.jpg"><h2>LML: current options</h2><div class="ulist"><ul><li><p>Markdown</p></li><li><p>reStructuredText (rst)</p></li><li><p>Asciidoc</p></li></ul></div></section><section id="_markdown" data-background-image="img/normal.jpg"><h2>Markdown</h2><div class="ulist"><ul><li class="fragment"><p>Created for minimal formating of web text</p></li><li class="fragment"><p>used <strong><em>everywhere</em></strong>: web, jupyter notebooks, r-markdown…​</p></li><li class="fragment"><p>There is no standard, currently exist many flavours of it (github, commonmark, pandoc)</p></li><li class="fragment"><p>Originally not intended for documents, very limited</p></li><li class="fragment"><p>Different flavors and tools try to overcome this limitation</p><div class="ulist"><ul><li><p>(+ pandoc)</p></li></ul></div></li></ul></div></section><section id="_markdown_example" data-background-image="img/normal.jpg"><h2>Markdown: example</h2><div class="imageblock" style=""><img src="img/quicktourexample_small.png" alt="quicktourexample small"></div></section><section id="_asciidoc" data-background-image="img/normal.jpg"><h2>Asciidoc</h2><div class="ulist"><ul><li class="fragment"><p>Developed for book creation.</p></li><li class="fragment"><p>Limited number of users</p></li><li class="fragment"><p>Standardized and extensible, great documentation</p></li><li class="fragment"><p>Lack of resources makes that bugs or request take time to be fixed</p></li></ul></div></section><section id="_restructuredtext" data-background-image="img/normal.jpg"><h2>reStructuredText</h2><div class="ulist"><ul><li class="fragment"><p>Originally intended for python documentation</p></li><li class="fragment"><p>medium sized but very tech-savvy community</p></li><li class="fragment"><p>Syntax is a little different than the other two</p></li><li class="fragment"><p>Very powerful and extensible</p></li></ul></div></section><section id="_which_one_to_use" data-background-image="img/normal.jpg"><h2>Which one to use?</h2><div class="ulist"><ul><li><p>Notetaking:</p><div class="ulist"><ul><li><p>Markdown</p></li><li><p>Asciidoc</p></li><li><p>reStructuredText</p></li></ul></div></li><li><p>Anything more serious:</p><div class="ulist"><ul><li><p>reStructuredText</p></li><li><p>Latex/Lyx</p></li></ul></div></li></ul></div></section></section> | ||||||
|  | <section id="_resources" data-background-image="img/normal.jpg"><h2>Resources</h2><div class="paragraph"><p><a href="https://chocolatey.org" class="bare">https://chocolatey.org</a></p></div> | ||||||
|  | <pre class="highlight listingblock"><code>choco install git vscode pandoc</code></pre></section> | ||||||
|  | <section id="_questions" data-background-image="img/normal.jpg"><h2>Questions?</h2></section></div></div><script src="node_modules/reveal.js/lib/js/head.min.js"></script><script src="node_modules/reveal.js/js/reveal.js"></script><script>Array.prototype.slice.call(document.querySelectorAll('.slides section')).forEach(function(slide) { | ||||||
|  |   if (slide.getAttribute('data-background-color')) return; | ||||||
|  |   // user needs to explicitly say he wants CSS color to override otherwise we might break custom css or theme (#226) | ||||||
|  |   if (!(slide.classList.contains('canvas') || slide.classList.contains('background'))) return; | ||||||
|  |   var bgColor = getComputedStyle(slide).backgroundColor; | ||||||
|  |   if (bgColor !== 'rgba(0, 0, 0, 0)' && bgColor !== 'transparent') { | ||||||
|  |     slide.setAttribute('data-background-color', bgColor); | ||||||
|  |     slide.style.backgroundColor = 'transparent'; | ||||||
|  |   } | ||||||
|  | }) | ||||||
|  |  | ||||||
|  | // See https://github.com/hakimel/reveal.js#configuration for a full list of configuration options | ||||||
|  | Reveal.initialize({ | ||||||
|  |   // Display presentation control arrows | ||||||
|  |   controls: true, | ||||||
|  |   // Help the user learn the controls by providing hints, for example by | ||||||
|  |   // bouncing the down arrow when they first encounter a vertical slide | ||||||
|  |   controlsTutorial: true, | ||||||
|  |   // Determines where controls appear, "edges" or "bottom-right" | ||||||
|  |   controlsLayout: 'bottom-right', | ||||||
|  |   // Visibility rule for backwards navigation arrows; "faded", "hidden" | ||||||
|  |   // or "visible" | ||||||
|  |   controlsBackArrows: 'faded', | ||||||
|  |   // Display a presentation progress bar | ||||||
|  |   progress: true, | ||||||
|  |   // Display the page number of the current slide | ||||||
|  |   slideNumber: false, | ||||||
|  |   // Control which views the slide number displays on | ||||||
|  |   showSlideNumber: 'all', | ||||||
|  |   // Push each slide change to the browser history | ||||||
|  |   history: false, | ||||||
|  |   // Enable keyboard shortcuts for navigation | ||||||
|  |   keyboard: true, | ||||||
|  |   // Enable the slide overview mode | ||||||
|  |   overview: true, | ||||||
|  |   // Vertical centering of slides | ||||||
|  |   center: true, | ||||||
|  |   // Enables touch navigation on devices with touch input | ||||||
|  |   touch: true, | ||||||
|  |   // Loop the presentation | ||||||
|  |   loop: false, | ||||||
|  |   // Change the presentation direction to be RTL | ||||||
|  |   rtl: false, | ||||||
|  |   // Randomizes the order of slides each time the presentation loads | ||||||
|  |   shuffle: false, | ||||||
|  |   // Turns fragments on and off globally | ||||||
|  |   fragments: true, | ||||||
|  |   // Flags whether to include the current fragment in the URL, | ||||||
|  |   // so that reloading brings you to the same fragment position | ||||||
|  |   fragmentInURL: false, | ||||||
|  |   // Flags if the presentation is running in an embedded mode, | ||||||
|  |   // i.e. contained within a limited portion of the screen | ||||||
|  |   embedded: false, | ||||||
|  |   // Flags if we should show a help overlay when the questionmark | ||||||
|  |   // key is pressed | ||||||
|  |   help: true, | ||||||
|  |   // Flags if speaker notes should be visible to all viewers | ||||||
|  |   showNotes: false, | ||||||
|  |   // Global override for autolaying embedded media (video/audio/iframe) | ||||||
|  |   // - null: Media will only autoplay if data-autoplay is present | ||||||
|  |   // - true: All media will autoplay, regardless of individual setting | ||||||
|  |   // - false: No media will autoplay, regardless of individual setting | ||||||
|  |   autoPlayMedia: null, | ||||||
|  |   // Number of milliseconds between automatically proceeding to the | ||||||
|  |   // next slide, disabled when set to 0, this value can be overwritten | ||||||
|  |   // by using a data-autoslide attribute on your slides | ||||||
|  |   autoSlide: 0, | ||||||
|  |   // Stop auto-sliding after user input | ||||||
|  |   autoSlideStoppable: true, | ||||||
|  |   // Use this method for navigation when auto-sliding | ||||||
|  |   autoSlideMethod: Reveal.navigateNext, | ||||||
|  |   // Specify the average time in seconds that you think you will spend | ||||||
|  |   // presenting each slide. This is used to show a pacing timer in the | ||||||
|  |   // speaker view | ||||||
|  |   defaultTiming: 120, | ||||||
|  |   // Enable slide navigation via mouse wheel | ||||||
|  |   mouseWheel: false, | ||||||
|  |   // Hides the address bar on mobile devices | ||||||
|  |   hideAddressBar: true, | ||||||
|  |   // Opens links in an iframe preview overlay | ||||||
|  |   // Add `data-preview-link` and `data-preview-link="false"` to customise each link | ||||||
|  |   // individually | ||||||
|  |   previewLinks: false, | ||||||
|  |   // Transition style (e.g., none, fade, slide, convex, concave, zoom) | ||||||
|  |   transition: 'slide', | ||||||
|  |   // Transition speed (e.g., default, fast, slow) | ||||||
|  |   transitionSpeed: 'default', | ||||||
|  |   // Transition style for full page slide backgrounds (e.g., none, fade, slide, convex, concave, zoom) | ||||||
|  |   backgroundTransition: 'fade', | ||||||
|  |   // Number of slides away from the current that are visible | ||||||
|  |   viewDistance: 3, | ||||||
|  |   // Parallax background image (e.g., "'https://s3.amazonaws.com/hakim-static/reveal-js/reveal-parallax-1.jpg'") | ||||||
|  |   parallaxBackgroundImage: '', | ||||||
|  |   // Parallax background size in CSS syntax (e.g., "2100px 900px") | ||||||
|  |   parallaxBackgroundSize: '', | ||||||
|  |   // Number of pixels to move the parallax background per slide | ||||||
|  |   // - Calculated automatically unless specified | ||||||
|  |   // - Set to 0 to disable movement along an axis | ||||||
|  |   parallaxBackgroundHorizontal: null, | ||||||
|  |   parallaxBackgroundVertical: null, | ||||||
|  |   // The display mode that will be used to show slides | ||||||
|  |   display: 'block', | ||||||
|  |  | ||||||
|  |   // The "normal" size of the presentation, aspect ratio will be preserved | ||||||
|  |   // when the presentation is scaled to fit different resolutions. Can be | ||||||
|  |   // specified using percentage units. | ||||||
|  |   width: 1600, | ||||||
|  |   height: 900, | ||||||
|  |  | ||||||
|  |   // Factor of the display size that should remain empty around the content | ||||||
|  |   margin: 0.1, | ||||||
|  |  | ||||||
|  |   // Bounds for smallest/largest possible scale to apply to content | ||||||
|  |   minScale: 0.2, | ||||||
|  |   maxScale: 1.5, | ||||||
|  |  | ||||||
|  |   // Optional libraries used to extend on reveal.js | ||||||
|  |   dependencies: [ | ||||||
|  |       { src: 'node_modules/reveal.js/lib/js/classList.js', condition: function() { return !document.body.classList; } }, | ||||||
|  |        | ||||||
|  |       { src: 'node_modules/reveal.js/plugin/zoom-js/zoom.js', async: true }, | ||||||
|  |       { src: 'node_modules/reveal.js/plugin/notes/notes.js', async: true }, | ||||||
|  |        | ||||||
|  |        | ||||||
|  |        | ||||||
|  |        | ||||||
|  |   ], | ||||||
|  |  | ||||||
|  |    | ||||||
|  |  | ||||||
|  | });</script></body></html> | ||||||