docs/gimme-shellter

view GimmeShellter.tex @ 4:3f0be9972d35

rewrote filesizes; added more content
author meillo@marmaro.de
date Thu, 06 Dec 2007 14:44:09 +0100
parents 867ffbcccf28
children 52725a5ea7d9
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://www.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{CLI und CURSES}
215 \frame{ \frametitle{CLI und CURSES}
216 \begin{block}{CLI --- CURSES --- GUI}
217 \begin{itemize}
218 \item CLI: \texttt{cat cli.txt | mail -s CLI lugu}
219 \item CURSES: \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 konsequent.
229 \end{itemize}
230 \end{block}
231 }
235 \subsection{GUIs als Frontend}
236 \frame{ \frametitle{GUIs als Frontend}
238 \begin{block}{}
239 GUIs sollen laut UNIX-Philosophie nur Frontends sein.
240 \end{block}
242 \pause
244 \begin{block}{Beispiele}
245 \begin{itemize}
246 \item Programm: \texttt{nmap}
247 \item Frontends: \texttt{nmapfe} (GTK), \texttt{knmap} (Qt)
248 \end{itemize}
250 \begin{itemize}
251 \item Programm: \texttt{libparted}
252 \item Frontends: \texttt{parted} (curses), \texttt{gparted} (GTK), \texttt{qtparted} (Qt)
253 \end{itemize}
254 \end{block}
255 }
259 \subsection{Größe von User-Interfaces}
260 \frame{ \frametitle{Größe von User-Interfaces}
263 { \scriptsize
264 \begin{itemize}
265 \item Package: \textbf{libparted1.7-1}
266 \item Size: 198,554
267 \item Depends: libc6 ($>$= 2.3.6-6), libuuid1
268 \end{itemize}
269 }
271 \pause
274 { \scriptsize
275 \begin{itemize}
276 \item Package: \textbf{parted}
277 \item Size: 56,268
278 \item Depends: libc6 ($>$= 2.3.6-6), libncurses5 ($>$= 5.4-5), libparted1.7-1 ($>$= 1.7.1-1), libreadline5 ($>$= 5.2)
279 \end{itemize}
280 }
282 \pause
284 { \scriptsize
285 \begin{itemize}
286 \item Package: \textbf{gparted}
287 \item Size: 452,616
288 \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
289 \end{itemize}
290 }
291 }
296 \section{Programme vergleichen}
297 \frame{ \frametitle{Programme vergleichen}
298 \begin{block}{Weshalb die Programmgröße beachten?}
299 \begin{itemize}
300 \item Kleine Programme sind: flexibler, portabler, einfacher zu verstehen, bugfreier (vgl. UNIX-Philosophie)
301 \item Die Paketgröße gibt indirekt Aufschluss auf den Codeumfang
302 \item Der Codeumfang im Verhältnis zu den Features wirft Überlegungen zur Qualität des Codes auf
303 \end{itemize}
304 \end{block}
306 \begin{block}{}
307 Dies ist nur als Anhaltspunkt zu sehen!
308 \end{block}
309 }
313 \subsection{Messmethoden}
314 \frame{ \frametitle{Messmethoden}
315 \begin{block}{Paketgröße}
316 \begin{itemize}
317 \item \texttt{apt-cache show \textless{}paket\textgreater{} | grep \^{}Size}
318 \item einfach auszulesen
319 \item Problem: Dokumentation ist oft auch im Paket enthalten
320 \end{itemize}
321 \end{block}
323 \pause
325 \begin{block}{Source-Filesizes}
326 \begin{itemize}
327 \item \texttt{du -c *.[ch]} (je nach Sprache)
328 \item Quellcode muss vorliegen (\texttt{apt-get source})
329 \item Problem: \texttt{\{} vs. \texttt{begin}
330 \end{itemize}
331 \end{block}
333 \pause
335 \begin{block}{Source Lines Of Code}
336 \begin{itemize}
337 \item \texttt{sloccount} von David A. Wheeler
338 \item Sprachen werden ``gleicher bewertet''
339 \end{itemize}
340 \end{block}
341 }
348 \section{Mein Weg}
349 \frame{ \frametitle{Mein Weg}
350 \begin{block}{2005}
351 Fluxbox, Firefox, Kate, Sylpheed Claws, gFTP, Gaim, vlc, k3b, gThumb, OOo, Grip, XMMS, \dots
352 \end{block}
354 \pause
356 \begin{block}{2006}
357 Auslöseer:\\ Artikel ``Mein Umzug in die Shell'' von Gregor Oelze auf linuxlog
358 \end{block}
360 \pause
362 \begin{block}{2007}
363 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
364 \end{block}
366 \pause
368 \begin{block}{}
369 {\scriptsize Nachzulesen auf http://marmaro.de/lue }
370 \end{block}
371 }
374 \section{Programme}
376 \subsection{Editor}
377 \frame{ \frametitle{Editor}
378 \begin{block}{vi(m)}
379 \begin{itemize}
380 \item Der Editor schlechthin
381 \item Auf jedem UNIX-System vorhanden
382 \item meist in Form eines Klons
383 \item darf ruhig angepasst werden: \texttt{.vimrc}
384 \item Die meisten User verwenden viel zu wenige seiner Möglichkeiten!
385 \end{itemize}
386 \end{block}
388 \pause
390 \begin{block}{Alternativen}
391 \begin{itemize}
392 \item \texttt{vim} (7350k) Der bekannteste (und beste?) vi-Klon.
393 \item \texttt{nvi} (290k) Reimplementierung des orginal vi. Weniger Features; u.a. kein Syntax-Highlighting.
394 \item \texttt{emacs} (5.89e37) \dots
395 \end{itemize}
396 \end{block}
397 }
401 \subsection{Mailclient}
402 \frame{ \frametitle{Mailclient}
403 \begin{block}{mutt}
404 \begin{itemize}
405 \item ``The mail client, that sucks less''
406 \item sehr konfigurierbar
407 \item Kombination mit \texttt{fetchmail}, \texttt{procmail}, \texttt{masqmail}
408 \item \dots
409 \item Debian-Paket: 1810k
410 \end{itemize}
411 \end{block}
413 \pause
415 \begin{block}{Alternativen}
416 \begin{itemize}
417 \item \texttt{mailx} (155k) einfaches Mailprogramm
418 \item \texttt{pine} () (nicht mehr in Debian??)
419 \item \texttt{mutt-ng} () Neue Features für mutt
420 \end{itemize}
421 \end{block}
422 }
426 \subsection{Browser}
427 \frame{ \frametitle{Browser}
428 \begin{block}{w3m}
429 \begin{itemize}
430 \item Textbrowser
431 \item hat Caret-Navigation
432 \item kein JavaScript
433 \item Inline-Bilder mit \texttt{w3m-img}
434 \item Debian-Paket: 1100k
435 \end{itemize}
436 \end{block}
438 \pause
440 \begin{block}{Alternativen}
441 \begin{itemize}
442 \item \texttt{lynx} (1860k) der Dinosaurier
443 \item \texttt{links} (380k) lynx-Klon
444 \item \texttt{elinks} (1190k) hat auch JavaScript-Unterstützung
445 \item \texttt{links2} (2080k) bietet textuellen und grafischen Modus
446 \item \texttt{dillo} (360k) rein grafisch, layoutet aber wie Textbrowser
447 \end{itemize}
448 \end{block}
449 }
453 \subsection{Musikplayer}
454 \frame{ \frametitle{Musikplayer}
455 \begin{block}{cplay}
456 \begin{itemize}
457 \item Frontend für mpg123, ogg123, \dots
458 \item sehr simpel, aber meist ausreichend
459 \item vi-like Bedienung
460 \item Remote-Control via FIFO
461 \item Debian-Paket: 41k
462 \end{itemize}
463 \end{block}
465 \pause
467 \begin{block}{Alternativen}
468 \begin{itemize}
469 \item \texttt{moc} (190k) sehr einfach, etwas instabil
470 \item \texttt{cmus} (124k) sehr featurereich
471 \item \texttt{mpd+ncmpc} (127k+85k) Client-Server-Architektur
472 \end{itemize}
473 \end{block}
474 }
478 \subsection{Filemanager}
479 \frame{ \frametitle{Filemanager}
480 \begin{block}{coreutils}
481 \begin{itemize}
482 \item cd, mv, cp, rm, mkdir, rmdir, \dots
483 \item man braucht eine gewisse Übersicht im Filesystem
484 \item letztendlich aber einfach am schnellsten
485 \item \dots
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 \dots
510 \item Debian-Paket: 500k
511 \end{itemize}
512 \end{block}
514 \pause
516 \begin{block}{Alternativen}
517 \begin{itemize}
518 \item \texttt{ftp} (50k) wenig Komfort
519 \item \texttt{lftp} (540k) (kenne ich leider nicht)
520 \item \texttt{mc} (2140k) er kann auch ftp
521 \end{itemize}
522 \end{block}
523 }
527 \subsection{Chatten}
528 \frame{ \frametitle{Chatten}
529 \begin{block}{weechat-curses}
530 \begin{itemize}
531 \item ein IRC-Client
532 \item Reimplementierung von irssi
533 \item Debian-Paket: 580k
534 \end{itemize}
535 \end{block}
537 \pause
539 \begin{block}{Alternativen}
540 \begin{itemize}
541 \item \texttt{irssi} (1060k) populärer IRC-Client
542 \item \texttt{sic} (6k) liest stdin, schreibt stdout
543 \item \texttt{centericq} (1260k) sehr bekannter ICQ-Client
544 \end{itemize}
545 \end{block}
547 \pause
549 \begin{block}{bitlbee}
550 \begin{itemize}
551 \item bitlbee ist ein IM-to-IRC-Gateway
552 \item den IRC-Client für ICQ und Jabber verwenden
553 \item Debian-Paket: 315k
554 \end{itemize}
555 \end{block}
556 }
560 \subsection{Framebuffer}
561 \frame{ \frametitle{Framebuffer}
562 \begin{block}{fbi}
563 \begin{itemize}
564 \item \texttt{fbi} zeigt Bilder im Framebuffer
565 \item \texttt{fbgs} zeigt PDF- und PS-Dokumente im Framebuffer
566 \item Debian-Paket: 54k (enthält \texttt{fbgs})
567 \end{itemize}
568 \end{block}
570 \pause
572 \begin{block}{mplayer}
573 \begin{itemize}
574 \item \texttt{mplayer -vo fbdev} zeigt Filme im Framebuffer
575 \item kann auch über libaa, libcaca und Ähnliches ausgeben
576 \item Debian-Paket: 4400k
577 \end{itemize}
578 \end{block}
580 % \pause
581 %
582 % \begin{block}{Alternativen}
583 % \begin{itemize}
584 % \item keine bekannt
585 % \end{itemize}
586 % \end{block}
587 }
591 \subsection{screen}
592 \frame{ \frametitle{screen}
593 \begin{block}{screen}
594 \begin{itemize}
595 \item Terminal-Multiplexer
596 \item Unersetzbares Tool für Shelluser
597 \item \dots
598 \item Debian-Paket: 590k
599 \end{itemize}
600 \end{block}
601 %
602 % \pause
603 %
604 % \begin{block}{Alternativen}
605 % \begin{itemize}
606 % \item keine bekannt
607 % \end{itemize}
608 % \end{block}
609 }
613 \subsection{Window-Manager}
614 \frame{ \frametitle{Window-Manager}
615 \begin{block}{dwm}
616 \begin{itemize}
617 \item dynamic window manager
618 \item seit September 2006
619 \item von Anselm R. Garbe (wmii)
620 \item http://dwm.suckless.org
621 \item Debian-Paket: 20k
622 \end{itemize}
623 \end{block}
625 \pause
627 \begin{block}{Alternativen}
628 \begin{itemize}
629 \item \texttt{larswm} (110k)
630 \item \texttt{ratpoison} (170k)
631 \item \texttt{ion2} (330k)
632 \item \texttt{icewm} (700k)
633 \end{itemize}
634 \end{block}
635 }
640 \frame{ \frametitle{dwm}
641 \begin{block}{Features}
642 \begin{itemize}
643 \item minimalistisch, nur das Nötig(st)e
644 \item Tagging statt Workspaces
645 \item Konfiguration durch Quellcode editieren und neu kompilieren
646 \item Quellcode kann an einem Abend verstanden werden
647 \item aktive Entwicklung
648 \end{itemize}
649 \end{block}
651 \pause
653 \begin{block}{Ziele}
654 \begin{itemize}
655 \item 2kLOC
656 \item portables C
657 \item guter Code (Refactoring)
658 \item sehr standardkonform (aber: broken apps)
659 \item Erweiterung mit Patches
660 \item
661 \end{itemize}
662 \end{block}
663 }
668 \section{suckless-Projekt}
669 \frame{ \frametitle{suckless-Projekt}
670 \begin{block}{Community}
671 \begin{itemize}
672 \item http://suckless.org
673 \item kleine aktive Community
674 \item Patches als fester Bestandteil
675 \item Mailingliste ist Pflicht
676 \item einfach mitmachen!
677 \item
678 \end{itemize}
679 \end{block}
681 \pause
683 \begin{block}{Mein dwm}
684 \begin{itemize}
685 \item ein Patchset
686 \item http://prog.marmaro.de/dwm-meillo
687 \end{itemize}
688 \end{block}
689 }
694 \section{Soll erfüllt?}
695 \frame{ \frametitle{Soll erfüllt?}
696 Dieser Vortrag soll zeigen, dass man auch ohne X komfortabel arbeiten kann.
698 \vspace{1em}
699 \pause
701 Ich möchte motivieren, mal Urlaub in der Shell zu machen.
703 \vspace{1em}
704 \pause
706 Ich möchte die ``Angst'' vor der textbasierten Benutzerschnittstelle nehmen. Auch will ich hierzu Einstiegshilfen geben.
708 \vspace{1em}
709 \pause
711 Es soll klar werden, dass und warum Kommandozeilenprogramme oft besser als ihre grafischen Pendants sind.
713 \vspace{1em}
714 \pause
716 Und als zentrales Ziel soll dieser Vortrag Gründe darstellen, weshalb es sich lohnt, in die Shell umzuziehen.
718 }
721 \section{Zusammenfassung}
722 \frame{ \frametitle{Zusammenfassung}
723 Ja, man kann auch ohne X komfortabel arbeiten.
725 \vspace{1em}
726 \pause
728 Macht mal Urlaub in der Shell.
730 \vspace{1em}
731 \pause
733 Man muss die CLI nicht fürchten.
735 \vspace{1em}
736 \pause
738 Es soll klar werden, dass und warum Kommandozeilenprogramme oft besser als ihre grafischen Pendants sind.
740 \vspace{1em}
741 \pause
743 Und als zentrales Ziel soll dieser Vortrag Gründe darstellen, weshalb es sich lohnt, in die Shell umzuziehen.
745 }
748 \section{Fragen}
749 \frame{ \frametitle{Fragen?}
750 \vspace{5ex}
751 \centerline{\huge ?}
752 }
756 \section{Links}
757 \frame{ \frametitle{Links auf einen Blick}
758 \begin{itemize}
759 \item http://suckless.org
760 \item http://pimpmyshell.de (Projekt von Gregor Oelze)
761 \item http://cat-v.org (Website von Uriel)
762 \item http://marmaro.de/lue
763 \item http://prog.marmaro.de/dwm-meillo
764 \item
765 \item
766 \end{itemize}
768 }
773 \section{Danke}
774 \frame{% \frametitle{Abschließend}
775 \begin{block}{Verwendete Software}
776 \begin{itemize}
777 \item Debian GNU/Linux
778 \item \LaTeX-Beamer und \texttt{pdflatex}
779 \item Vim
780 \item qiv und ImageMagick
781 \item Mercurial
782 \end{itemize}
783 \end{block}
785 { \tiny $\dagger$ UNIX is a registered trademark of The Open Group. }
787 \pause
789 \begin{block}{}
790 \vspace{3ex}
791 \centerline{\textbf{Danke für eure Aufmerksamkeit}}
792 \end{block}
793 }
796 \end{document}