docs/gimme-shellter

view GimmeShellter.tex @ 11:71ca21c937d1

small fix
author meillo@marmaro.de
date Wed, 12 Dec 2007 13:11:00 +0100
parents e50c493cf700
children
line source
1 % @file
2 % @brief Vortrag: Mein Umzug in die Shell
3 % @author markus schnalke <meillo@marmaro.de>
4 % @since 2007-09-25
7 \documentclass{beamer}
9 \usepackage[utf8]{inputenc}
10 \usepackage{ngerman}
11 \usepackage{graphicx}
12 \usepackage[automark]{scrpage2}
14 \title{Gimme Shell(ter)}
15 \author{markus schnalke}
16 \date{2007-12-11}
18 \begin{document}
21 \frame{
22 \vspace{8em}
23 \begin{center}
24 {\huge Gimme Shell}{\tiny (ter)}
26 {Mein Umzug in die Shell}
28 \vspace{6em}
30 { \tiny
31 markus schnalke \textless{}meillo@marmaro.de\textgreater{}
32 }
35 \end{center}
36 }
42 \section{Vorwort}
43 \frame{ \frametitle{Vorwort}
45 \begin{block}{}
46 Dass meine Zukunft in der Shell stattfinden soll, war mir schon lange klar.
47 \end{block}
49 \begin{block}{}
50 Bis ich jedoch soweit war, war es ein langer Weg.
51 \end{block}
53 \begin{block}{}
54 Und keinesfalls möchte ich behaupten, dass ich am Ziel wäre, denn es gibt kein Ziel. Es gibt nur vorwärts.
55 \end{block}
57 }
61 \section{Ziele}
62 \frame{ \frametitle{Ziele}
63 Dieser Vortrag soll zeigen, dass man auch ohne X komfortabel arbeiten kann.
65 \vspace{1em}
66 \pause
68 Ich möchte die ``Angst'' vor der textbasierten Benutzerschnittstelle nehmen. Auch will ich hierzu Einstiegshilfen geben.
70 \vspace{1em}
71 \pause
73 Ich möchte motivieren, mal Urlaub in der Shell zu machen.
75 \vspace{1em}
76 \pause
78 Es soll klar werden, dass und warum Kommandozeilenprogramme oft besser als ihre grafischen Pendants sind.
80 \vspace{1em}
81 \pause
83 Und als zentrales Ziel soll dieser Vortrag Gründe darstellen, weshalb es sich lohnt, in die Shell umzuziehen.
84 }
89 \section{Motivation}
90 \frame{ \frametitle{Motivation}
91 \begin{itemize}
92 \item Weil es cool ist {\scriptsize \textit{*hehe*}}
93 \end{itemize}
94 \pause
95 \begin{itemize}
96 \item effektiveres Arbeiten möglich
97 \item konfigurierbarer
98 \item ressourcenschonender
99 \end{itemize}
100 \pause
101 \begin{itemize}
102 \item Vorteile von \texttt{screen}
103 \item \texttt{ssh} von überall
104 \item auch ohne \texttt{X} daheim
105 \end{itemize}
107 \pause
108 \begin{block}{}
109 \textbf{Konzentration auf das Wesentliche!}
111 Näher an der UNIX-Philosophie
112 \end{block}
113 }
117 \part{UNIX}
118 \frame{
119 \vspace{20ex}
120 \centerline{ \huge UNIX }
121 \vspace{16ex}
122 { \tiny UNIX is a registered trademark of The Open Group. }
124 }
127 \section{Die UNIX-Philosophie}
128 \frame{ \frametitle{Die UNIX-Philosophie}
129 \begin{block}{}
130 DER Grund UNIX zu verwenden
132 ``Pro UNIX'' statt ``Anti Windows''
133 \end{block}
135 \pause
137 \begin{block}{}
138 Welche wirklichen Vorteile bietet Gnome gegenüber der Windows-Oberfläche?
140 \vspace{0.3em}
142 Richtig, keine!
144 \vspace{0.3em}
146 An der Basis seid ihr zu UNIX gewechselt, weshalb denn nicht auch an der Oberfläche? \\
147 \pause
148 Oder: \textit{An der Oberfläche seid ihr zu UNIX gewechselt, weshalb denn nicht auch an der Basis?}
149 \end{block}
151 \pause
153 \begin{block}{}
154 UNIX ist mehr als Ubuntu!
156 \textbf{Um UNIX zu verstehen, muss man seine Philosophie kennen!}
157 \end{block}
158 }
162 \frame{ \frametitle{Die UNIX-Philosophie}
163 \begin{itemize}
164 \item klein ist schön
165 \item genau eine Sache gut machen
166 \item früher Prototyp
167 \item Portabilität vor Effizienz
168 \item Daten in ASCII-Files speichern
169 \item Code borgen
170 \item alles automatisieren
171 \item CLI statt GUI
172 \item Programme als Filter
173 \end{itemize}
175 \pause
177 \begin{block}{siehe auch}
178 \begin{itemize}
179 \item Mike Gancarz
180 \item Rob Pike
181 \item http://harmful.cat-v.org/cat-v/
182 \item Plan9
183 \end{itemize}
184 \end{block}
185 }
190 \section{GUI vs. CLI}
191 \frame{ \frametitle{GUI vs. CLI}
192 \begin{block}{GUI-Programme \dots}
193 \begin{itemize}
194 \item haben hässlichen Code
195 \item sind aufgebläht
196 \item schränken ein
197 \item laufen nur mit X
198 \end{itemize}
199 \end{block}
201 \pause
203 \begin{block}{CLI-Programme \dots}
204 \begin{itemize}
205 \item sind kleiner
206 \item sind besser konfigurierbar
207 \item sind älter und ausgereifter
208 \item sind portabler (und damit auch öfter portiert)
209 \end{itemize}
210 \end{block}
212 \pause
214 { \scriptsize (Natürlich gilt das nicht zwangsläufig, die Wahrscheinlichkeit ist aber groß.) }
215 }
218 \subsection{CURSES}
219 \frame{ \frametitle{CURSES}
220 \begin{block}{CLI, TUI, GUI}
221 \begin{itemize}
222 \item CLI: \texttt{cat cli.txt | mail -s CLI lugu}
223 \item TUI: \texttt{mutt}
224 \item GUI: \texttt{Menu \textgreater{} Applications \textgreater{} Evolution}
225 \end{itemize}
226 \end{block}
228 \pause
230 \begin{block}{CURSES}
231 \begin{itemize}
232 \item CURSES ist \emph{nicht} CLI
233 \item sondern Text User Interface
234 \item Ich bin hier nicht immer ganz korrekt
235 \item CURSES gehört aber auch zur Shell
236 \end{itemize}
237 \end{block}
238 }
242 \subsection{GUIs als Frontend}
243 \frame{ \frametitle{GUIs als Frontend}
245 \begin{block}{}
246 GUIs sollen laut UNIX-Philosophie nur Frontends sein.
247 \end{block}
249 \pause
251 \begin{block}{Beispiele}
252 \begin{itemize}
253 \item Programm: \texttt{nmap}
254 \item Frontends: \texttt{nmapfe} (GTK), \texttt{knmap} (Qt)
255 \end{itemize}
257 \begin{itemize}
258 \item Programm: \texttt{libparted}
259 \item Frontends: \texttt{parted} (curses), \texttt{gparted} (GTK), \texttt{qtparted} (Qt)
260 \end{itemize}
261 \end{block}
262 }
266 \subsection{Größe von User-Interfaces}
267 \frame{ \frametitle{Größe von User-Interfaces}
270 { \scriptsize
271 \begin{itemize}
272 \item Package: \textbf{libparted1.7-1}
273 \item Size: 198,554
274 \item Depends: libc6 ($>$= 2.3.6-6), libuuid1
275 \end{itemize}
276 }
278 \pause
281 { \scriptsize
282 \begin{itemize}
283 \item Package: \textbf{parted}
284 \item Size: 56,268
285 \item Depends: libc6 ($>$= 2.3.6-6), libncurses5 ($>$= 5.4-5), libparted1.7-1 ($>$= 1.7.1-1), libreadline5 ($>$= 5.2)
286 \end{itemize}
287 }
289 \pause
291 { \scriptsize
292 \begin{itemize}
293 \item Package: \textbf{gparted}
294 \item Size: 452,616
295 \item Depends: libatk1.0-0 ($>$= 1.12.2), libc6 ($>$= 2.3.6-6), libcairo2 ($>$= 1.2.4), libfontconfig1 ($>$= 2.3.0), libfreetype6 ($>$= 2.2), libgcc1 ($>$= 1:4.1.1-12), libglib2.0-0 ($>$= 2.10.0), libglibmm-2.4-1c2a, libgtk2.0-0 ($>$= 2.8.0), libgtkmm-2.4-1c2a, libice6 ($>$= 1:1.0.0), libpango1.0-0 ($>$= 1.12.3), libparted1.7-1 ($>$= 1.7.1-1), libpng12-0 ($>$= 1.2.8rel), libsigc++-2.0-0c2a ($>$= 2.0.2), libsm6, libstdc++6 ($>$= 4.1.1-12), libuuid1, libx11-6, libxcursor1 ($>$$>$ 1.1.2), libxext6, libxfixes3, libxi6, libxinerama1, libxrandr2, libxrender1, zlib1g ($>$= 1:1.2.1), gksu, menu
296 \end{itemize}
297 }
298 }
303 \section{Programme vergleichen}
304 \frame{ \frametitle{Programme vergleichen}
305 \begin{block}{Weshalb die Programmgröße beachten?}
306 \begin{itemize}
307 \item Kleine Programme sind: flexibler, portabler, einfacher zu verstehen, bugfreier (vgl. UNIX-Philosophie)
308 \item Die Paketgröße gibt indirekt Aufschluss auf den Codeumfang
309 \item Der Codeumfang im Verhältnis zu den Features wirft Überlegungen zur Qualität des Codes auf
310 \end{itemize}
311 \end{block}
313 \begin{block}{}
314 Dies ist nur als Anhaltspunkt zu sehen!
315 \end{block}
316 }
320 \subsection{Messmethoden}
321 \frame{ \frametitle{Messmethoden}
322 \begin{block}{Paketgröße}
323 \begin{itemize}
324 \item \texttt{apt-cache show \textless{}paket\textgreater{} | grep \^{}Size}
325 \item einfach auszulesen
326 \item Problem: Dokumentation ist oft auch im Paket enthalten
327 \end{itemize}
328 \end{block}
330 \pause
332 \begin{block}{Source-Filesizes}
333 \begin{itemize}
334 \item \texttt{du -c *.[ch]} (je nach Sprache)
335 \item Quellcode muss vorliegen (\texttt{apt-get source})
336 \item Problem: \texttt{\{} vs. \texttt{begin}
337 \end{itemize}
338 \end{block}
340 \pause
342 \begin{block}{Source Lines Of Code}
343 \begin{itemize}
344 \item \texttt{sloccount} von David A. Wheeler
345 \item Sprachen werden ``gleicher bewertet''
346 \end{itemize}
347 \end{block}
348 }
352 \part{Die Shell und ich}
353 \frame{
354 \vspace{8ex}
355 \centerline{ \huge Die Shell und ich }
356 }
361 \section{Mein Weg}
362 \frame{ \frametitle{Mein Weg}
363 \begin{block}{2005}
364 Fluxbox, Firefox, Kate, Sylpheed Claws, gFTP, Gaim, vlc, k3b, gThumb, OOo, Grip, XMMS, \dots
365 \end{block}
367 \pause
369 \begin{block}{2006}
370 Auslöser:\\
371 Artikel ``Mein Umzug in die Shell'' von Gregor Oelze auf linuxlog
372 \end{block}
374 \pause
376 \begin{block}{2007}
377 dwm + \textit{screen}, Iceweasel + \textit{w3m}, \textit{vim}, \textit{mutt}, \textit{ncftp}, \textit{weechat + bitlbee}, mplayer, \textit{wodim + growisofs}, gqview + qiv, OOo, \textit{jack}, \textit{cplay}, \dots
378 \end{block}
380 \pause
382 \begin{block}{}
383 {\scriptsize Nachzulesen auf http://marmaro.de/lue }
384 \end{block}
385 }
388 \section{Programme}
390 \subsection{Editor}
391 \frame{ \frametitle{Editor}
392 \begin{block}{vi(m)}
393 \begin{itemize}
394 \item Der Editor schlechthin
395 \item Auf jedem UNIX-System vorhanden
396 \item meist in Form eines Klons
397 \item darf ruhig angepasst werden: \texttt{.vimrc}
398 \item Die meisten User verwenden viel zu wenige seiner Möglichkeiten!
399 \end{itemize}
400 \end{block}
402 \pause
404 \begin{block}{Alternativen}
405 \begin{itemize}
406 \item \texttt{vim} (7350k) Der bekannteste (und beste?) vi-Klon.
407 \item \texttt{nvi} (290k) Reimplementierung des orginal vi. Weniger Features; u.a. kein Syntax-Highlighting.
408 \item \texttt{emacs} (5.89e37) \dots
409 \end{itemize}
410 \end{block}
411 }
415 \subsection{Mailclient}
416 \frame{ \frametitle{Mailclient}
417 \begin{block}{mutt}
418 \begin{itemize}
419 \item ``The mail client, that sucks less''
420 \item sehr konfigurierbar
421 \item Kombination mit \texttt{fetchmail}, \texttt{procmail}, \texttt{masqmail}
422 \item Debian-Paket: 1810k
423 \end{itemize}
424 \end{block}
426 \pause
428 \begin{block}{Alternativen}
429 \begin{itemize}
430 \item \texttt{mailx} (155k) einfaches Mailprogramm
431 \item \texttt{pine} (4M) (nur als Source-Paket verfügbar)
432 \item \texttt{mutt-ng} (1790k) Neue Features für mutt (tot?)
433 \end{itemize}
434 \end{block}
435 }
439 \subsection{Browser}
440 \frame{ \frametitle{Browser}
441 \begin{block}{w3m}
442 \begin{itemize}
443 \item Textbrowser
444 \item hat Caret-Navigation
445 \item kein JavaScript
446 \item Inline-Bilder mit \texttt{w3m-img}
447 \item Debian-Paket: 1100k
448 \end{itemize}
449 \end{block}
451 \pause
453 \begin{block}{Alternativen}
454 \begin{itemize}
455 \item \texttt{lynx} (1860k) der Dinosaurier
456 \item \texttt{links} (380k) lynx-Klon
457 \item \texttt{elinks} (1190k) hat auch JavaScript-Unterstützung
458 \item \texttt{links2} (2080k) bietet textuellen und grafischen Modus
459 \item \texttt{dillo} (360k) rein grafisch, layoutet aber wie Textbrowser
460 \end{itemize}
461 \end{block}
462 }
466 \subsection{Musikplayer}
467 \frame{ \frametitle{Musikplayer}
468 \begin{block}{cplay}
469 \begin{itemize}
470 \item Frontend für mpg123, ogg123, \dots
471 \item sehr simpel, aber meist ausreichend
472 \item vi-like Bedienung
473 \item Remote-Control via FIFO
474 \item Debian-Paket: 41k
475 \end{itemize}
476 \end{block}
478 \pause
480 \begin{block}{Alternativen}
481 \begin{itemize}
482 \item \texttt{moc} (190k) sehr einfach, etwas instabil
483 \item \texttt{cmus} (124k) sehr featurereich
484 \item \texttt{mpd+ncmpc} (127k+85k) Client-Server-Architektur
485 \end{itemize}
486 \end{block}
487 }
491 \subsection{Filemanager}
492 \frame{ \frametitle{Filemanager}
493 \begin{block}{coreutils}
494 \begin{itemize}
495 \item cd, mv, cp, rm, mkdir, rmdir, \dots
496 \item man braucht eine gewisse Übersicht im Filesystem
497 \item letztendlich aber einfach am schnellsten
498 \item überall vorhanden
499 \end{itemize}
500 \end{block}
502 \pause
504 \begin{block}{Alternativen}
505 \begin{itemize}
506 \item \texttt{mc} (2140k) Alleskönner mit schrecklicher Bedienung
507 \item \texttt{vifm} (63k) \texttt{mc} mit vi-Bedienung; noch zu wenige Features
508 \end{itemize}
509 \end{block}
510 }
514 \subsection{FTP-Client}
515 \frame{ \frametitle{FTP-Client}
516 \begin{block}{ncftp}
517 \begin{itemize}
518 \item toller FTP-Client
519 \item hatte nur früher ein curses-Interface (\texttt{ncftp2})
520 \item ncftpget, ncftpput, \dots
521 \item Debian-Paket: 500k
522 \end{itemize}
523 \end{block}
525 \pause
527 \begin{block}{Alternativen}
528 \begin{itemize}
529 \item \texttt{ftp} (50k) wenig Komfort
530 \item \texttt{lftp} (540k) (kenne ich leider nicht)
531 \item \texttt{mc} (2140k) er kann auch ftp
532 \end{itemize}
533 \end{block}
534 }
538 \subsection{Chatten}
539 \frame{ \frametitle{Chatten}
540 \begin{block}{weechat-curses}
541 \begin{itemize}
542 \item ein IRC-Client
543 \item ``\texttt{irssi} von Grund auf neu''
544 \item Debian-Paket: 580k
545 \end{itemize}
546 \end{block}
548 \pause
550 \begin{block}{Alternativen}
551 \begin{itemize}
552 \item \texttt{irssi} (1060k) populärer IRC-Client
553 \item \texttt{sic} (6k) liest stdin, schreibt stdout
554 \item \texttt{centericq} (1260k) sehr bekannter ICQ-Client
555 \end{itemize}
556 \end{block}
558 \pause
560 \begin{block}{bitlbee}
561 \begin{itemize}
562 \item bitlbee ist ein IM-to-IRC-Gateway
563 \item IRC-Client für ICQ und Jabber verwenden
564 \item Debian-Paket: 315k
565 \end{itemize}
566 \end{block}
567 }
571 \subsection{Framebuffer}
572 \frame{ \frametitle{Framebuffer}
573 \begin{block}{fbi}
574 \begin{itemize}
575 \item \texttt{fbi} zeigt Bilder im Framebuffer
576 \item \texttt{fbgs} zeigt PDF- und PS-Dokumente im Framebuffer
577 \item Debian-Paket: 54k (enthält \texttt{fbgs})
578 \end{itemize}
579 \end{block}
581 \pause
583 \begin{block}{mplayer}
584 \begin{itemize}
585 \item \texttt{mplayer -vo fbdev} zeigt Filme im Framebuffer
586 \item kann auch über libaa, libcaca und Ähnliches ausgeben
587 \item Debian-Paket: 4400k
588 \end{itemize}
589 \end{block}
591 }
595 \subsection{screen}
596 \frame{ \frametitle{screen}
597 \begin{block}{screen}
598 \begin{itemize}
599 \item Terminal-Multiplexer
600 \item ein \texttt{must-have} für Shelluser
601 \item Nur noch ein Terminal nötig (ssh)
602 \item Arbeit an beliebiger Stelle unterbrechen und später genau dort fortsetzen
603 \item Wer einmal damit gearbeitet hat kommt nicht mehr davon los!
604 \item Debian-Paket: 590k
605 \end{itemize}
606 \end{block}
608 \pause
610 \begin{block}{Alternativen}
611 \begin{itemize}
612 \item \texttt{dtach} bietet detach-Feature von \texttt{screen}
613 \end{itemize}
614 \end{block}
615 }
619 \section{Remote arbeiten}
620 \frame{ \frametitle{Remote arbeiten}
621 \begin{block}{Server}
622 \begin{itemize}
623 \item Ein Server ist etwas sehr Tolles!
624 \item per dyndns.org aus dem Internet erreichbar
625 \item Upload-Bandbreite sollte nicht zu dünn sein
626 \item (64k sind etwas wenig *heul*)
627 \item Zugang per ssh
628 \end{itemize}
629 \end{block}
631 \pause
633 \begin{block}{Client}
634 \begin{itemize}
635 \item nur Internet und offener Port nötig
636 \item für Windows: PuTTY (gibt's auch für den USB-Stick)
637 \end{itemize}
638 \end{block}
639 }
642 \frame{ \frametitle{Remote arbeiten}
643 \begin{block}{Vorteile}
644 \begin{itemize}
645 \item weniger Wartungs- und Konfigurationsaufwand
646 \item einfache Datensicherung
647 \item von überall im eigenen System arbeiten
648 \end{itemize}
649 \end{block}
651 \pause
653 \begin{block}{Nachteile}
654 \begin{itemize}
655 \item Dateitransfers zum Client nötig
656 \item u.U. etwas lahm
657 \item nicht überall ist ssh erlaubt
658 \end{itemize}
659 \end{block}
660 }
665 \part{dwm}
666 \frame{
667 \vspace{8ex}
668 \centerline{ \huge dwm }
669 }
672 \section{Window-Manager}
673 \frame{ \frametitle{Window-Manager}
674 \begin{block}{dwm}
675 \begin{itemize}
676 \item dynamic window manager
677 \item seit Juli 2006
678 \item von Anselm R. Garbe (wmii)
679 \item http://dwm.suckless.org
680 \item Debian-Paket: 20k
681 \end{itemize}
682 \end{block}
684 \pause
686 \begin{block}{Alternativen}
687 \begin{itemize}
688 \item \texttt{larswm} (110k) hatte Einfluss auf dwm
689 \item \texttt{ratpoison} (170k) soll zu \texttt{screen} passen
690 \item \texttt{ion2} (330k) bekannt für seine Tastatursteuerung
691 \item \texttt{icewm} (700k) wird oft als sehr kleiner ``herkömmlicher'' WM aufgeführt
692 \end{itemize}
693 \end{block}
694 }
699 \frame{ \frametitle{dwm}
700 \begin{block}{Features}
701 \begin{itemize}
702 \item minimalistisch, nur das Nötig(st)e
703 \item Tagging statt Workspaces
704 \item Konfiguration durch Quellcode editieren und neu kompilieren
705 \item Quellcode kann an einem Abend verstanden werden
706 \item aktive Entwicklung
707 \end{itemize}
708 \end{block}
710 \pause
712 \begin{block}{Ziele}
713 \begin{itemize}
714 \item 2kLOC
715 \item portables C
716 \item guter Code (Refactoring)
717 \item sehr standardkonform (aber: broken apps)
718 \item Erweiterung mit Patches
719 \end{itemize}
720 \end{block}
721 }
726 \section{suckless-Projekt}
727 \frame{ \frametitle{suckless-Projekt}
728 \begin{block}{Community}
729 \begin{itemize}
730 \item http://suckless.org
731 \item kleine aktive Community
732 \item Patches als fester Bestandteil
733 \item Mailingliste ist Pflicht
734 \item einfach mitmachen!
735 \end{itemize}
736 \end{block}
738 \pause
740 \begin{block}{Mein dwm}
741 \begin{itemize}
742 \item ein Patchset
743 \item http://prog.marmaro.de/dwm-meillo
744 \end{itemize}
745 \end{block}
746 }
750 \part{Abschluss}
751 \frame{
752 \vspace{8ex}
753 \centerline{ \huge Abschluss }
754 }
758 \section{Soll erfüllt?}
759 \frame{ \frametitle{Soll erfüllt?}
760 Es sollte klar geworden sein, dass man auch ohne X komfortabel arbeiten kann.
762 \pause
763 \vspace{1em}
765 Ich habe Einstiegshilfen gegeben und hoffentlich die ``Angst'' vor der textbasierten Benutzerschnittstelle genommen.
767 \pause
768 \vspace{1em}
770 Jetzt sollte eigentlich jeder von euch dabei sein, einen Ausflug in die Shell zu planen.
772 \pause
773 \vspace{1em}
775 Weshalb die Shell wirklich besser ist, als die grafische Oberfläche, das kann man nur für sich selbst herausfinden \dots
776 }
782 \section{Zusammenfassung}
783 \frame{ \frametitle{Zusammenfassung}
785 Die Shell ist die grundlegende Kommunikationsschnittstelle zum Rechner.
786 Keine GUI ist so mächtig wie die Shell.
788 \pause
789 \vspace{1em}
791 UNIX und die Shell sind wie Yin und Yang.
793 \pause
794 \vspace{1em}
796 Man versteht die Shell erst, wenn man UNIX versteht --- UNIX zu verstehen, heißt seine Philosophie zu verstehen.
798 \pause
799 \vspace{1em}
801 Der entscheidende Teil meines Vortrags ist die UNIX-Philosophie. Versteht man diese, so versteht man was ich meine.
802 Findet man aber nicht seinen Weg zu ihr, so wird man kaum verstehen, um was es hier geht.
804 \pause
805 \vspace{1em}
807 Die Konzepte hinter UNIX haben mich vollkommen überzeugt.
809 \dots und es war eine der besten Entscheidungen meines Lebens, nach ihnen zu leben!
811 }
816 \section{Links}
817 \frame{ \frametitle{Links auf einen Blick}
818 \begin{itemize}
819 \item http://dwm.suckless.org (Website des dwm)
820 \item http://harmful.cat-v.org/cat-v/ (Website von Uriel)
821 \item http://marmaro.de/lue (Mein Computer-Tagebuch)
822 \item http://pimpmyshell.de (Projekt von Gregor Oelze)
823 \item http://prog.marmaro.de/dwm-meillo (Mein dwm-Patchset)
824 \item http://suckless.org (Software which sucks less)
825 \item http://www.cs.bell-labs.com/plan9/ (Das bessere UNIX!?)
826 \end{itemize}
828 \pause
830 \begin{block}{unbedingt lesen!}
831 \textbf{The Command Line --- The Best Newbie Interface}
833 {\scriptsize http://osnews.com/story.php/6282/The-Command-Line--The-Best-Newbie-Interface }
834 \end{block}
835 }
840 \section{Danke}
841 \frame{% \frametitle{Abschließend}
842 \begin{block}{Verwendete Software}
843 \begin{itemize}
844 \item Debian GNU/Linux
845 \item \LaTeX-Beamer und \texttt{pdflatex}
846 \item Vim
847 \item qiv und ImageMagick
848 \item Mercurial
849 \end{itemize}
850 \end{block}
852 \pause
854 \begin{block}{}
855 \vspace{3ex}
856 \centerline{\textbf{Danke für eure Aufmerksamkeit}}
857 \vspace{7ex}
858 \end{block}
860 \pause
862 {\scriptsize Den Vortrag gibt's online auf http://marmaro.de/docs \hfill 2007-12-11 }
863 }
866 \end{document}