560 likes | 712 Views
DIY. Personal Fabrication Dokumentation. Juergen Eckert – Informatik 7. How to Get Started ? ( again ). Projekt überlegen kann man es bereits kaufen? → kein Projekt Related work Verwandte Arbeiten als Grundlage nutzen Durch Probleme/Herausforderungen lernen
E N D
DIY Personal Fabrication Dokumentation Juergen Eckert – Informatik 7
HowtoGetStarted? (again) • Projekt überlegen • kann man es bereits kaufen? → kein Projekt • Relatedwork • Verwandte Arbeiten als Grundlage nutzen • Durch Probleme/Herausforderungen lernen • Das Ziel nie aus den Augen verlieren • Dokumentieren!!!
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 • LamportTeX • LaTeX 2ε seit 1989
Publikations-Workflow • Autor verfasst Manuskript • Buch-Designer ent-scheidet über Layout • Setzer erhält Anweisungen • Autor verfasst Manuskript • LaTeX: Fachwissen -> log. Struktur (Befehle) • TeX Traditionell Automatisiert
Vor- und Nachteile • Wenige, leicht verständliche Befehle • Mathematische Formeln besonders einfach • Strukturen (z.B. Literaturverzeichnisse) wenig Aufwand • Aktualisieren von Querverweisen automatisch • Lange, 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 IntroductiontoLATEX2ε (V5.03 25.4.14)
Los geht‘s • doku.tex erstellen • > pdflatexdoku.texoder> latexmk –pvc –pdfdoku.tex(Autogenerierung) • Automatische Preview im Texteditor möglich z.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 inputfile \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
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} \toprule Wert & Zahlensystem \\ \midrule 7C0 & hexadezimal \\ 3700 & oktal \\ 11111000000 & binär \\ 1984 & dezimal \\ \bottomrule \end{tabular}
Mathematische Formlen • equationUmgebungoder $ ... $ \[ ... \]
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 ismyfirstslide. \end{frame} \begin{frame} This ismysecond (and last) slide. \end{frame} \end{document}
PGF/TikZ %\usepackage{tikz} \begin{tikzpicture} \node[draw,circle](a) {A}; \node[draw,circle,rightof=a, nodedistance=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… • cpsrc/models/network/ipv4.c src/models/network/ipv4.bak • cpsrc/models/transport/tcp.csrc/models/network/tcpip.westwood • Besser, aber immer noch schlecht… • cp -axsrcsrc.bak • cp –axsrcsrc.bak.old • Fast richtig… • cp -axproject project.2009-12-15 • cp -axproject project.2009-12-16 • cp -axproject 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 versioniertenText Dateien • Git, svn, hg (Mercurial), ...
Einleitung • Historie • Entwickler: Linus Torvalds • Maintainer: JunioHamano(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, . . . • Whatisgit? • 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 Repository Local push fetch Working Copy Stage / Index Repository add commit Repository checkout / reset
Reise in das git Repository (…und zurück) blob Hello Earth README doc/README tree blob Hello World README index “fix docs” doc commit “remove doc” commit “fix docs” tree refs/heads/master HEAD blob .PNG..IHDR.. doc refs/heads/greatdocs tree logo.png commit “combine” refs/remotes/origin/master tree blob #!/bin/sh configure.sh refs/tags/v1.0 src tweak logo tree tag “first rls” commit “add docs” commit “tweak logo” blob .PHONY: all Makefile
Reise in das git Repository (…und zurück) d greatdocs fix docs doc commit “fix docs” logo.png e master remove doc HEAD refs/heads/greatdocs c origin/master combine commit “combine” refs/remotes/origin/master b v1.0 tweaklogo refs/tags/v1.0 a adddocs tag “first rls” commit “add docs” commit “tweak logo”
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 Working Copy e e’ master origin/master d d’ c v1.0 b a PDF? See backupslides
Common git commands • % git commit Working Copy f e e’ master origin/master d d’ c v1.0 b a PDF? See backupslides
Common git commands • % git commit --amend Working Copy e e’ e’ master origin/master d d’ c v1.0 b a PDF? See backupslides
Common git commands • % git reset --hard e Working Copy f master e e’ origin/master d d’ c v1.0 b a PDF? See backupslides
Common git commands • % git branch greatdocs e Working Copy f master e e’ greatdocs origin/master d d’ c v1.0 b a PDF? See backupslides
Common git commands • % git checkout greatdocs Working Copy f master master e e’ greatdocs greatdocs origin/master d d’ c v1.0 b a PDF? See backupslides
Common git commands • % git remote add origin /some/path/proj.git Working Copy “origin” local e e master d d master c c v1.0 v1.0 b b a a PDF? See backupslides
Common git commands • % git fetch origin master Working Copy “origin” local e e origin/master master d d master c c v1.0 v1.0 b b a a PDF? See backupslides
Common git commands • % git push origin master:master Working Copy local “origin” e e master d d master origin/master c c v1.0 v1.0 b b a a PDF? See backupslides
Common git commands • % git merge origin/master Working Copy m e e’ master origin/master d d’ c v1.0 b a PDF? See backupslides
Common git commands • % git rebase origin/master Working Copy e’’ e’ master origin/master e d’’ d’ d c v1.0 b a NEVER REBASE A PUBLIC BRANCH PDF? See backupslides
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
Bewährtes Vorgehen • Zu aller erst: git konfigurieren • gitconfig --global user.name ”Mein Name” • gitconfig --global user.emailmy.name@example.com • advice.detachedHead, rerere.enabled, … • Richtlinien wie und was zu committenist: • Möglichst oft • Fehler schnell zu revidieren • Nicht warten bis der Code „fertig“ ist! • Jeder Commit änder exakt eine Sache(keine “thischangeseverything”) • 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, wehave a problem... • Ungewollte Commits rückgängig machen: • HEAD auf früheren Commit setzen • gitreset --soft master^ • Alles aus dem Index entfernen; HEAD auf früheren Commit setzen • gitresetmaster^ • Alles aus dem Index entfernen; HEAD auf früheren Commit setzen; Working-tree identisch zu neuen HEAD machen • git clean -fdx • gitreset --hardmaster^ • Zu weit! Zurück in die Zukunft... • git clean -fdx • gitreset --hardmaster@{19:45} • Verdammt, der ganze Branch ist weg! Wühle durch den Müll... • gitreflog | awk ’{print $1}’ | xargsgitk
Übung • Git Repository anlegen • 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...