DIY Personal Fabrication Dokumentation Juergen Eckert – Informatik 7.
-
Upload
achim-stiller -
Category
Documents
-
view
109 -
download
2
Transcript of DIY Personal Fabrication Dokumentation Juergen Eckert – Informatik 7.
DIY
Personal Fabrication
Dokumentation
Juergen Eckert – Informatik 7
How to Get Started? (again)
1. Projekt überlegen– kann man es bereits kaufen? → kein Projekt
2. Related work– Verwandte Arbeiten als Grundlage nutzen
3. Durch Probleme/Herausforderungen lernen4. Das Ziel nie aus den Augen verlieren5. Dokumentieren!!!
Dokumentation
Online Dokumentation
• Instructables (Anleitungen)• Thingiverse (3D Objekte)• Github (Source Code)
• Privater Webspace– Blog– *wiki
• Etc...
Lizenzen, Patente und Rechte
• Zugänglichkeit zu Schnittstellen, Software und Hardware
• Creative Commons• GNU (L)GPL• MIT-Lizenz
Klassische Dokumentation
• Textverarbeitungsprogramm: WYSIWYG(Word, LibreOffice, etc)
• Textsatzsystem (LaTeX)Ziel: Setzen von Texten und mathematischen Formeln
Geschichte
• TeX von Donald E. Knuth (Standford, 1978)– altgriechisch τέχνη (téchne):
Fähigkeit, Kunstfertigkeit, Handwerk– 300 fest Befehle (primitives)– Definition eigener Makros (komplex)
• LaTeX von Leslie Lamport (1986)– TeX-Macros– Lamport TeX– LaTeX 2ε seit 1989
Publikations-Workflow
1. Autor verfasst Manuskript
2. Buch-Designer ent-scheidet über Layout
3. Setzer erhält Anweisungen
1. Autor verfasst Manuskript
2. LaTeX: Fachwissen -> log. Struktur (Befehle)
3. TeX
Traditionell Automatisiert
Vor- und Nachteile
Wenige, leicht verständliche BefehleMathematische Formeln besonders einfachStrukturen (z.B. Literaturverzeichnisse) wenig
AufwandAktualisieren von Querverweisen automatischLange, komplizierte Dokumente zuverlässig
Workflow stark unterschiedlich zu WYSIWYG
Quelle
• Tutoriell teilweise nach – Marco Daniel et al.:
LATEX 2ε-Kurzbeschreibung (V3.0 1.7.12)
– Tobias Oetiker et al.:The Not So Short Introduction to LATEX2ε (V5.03 25.4.14)
Los geht‘s
1. doku.tex erstellen2. > pdflatex doku.tex
oder> latexmk –pvc –pdf doku.tex(Autogenerierung)
• Automatische Preview im Texteditor möglichz.B. Texmaker
doku.tex 1/3
• Textdatei• Unsichtbare Zeichen (Space ( ), \t, \n) werden ␠
einheitlich als Space behandelt• Mehrere -> ein ␠ ␠• Leerzeile zwischen Textzeilen -> Ende Absatz• Mehrere Leerzeilen -> eine Leerzeile
doku.tex 2/3
• Kommentare von „%“ bis „\n“• Befehle starten mit „\“ (oder Sonderzeichen)• Space nach befehlen „{} “ oder „\ “␠ ␠• Case sensitiv• Parameter– „{parameter1, parameter2}“– „[optional1, optional2]“
• Index: z.B. http://www.weinelt.de/latex/
doku.tex 3/3\documentclass[11pt,a4paper,ngerman]{article} \usepackage[utf8]{inputenc} %UTF8 input file
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel} %Umlaute,Silbentrennung
\date{\today}
\author{J.~Eckert}
\title{DIY: Sample TeX File}
\begin{document}
\maketitle
\tableofcontents
\section{Start}
Hier beginnt mein schönes Werk ...
\section{Ende}
... und hier endet es.
\end{document}
Preamble
Body
Dokumentklassen
\documentclass[<optionen>]{<klasse>}• Vereinbarungen über das Layout• <klasse> exakt ein Parameter• Vordefinierte aus der Distribution oder
.cls File im Dokumenten Root
→ DIY Project Doku mit IEEEtran
Eingabezeichen
• Erlaubt:a...z A...Z 0...9 . : ; , ? ! ‘ ’( ) [ ] - / * @ + =
• Spezialbedeutung: (teilw. in Mathe Umgebung erlaubt)
$ & % # _ { } ~ ^ \ “ | < >• Escapebar:
\$ \& \% \# \_ \{ \} \~{} \^{} \textbackslash …
Schriften 1/2
• Manuelle Silbentrennung: \hyphenation{}
• Fett \textbf{...}• Kursiv \textit{...}
\par = neuer Absatz Leerzeile≙
Schriften 2/2
ListenUmgebung
\begin{itemize}\item ...\item ...\begin{itemize}
\item ...\item ...
\end{itemize}\item ...
\end{itemize}
• Numeriering: enumerate• Eigene Beschreibung:• description• \item[marker]
TabellenUmgebung
% \usepackage{booktabs} \begin{tabular}[t]{rl}
\topruleWert & Zahlensystem \\\midrule7C0 & hexadezimal \\ 3700 & oktal \\ 11111000000 & binär \\ 1984 & dezimal \\ \bottomrule
\end{tabular}
Mathematische Formlen
• equation Umgebung oder $ ... $ \[ ... \]
Bilder / Label / Verweise
%\usepackage{cleveref}%\usepackage{graphicx}
\begin{figure}\centering\includegraphics[width=.3\textwidth]{logo}\caption{FabLab Logo}\label{fig:fl}
\end{figure}
\Cref{fig:fl} zeigt...
Literaturangaben
Besser:• Nutzung einer Datenbank (.bib File)• Verabeitung mittels BibTEX oder biber
Presentation mit LaTeX\documentclass{beamer}
\begin{document}
\begin{frame}
This is my first slide.
\end{frame}
\begin{frame}
This is my second (and last) slide.
\end{frame}
\end{document}
PGF/TikZ
%\usepackage{tikz}\begin{tikzpicture}
\node[draw,circle](a) {A};\node[draw,circle,right of=a, node distance=2cm](b) {B};
\draw[->] (a) to[out=45,in=135] node[above]{nach} (b);
\end{tikzpicture}
...AND MUCH MORE...
GIT
• Tutoriell nach: Christoph Sommer, Uni Paderborn
Model Management with Git
Motivation
• So nicht…– cp src/models/network/ipv4.c src/models/network/ipv4.bak– cp src/models/transport/tcp.c src/models/network/tcpip.westwood
• Besser, aber immer noch schlecht…– cp -ax src src.bak– cp –ax src src.bak.old
• Fast richtig…– cp -ax project project.2009-12-15– cp -ax project project.2009-12-16– cp -ax project project.2009-12-17– diff -Naur ../project.2009-12-{16,15} | patch
• Ideal– Dateisystem das (zuverlässig) die Historie speichert– Optimiert zum sichern/wiederherstellen von versionierten Text
Dateien– Git, svn, hg (Mercurial), ...
Einleitung
• Historie– Entwickler: Linus Torvalds– Maintainer: Junio Hamano (Stand 10/2014)
– Free and Open Source Software– Projekte: Linux Kernel, Git, Android, Eclipse, Debian, Perl,
Ruby on Rails, PostgreSQL, Gnome, KDE, Qt, X.org, . . .
• What is git?– 3-Buchstaben Wort das noch nicht unter Linux verwendet wird– Git = „Blödmann“ (britische Umgangssprache)– Dateisystem das (zuverlässig) die Historie speichert
+ loses, geschichtete Sammlung an kleinen Skripten= Verteiltes Versionskontrollsystem
Workflow
Local
Stage / IndexWorking Copy fetch
push
add commit
Repository
Repository
Repositorycheckout / reset
README
index
“fix docs”
Reise in das git Repository (…und zurück)blob
Hello Earth
blob
Hello World
blob
.PNG..IHDR..
blob
#!/bin/sh
blob
.PHONY: all
tree
tree
tree
tree
commit
“fix docs”
commit
“remove doc”
commit
“combine”
commit
“add docs”
commit
“tweak logo”
tree
refs/remotes/origin/master
refs/heads/greatdocs
refs/heads/master
refs/tags/v1.0
tag
“first rls”
HEA
D
src
doc
configure.sh
Makefile
README
logo.png
doc
doc/README
tweak logo
Reise in das git Repository (…und zurück)
commit
“fix docs”
commit
“combine”
commit
“add docs”
commit
“tweak logo”
refs/remotes/origin/master
refs/heads/greatdocs
refs/tags/v1.0
tag
“first rls”
HEA
D
doc
logo.png
a
d
c
e
b
greatdocs
origin/master
master
v1.0
fix docs
remove doc
combine
tweak logo
add docs
Try it
• http://try.github.io/• http://pcottle.github.io/learnGitBranching/• http://git-scm.com/book• http://git-scm.com/documentation
Common git commands
• % git add README
a
d
c
e
b
origin/master
v1.0
d’
e’master
Working Copy
PDF? See backup slides
f
Common git commands
• % git commit
a
d
c
e
b
origin/master
v1.0
d’
e’master
Working Copy
PDF? See backup slides
Common git commands
• % git commit --amend
a
d
c
e
b
origin/master
v1.0
d’
e’mastere’
Working Copy
PDF? See backup slides
f
Common git commands
• % git reset --hard e
a
d
c
e
b
origin/master
v1.0
d’
e’
master
Working Copy
PDF? See backup slides
f
Common git commands
• % git branch greatdocs e
a
d
c
e
b
origin/master
v1.0
d’
e’
master
Working Copy
greatdocs
PDF? See backup slides
f
Common git commands
• % git checkout greatdocs
a
d
c
e
b
origin/master
v1.0
d’
e’
master
Working Copy
greatdocs
master
greatdocs
PDF? See backup slides
Common git commands
• % git remote add origin /some/path/proj.git
a
d
c
b
v1.0
master
a
d
c
e
b
v1.0
mastere
local“origin”Working Copy
PDF? See backup slides
ee
Common git commands
• % git fetch origin master
a
d
c
b
v1.0
master
a
d
c
b
origin/master
v1.0
master
local“origin”Working Copy
PDF? See backup slides
ee
Common git commands
• % git push origin master:master
a
d
c
b
v1.0
master
a
d
c
b
origin/master
v1.0
master
“origin”localWorking Copy
PDF? See backup slides
Common git commands
• % git merge origin/master
a
d
c
e
b
origin/master
v1.0
d’
e’
m
master
Working Copy
PDF? See backup slides
• % git rebase origin/master
d’’
e’’
d
e
Common git commands
a
c
b
origin/master
v1.0
d’
e’master
Working Copy
NEVER REBASE A PUBLIC BRANCHPDF? See backup slides
Bestimmen einer Revision
• Vollständiger SHA1 Hashwertdae86e1950b1277e545cee180551750029cfe735
• Eindeutiger Präfix eines SHA1 Hashwertsdae86e
• Symbolischer Referenznamemaster(Suche in .git/master, refs/master, refs/(tags|heads|remotes)/master, refs/remotes/master/HEAD)
• git log --grep KEYWORD• Viele mehr... RTFM
Interfaces
git gui
Bewährtes Vorgehen• Zu aller erst: git konfigurieren
– git config --global user.name ”Mein Name”– git config --global user.email [email protected]– advice.detachedHead, rerere.enabled, …
• Richtlinien wie und was zu committen ist:– Möglichst oft
• Fehler schnell zu revidieren• Nicht warten bis der Code „fertig“ ist!
– Jeder Commit änder exakt eine Sache (keine “this changes everything”) – Der Code im Repository kompiliert– Jeder Branch/Tag hat einen Zweck und einen Besitzer
• Feature/Release/Version
– Jede Datei im Repository wird benötigt um das Projekt zu bauen • keine Objekt- oder Temp.-Dateien, etc...
– Jeder Commit hat eine klare, präzise Betreffzeile
Houston, we have a problem...
• Ungewollte Commits rückgängig machen:– HEAD auf früheren Commit setzen
• git reset --soft master^– Alles aus dem Index entfernen; HEAD auf früheren Commit setzen
• git reset master^– Alles aus dem Index entfernen; HEAD auf früheren Commit
setzen; Working-tree identisch zu neuen HEAD machen• git clean -fdx• git reset --hard master^
– Zu weit! Zurück in die Zukunft...• git clean -fdx• git reset --hard master@{19:45}
– Verdammt, der ganze Branch ist weg! Wühle durch den Müll...• git reflog | awk ’{print $1}’ | xargs gitk
Übung
1. Git Repository anlegen2. LaTeX Präsentation für Projektvorlschlag
darin erstellen
Präsentation:• max 5 min• max 5 Folien
Nächstes mal...
• Mechanik– Schneideverfahren (Lasercutter)– 2.5 D
Workflow, STL, GCODE, STEP, etc später...
Backup Slides
Git branch (bugfix)
• % git init• % git add FILE• % git commit
a master
Working Copy
Git branch (bugfix)
• % git commit• % git tag –a v1.0• % git branch bugFix
a
b v1.0master
Working Copy
bugFix
Git branch (bugfix)
• % git checkout bugFix• % git commit
a
d
b v1.0
master
Working Copy
bugFix
Git branch (bugfix)
• % git checkout master• % git commit
a
d
b v1.0
d’bugFix
Working Copy
master
Git branch (bugfix)
• % git checkout master• % git merge bugFix• % git commit
a
d
e
b v1.0
d’
master
Working Copy
bugFix