docs/gimme-shellter

view GimmeShellter.tex @ 5:52725a5ea7d9

added extract-urls.sh; rewrote summary; some minor changes
author meillo@marmaro.de
date Thu, 06 Dec 2007 21:16:19 +0100
parents 3f0be9972d35
children e50c493cf700
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{}
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 }
90 % \centerline{ \includegraphics[width=20em]{pics/observer_big.png} }
94 \section{Motivation}
95 \frame{ \frametitle{Motivation}
96 \begin{itemize}
97 \item Weil es cool ist {\scriptsize \textit{*hehe*}}
98 \end{itemize}
99 \pause
100 \begin{itemize}
101 \item effektiveres Arbeiten möglich
102 \item konfigurierbarer
103 \item ressourcenschonender
104 \end{itemize}
105 \pause
106 \begin{itemize}
107 \item Vorteile von \texttt{screen}
108 \item \texttt{ssh} von überall
109 \item auch ohne \texttt{X} daheim
110 \end{itemize}
112 \pause
113 \begin{block}{}
114 \textbf{Konzentration auf das Wesentliche!}
116 Näher an der UNIX-Philosophie
117 \end{block}
118 }
124 \section{Die UNIX-Philosophie}
125 \frame{ \frametitle{Die UNIX-Philosophie}
126 \begin{block}{}
127 DER Grund UNIX$^{\dagger}$ zu verwenden
129 ``Pro UNIX'' statt ``Anti Windows''
130 \end{block}
132 \pause
134 \begin{block}{}
135 Welche wirklichen Vorteile bietet Gnome gegenüber der Windows-Oberfläche?
137 \vspace{0.3em}
139 Richtig, keine!
141 \vspace{0.3em}
143 An der Basis seid ihr zu UNIX gewechselt, weshalb denn nicht auch an der Oberfläche? \\
144 \pause
145 Oder: \textit{An der Oberfläche seid ihr zu UNIX gewechselt, weshalb denn nicht auch an der Basis?}
146 \end{block}
148 \pause
150 \begin{block}{}
151 UNIX ist mehr als Ubuntu!
153 \textbf{Um UNIX zu verstehen, muss man seine Philosophie kennen!}
154 \end{block}
155 }
159 \frame{ \frametitle{Die UNIX-Philosophie}
160 \begin{itemize}
161 \item klein ist schön
162 \item genau eine Sache gut machen
163 \item früher Prototyp
164 \item Portabilität vor Effizienz
165 \item Daten in ASCII-Files speichern
166 \item Code borgen
167 \item alles automatisieren
168 \item CLI statt GUI
169 \item Programme als Filter
170 \end{itemize}
172 \pause
174 \begin{block}{siehe auch}
175 \begin{itemize}
176 \item
177 \item http://cat-v.org
178 \item Rob Pike
179 \end{itemize}
180 \end{block}
181 }
186 \section{GUI vs. CLI}
187 \frame{ \frametitle{GUI vs. CLI}
188 \begin{block}{GUI-Programme \dots}
189 \begin{itemize}
190 \item haben hässlichen Code
191 \item sind aufgebläht
192 \item schränken ein
193 \item laufen nur mit X
194 \end{itemize}
195 \end{block}
197 \pause
199 \begin{block}{CLI-Programme \dots}
200 \begin{itemize}
201 \item sind kleiner
202 \item sind besser konfigurierbar
203 \item sind älter und ausgereifter
204 \item sind portabler (und damit auch öfter portiert)
205 \end{itemize}
206 \end{block}
208 \pause
210 { \scriptsize (Natürlich gilt das nicht zwangsläufig, die Wahrscheinlichkeit ist aber groß.) }
211 }
214 \subsection{CURSES}
215 \frame{ \frametitle{CURSES}
216 \begin{block}{CLI, TUI, GUI}
217 \begin{itemize}
218 \item CLI: \texttt{cat cli.txt | mail -s CLI lugu}
219 \item TUI: \texttt{mutt}
220 \item GUI: \texttt{Menu \textgreater{} Applications \textgreater{} Evolution}
221 \end{itemize}
222 \end{block}
224 \begin{block}{CURSES}
225 \begin{itemize}
226 \item CURSES ist \emph{nicht} CLI
227 \item sondern Text User Interface
228 \item Ich bin hier nicht immer ganz korrekt.
229 \item Aber CURSES gehört auch zur Shell.
230 \end{itemize}
231 \end{block}
232 }
236 \subsection{GUIs als Frontend}
237 \frame{ \frametitle{GUIs als Frontend}
239 \begin{block}{}
240 GUIs sollen laut UNIX-Philosophie nur Frontends sein.
241 \end{block}
243 \pause
245 \begin{block}{Beispiele}
246 \begin{itemize}
247 \item Programm: \texttt{nmap}
248 \item Frontends: \texttt{nmapfe} (GTK), \texttt{knmap} (Qt)
249 \end{itemize}
251 \begin{itemize}
252 \item Programm: \texttt{libparted}
253 \item Frontends: \texttt{parted} (curses), \texttt{gparted} (GTK), \texttt{qtparted} (Qt)
254 \end{itemize}
255 \end{block}
256 }
260 \subsection{Größe von User-Interfaces}
261 \frame{ \frametitle{Größe von User-Interfaces}
264 { \scriptsize
265 \begin{itemize}
266 \item Package: \textbf{libparted1.7-1}
267 \item Size: 198,554
268 \item Depends: libc6 ($>$= 2.3.6-6), libuuid1
269 \end{itemize}
270 }
272 \pause
275 { \scriptsize
276 \begin{itemize}
277 \item Package: \textbf{parted}
278 \item Size: 56,268
279 \item Depends: libc6 ($>$= 2.3.6-6), libncurses5 ($>$= 5.4-5), libparted1.7-1 ($>$= 1.7.1-1), libreadline5 ($>$= 5.2)
280 \end{itemize}
281 }
283 \pause
285 { \scriptsize
286 \begin{itemize}
287 \item Package: \textbf{gparted}
288 \item Size: 452,616
289 \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
290 \end{itemize}
291 }
292 }
297 \section{Programme vergleichen}
298 \frame{ \frametitle{Programme vergleichen}
299 \begin{block}{Weshalb die Programmgröße beachten?}
300 \begin{itemize}
301 \item Kleine Programme sind: flexibler, portabler, einfacher zu verstehen, bugfreier (vgl. UNIX-Philosophie)
302 \item Die Paketgröße gibt indirekt Aufschluss auf den Codeumfang
303 \item Der Codeumfang im Verhältnis zu den Features wirft Überlegungen zur Qualität des Codes auf
304 \end{itemize}
305 \end{block}
307 \begin{block}{}
308 Dies ist nur als Anhaltspunkt zu sehen!
309 \end{block}
310 }
314 \subsection{Messmethoden}
315 \frame{ \frametitle{Messmethoden}
316 \begin{block}{Paketgröße}
317 \begin{itemize}
318 \item \texttt{apt-cache show \textless{}paket\textgreater{} | grep \^{}Size}
319 \item einfach auszulesen
320 \item Problem: Dokumentation ist oft auch im Paket enthalten
321 \end{itemize}
322 \end{block}
324 \pause
326 \begin{block}{Source-Filesizes}
327 \begin{itemize}
328 \item \texttt{du -c *.[ch]} (je nach Sprache)
329 \item Quellcode muss vorliegen (\texttt{apt-get source})
330 \item Problem: \texttt{\{} vs. \texttt{begin}
331 \end{itemize}
332 \end{block}
334 \pause
336 \begin{block}{Source Lines Of Code}
337 \begin{itemize}
338 \item \texttt{sloccount} von David A. Wheeler
339 \item Sprachen werden ``gleicher bewertet''
340 \end{itemize}
341 \end{block}
342 }
349 \section{Mein Weg}
350 \frame{ \frametitle{Mein Weg}
351 \begin{block}{2005}
352 Fluxbox, Firefox, Kate, Sylpheed Claws, gFTP, Gaim, vlc, k3b, gThumb, OOo, Grip, XMMS, \dots
353 \end{block}
355 \pause
357 \begin{block}{2006}
358 Auslöser:\\
359 Artikel ``Mein Umzug in die Shell'' von Gregor Oelze auf linuxlog
360 \end{block}
362 \pause
364 \begin{block}{2007}
365 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
366 \end{block}
368 \pause
370 \begin{block}{}
371 {\scriptsize Nachzulesen auf http://marmaro.de/lue }
372 \end{block}
373 }
376 \section{Programme}
378 \subsection{Editor}
379 \frame{ \frametitle{Editor}
380 \begin{block}{vi(m)}
381 \begin{itemize}
382 \item Der Editor schlechthin
383 \item Auf jedem UNIX-System vorhanden
384 \item meist in Form eines Klons
385 \item darf ruhig angepasst werden: \texttt{.vimrc}
386 \item Die meisten User verwenden viel zu wenige seiner Möglichkeiten!
387 \end{itemize}
388 \end{block}
390 \pause
392 \begin{block}{Alternativen}
393 \begin{itemize}
394 \item \texttt{vim} (7350k) Der bekannteste (und beste?) vi-Klon.
395 \item \texttt{nvi} (290k) Reimplementierung des orginal vi. Weniger Features; u.a. kein Syntax-Highlighting.
396 \item \texttt{emacs} (5.89e37) \dots
397 \end{itemize}
398 \end{block}
399 }
403 \subsection{Mailclient}
404 \frame{ \frametitle{Mailclient}
405 \begin{block}{mutt}
406 \begin{itemize}
407 \item ``The mail client, that sucks less''
408 \item sehr konfigurierbar
409 \item Kombination mit \texttt{fetchmail}, \texttt{procmail}, \texttt{masqmail}
410 \item Debian-Paket: 1810k
411 \end{itemize}
412 \end{block}
414 \pause
416 \begin{block}{Alternativen}
417 \begin{itemize}
418 \item \texttt{mailx} (155k) einfaches Mailprogramm
419 \item \texttt{pine} (4M) (nur als Source-Paket verfügbar)
420 \item \texttt{mutt-ng} (1790k) Neue Features für mutt (nicht in Debian)
421 \end{itemize}
422 \end{block}
423 }
427 \subsection{Browser}
428 \frame{ \frametitle{Browser}
429 \begin{block}{w3m}
430 \begin{itemize}
431 \item Textbrowser
432 \item hat Caret-Navigation
433 \item kein JavaScript
434 \item Inline-Bilder mit \texttt{w3m-img}
435 \item Debian-Paket: 1100k
436 \end{itemize}
437 \end{block}
439 \pause
441 \begin{block}{Alternativen}
442 \begin{itemize}
443 \item \texttt{lynx} (1860k) der Dinosaurier
444 \item \texttt{links} (380k) lynx-Klon
445 \item \texttt{elinks} (1190k) hat auch JavaScript-Unterstützung
446 \item \texttt{links2} (2080k) bietet textuellen und grafischen Modus
447 \item \texttt{dillo} (360k) rein grafisch, layoutet aber wie Textbrowser
448 \end{itemize}
449 \end{block}
450 }
454 \subsection{Musikplayer}
455 \frame{ \frametitle{Musikplayer}
456 \begin{block}{cplay}
457 \begin{itemize}
458 \item Frontend für mpg123, ogg123, \dots
459 \item sehr simpel, aber meist ausreichend
460 \item vi-like Bedienung
461 \item Remote-Control via FIFO
462 \item Debian-Paket: 41k
463 \end{itemize}
464 \end{block}
466 \pause
468 \begin{block}{Alternativen}
469 \begin{itemize}
470 \item \texttt{moc} (190k) sehr einfach, etwas instabil
471 \item \texttt{cmus} (124k) sehr featurereich
472 \item \texttt{mpd+ncmpc} (127k+85k) Client-Server-Architektur
473 \end{itemize}
474 \end{block}
475 }
479 \subsection{Filemanager}
480 \frame{ \frametitle{Filemanager}
481 \begin{block}{coreutils}
482 \begin{itemize}
483 \item cd, mv, cp, rm, mkdir, rmdir, \dots
484 \item man braucht eine gewisse Übersicht im Filesystem
485 \item letztendlich aber einfach am schnellsten
486 \item überall vorhanden
487 \end{itemize}
488 \end{block}
490 \pause
492 \begin{block}{Alternativen}
493 \begin{itemize}
494 \item \texttt{mc} (2140k) Alleskönner mit schrecklicher Bedienung
495 \item \texttt{vifm} (63k) \texttt{mc} mit vi-Bedienung; noch zu wenige Features
496 \end{itemize}
497 \end{block}
498 }
502 \subsection{FTP-Client}
503 \frame{ \frametitle{FTP-Client}
504 \begin{block}{ncftp}
505 \begin{itemize}
506 \item toller FTP-Client
507 \item hatte nur früher ein curses-Interface (\texttt{ncftp2})
508 \item ncftpget, ncftpput, \dots
509 \item Debian-Paket: 500k
510 \end{itemize}
511 \end{block}
513 \pause
515 \begin{block}{Alternativen}
516 \begin{itemize}
517 \item \texttt{ftp} (50k) wenig Komfort
518 \item \texttt{lftp} (540k) (kenne ich leider nicht)
519 \item \texttt{mc} (2140k) er kann auch ftp
520 \end{itemize}
521 \end{block}
522 }
526 \subsection{Chatten}
527 \frame{ \frametitle{Chatten}
528 \begin{block}{weechat-curses}
529 \begin{itemize}
530 \item ein IRC-Client
531 \item Reimplementierung von irssi
532 \item Debian-Paket: 580k
533 \end{itemize}
534 \end{block}
536 \pause
538 \begin{block}{Alternativen}
539 \begin{itemize}
540 \item \texttt{irssi} (1060k) populärer IRC-Client
541 \item \texttt{sic} (6k) liest stdin, schreibt stdout
542 \item \texttt{centericq} (1260k) sehr bekannter ICQ-Client
543 \end{itemize}
544 \end{block}
546 \pause
548 \begin{block}{bitlbee}
549 \begin{itemize}
550 \item bitlbee ist ein IM-to-IRC-Gateway
551 \item den IRC-Client für ICQ und Jabber verwenden
552 \item Debian-Paket: 315k
553 \end{itemize}
554 \end{block}
555 }
559 \subsection{Framebuffer}
560 \frame{ \frametitle{Framebuffer}
561 \begin{block}{fbi}
562 \begin{itemize}
563 \item \texttt{fbi} zeigt Bilder im Framebuffer
564 \item \texttt{fbgs} zeigt PDF- und PS-Dokumente im Framebuffer
565 \item Debian-Paket: 54k (enthält \texttt{fbgs})
566 \end{itemize}
567 \end{block}
569 \pause
571 \begin{block}{mplayer}
572 \begin{itemize}
573 \item \texttt{mplayer -vo fbdev} zeigt Filme im Framebuffer
574 \item kann auch über libaa, libcaca und Ähnliches ausgeben
575 \item Debian-Paket: 4400k
576 \end{itemize}
577 \end{block}
579 }
583 \subsection{screen}
584 \frame{ \frametitle{screen}
585 \begin{block}{screen}
586 \begin{itemize}
587 \item Terminal-Multiplexer
588 \item Unersetzbares Tool für Shelluser
589 \item \dots
590 \item Debian-Paket: 590k
591 \end{itemize}
592 \end{block}
593 %
594 % \pause
595 %
596 % \begin{block}{Alternativen}
597 % \begin{itemize}
598 % \item keine bekannt
599 % \end{itemize}
600 % \end{block}
601 }
605 \subsection{Window-Manager}
606 \frame{ \frametitle{Window-Manager}
607 \begin{block}{dwm}
608 \begin{itemize}
609 \item dynamic window manager
610 \item seit September 2006
611 \item von Anselm R. Garbe (wmii)
612 \item http://dwm.suckless.org
613 \item Debian-Paket: 20k
614 \end{itemize}
615 \end{block}
617 \pause
619 \begin{block}{Alternativen}
620 \begin{itemize}
621 \item \texttt{larswm} (110k) hatte Einfluss auf dwm
622 \item \texttt{ratpoison} (170k) soll zu \texttt{screen} passen
623 \item \texttt{ion2} (330k) bekannt für seine Tastatursteuerung
624 \item \texttt{icewm} (700k) wird oft als kleiner ``herkömmlicher'' WM aufgeführt
625 \end{itemize}
626 \end{block}
627 }
632 \frame{ \frametitle{dwm}
633 \begin{block}{Features}
634 \begin{itemize}
635 \item minimalistisch, nur das Nötig(st)e
636 \item Tagging statt Workspaces
637 \item Konfiguration durch Quellcode editieren und neu kompilieren
638 \item Quellcode kann an einem Abend verstanden werden
639 \item aktive Entwicklung
640 \end{itemize}
641 \end{block}
643 \pause
645 \begin{block}{Ziele}
646 \begin{itemize}
647 \item 2kLOC
648 \item portables C
649 \item guter Code (Refactoring)
650 \item sehr standardkonform (aber: broken apps)
651 \item Erweiterung mit Patches
652 \end{itemize}
653 \end{block}
654 }
659 \section{suckless-Projekt}
660 \frame{ \frametitle{suckless-Projekt}
661 \begin{block}{Community}
662 \begin{itemize}
663 \item http://suckless.org
664 \item kleine aktive Community
665 \item Patches als fester Bestandteil
666 \item Mailingliste ist Pflicht
667 \item einfach mitmachen!
668 \end{itemize}
669 \end{block}
671 \pause
673 \begin{block}{Mein dwm}
674 \begin{itemize}
675 \item ein Patchset
676 \item http://prog.marmaro.de/dwm-meillo
677 \end{itemize}
678 \end{block}
679 }
684 \section{Soll erfüllt?}
685 \frame{ \frametitle{Soll erfüllt?}
686 Ich habe gezeigt, dass man auch ohne X komfortabel arbeiten kann.
688 \pause
689 \vspace{1em}
691 Ich habe Einstiegshilfen gegeben und hoffentlich die ``Angst'' vor der textbasierten Benutzerschnittstelle genommen.
693 \pause
694 \vspace{1em}
696 Jetzt sollte eigentlich jeder von euch dabei sein einen Ausflug in die Shell zu planen.
698 \pause
699 \vspace{1em}
701 Weshalb die Shell wirklich besser ist, als die grafische Oberfläche, das kann eigentlich nur jeder für sich selbst herausfinden \dots indem man in ihr lebt.
702 }
708 \section{Zusammenfassung}
709 \frame{ \frametitle{Zusammenfassung}
711 \pause
712 \vspace{1em}
714 }
719 \section{Links}
720 \frame{ \frametitle{Links auf einen Blick}
721 \begin{itemize}
722 \item http://suckless.org
723 \item http://pimpmyshell.de (Projekt von Gregor Oelze)
724 \item http://cat-v.org (Website von Uriel)
725 \item http://marmaro.de/lue
726 \item http://prog.marmaro.de/dwm-meillo
727 \item
728 \item
729 \end{itemize}
730 }
735 \section{Danke}
736 \frame{% \frametitle{Abschließend}
737 \begin{block}{Verwendete Software}
738 \begin{itemize}
739 \item Debian GNU/Linux
740 \item \LaTeX-Beamer und \texttt{pdflatex}
741 \item Vim
742 \item qiv und ImageMagick
743 \item Mercurial
744 \end{itemize}
745 \end{block}
747 { \tiny $\dagger$ UNIX is a registered trademark of The Open Group. }
749 \pause
751 \begin{block}{}
752 \vspace{3ex}
753 \centerline{\textbf{Danke für eure Aufmerksamkeit}}
754 \end{block}
755 }
758 \end{document}