docs/gimme-shellter

view GimmeShellter.tex @ 3:867ffbcccf28

added unix philosophy, filesizes, suckless project, and more
author meillo@marmaro.de
date Wed, 28 Nov 2007 19:54:27 +0100
parents 5e009abaf0bb
children 3f0be9972d35
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{}
19 %\markboth{2007-12-11}{}
21 \begin{document}
24 \frame{
25 %\titlepage
26 \vspace{8em}
27 \begin{center}
28 {\huge Gimme Shell}{\tiny (ter)}
30 {Mein Umzug in die Shell}
32 \vspace{6em}
34 { \tiny
35 markus schnalke \textless{}meillo@marmaro.de\textgreater{}
36 }
39 \end{center}
40 }
43 %\section[Outline]{}
44 %\frame{
45 % \tableofcontents
46 %}
52 \section{Vorwort}
53 \frame{ \frametitle{Vorwort}
55 \begin{block}{}
56 Dass meine Zukunft in der Shell stattfinden soll, war mir schon lange klar.
57 \end{block}
59 \begin{block}{}
60 Bis ich jedoch soweit war, war es ein langer Weg.
61 \end{block}
63 \begin{block}{}
64 Und keinesfalls möchte ich behaupten, dass ich am Ziel wäre, denn es gibt kein Ziel. Es gibt nur vorwärts.
65 \end{block}
67 }
71 \section{Ziele}
72 \frame{ \frametitle{Ziele}
73 Dieser Vortrag soll zeigen, dass man auch ohne X komfortabel arbeiten kann.
75 \vspace{1em}
77 Ich möchte motivieren, mal Urlaub in der Shell zu machen.
79 \vspace{1em}
81 Ich möchte die ``Angst'' vor der textbasierten Benutzerschnittstelle nehmen. Auch will ich hierzu Einstiegshilfen geben.
83 \vspace{1em}
85 Es soll klar werden, dass Kommandozeilenprogramme oft besser als ihre grafischen Pendants sind.
87 \vspace{1em}
89 Und als zentrales Ziel soll dieser Vortrag Gründe darstellen, weshalb es sich lohnt, in die Shell umzuziehen.
90 }
96 % \centerline{ \includegraphics[width=20em]{pics/observer_big.png} }
100 \section{Motivation}
101 \frame{ \frametitle{Motivation}
102 \begin{itemize}
103 \item Weil es cool ist {\scriptsize \textit{*hehe*}}
104 \end{itemize}
105 \pause
106 \begin{itemize}
107 \item effektiveres Arbeiten möglich
108 \item konfigurierbarer
109 \item ressourcenschonender
110 \end{itemize}
111 \pause
112 \begin{itemize}
113 \item Vorteile von \texttt{screen}
114 \item \texttt{ssh} von überall
115 \item auch ohne \texttt{X} daheim
116 \end{itemize}
118 \pause
119 \begin{block}{}
120 \textbf{Konzentration auf das Wesentliche!}
122 Näher an der UNIX-Philosophie
123 \end{block}
124 }
130 \section{Die UNIX-Philosophie}
131 \frame{ \frametitle{Die UNIX-Philosophie}
132 \begin{block}{}
133 DER Grund UNIX$^{\dagger}$ zu verwenden
135 ``Pro UNIX'' statt ``Anti Windows''
136 \end{block}
138 \pause
140 \begin{block}{}
141 Welche wirklichen Vorteile bietet Gnome gegenüber der Windows-Oberfläche?
143 \vspace{0.3em}
145 Richtig, keine!
147 \vspace{0.3em}
149 An der Basis seid ihr zu UNIX gewechselt, weshalb denn nicht auch an der Oberfläche? \\
150 \pause
151 Oder: \textit{An der Oberfläche seid ihr zu UNIX gewechselt, weshalb denn nicht auch an der Basis?}
152 \end{block}
154 \pause
156 \begin{block}{}
157 UNIX ist mehr als Ubuntu!
159 \textbf{Um UNIX zu verstehen, muss man seine Philosophie kennen!}
160 \end{block}
161 }
165 \frame{ \frametitle{Die UNIX-Philosophie}
166 \begin{itemize}
167 \item klein ist schön
168 \item genau eine Sache gut machen
169 \item früher Prototyp
170 \item Portabilität vor Effizienz
171 \item Daten in ASCII-Files speichern
172 \item Code borgen
173 \item alles automatisieren
174 \item CLI statt GUI
175 \item Programme als Filter
176 \end{itemize}
178 \pause
180 \begin{block}{siehe auch}
181 \begin{itemize}
182 \item
183 \item http://cat-v.org
184 \item Rob Pike
185 \item
186 \end{itemize}
187 \end{block}
188 }
193 \section{GUI vs. CLI}
194 \frame{ \frametitle{GUI vs. CLI}
195 \begin{block}{GUI-Programme \dots}
196 \begin{itemize}
197 \item haben hässlichen Code
198 \item sind aufgebläht
199 \item schränken ein
200 \item laufen nur mit X
201 \end{itemize}
202 \end{block}
204 \pause
206 \begin{block}{CLI-Programme \dots}
207 \begin{itemize}
208 \item sind kleiner
209 \item sind besser konfigurierbar
210 \item sind älter und ausgereifter
211 \item sind portabler (und damit auch öfter portiert)
212 \end{itemize}
213 \end{block}
215 \pause
217 { \scriptsize (Natürlich gilt das nicht zwangsläufig, die Wahrscheinlichkeit ist aber groß.) }
218 }
222 \section{GUIs als Frontend}
223 \frame{ \frametitle{GUIs als Frontend}
225 \begin{block}{}
226 GUIs sollen laut UNIX-Philosophie nur Frontends sein.
227 \end{block}
229 \pause
231 \begin{block}{Beispiele}
232 \begin{itemize}
233 \item Programm: \texttt{nmap}
234 \item Frontends: \texttt{nmapfe} (GTK), \texttt{knmap} (Qt)
235 \end{itemize}
237 \begin{itemize}
238 \item Programm: \texttt{libparted}
239 \item Frontends: \texttt{parted} (curses), \texttt{gparted} (GTK), \texttt{qtparted} (Qt)
240 \end{itemize}
241 \end{block}
242 }
246 \section{Größe von User-Interfaces}
247 \frame{ \frametitle{Größe von User-Interfaces}
250 { \scriptsize
251 \begin{itemize}
252 \item Package: \textbf{libparted1.7-1}
253 \item Size: 198,554
254 \item Depends: libc6 ($>$= 2.3.6-6), libuuid1
255 \end{itemize}
256 }
258 \pause
261 { \scriptsize
262 \begin{itemize}
263 \item Package: \textbf{parted}
264 \item Size: 56,268
265 \item Depends: libc6 ($>$= 2.3.6-6), libncurses5 ($>$= 5.4-5), libparted1.7-1 ($>$= 1.7.1-1), libreadline5 ($>$= 5.2)
266 \end{itemize}
267 }
269 \pause
271 { \scriptsize
272 \begin{itemize}
273 \item Package: \textbf{gparted}
274 \item Size: 452,616
275 \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
276 \end{itemize}
277 }
278 }
283 \section{Filesizes}
284 \frame{ \frametitle{Filesizes}
285 \begin{block}{Weshalb Paketgrößen?}
286 \begin{itemize}
287 \item Kleine Programme sind: flexibler, portabler, einfacher zu verstehen, bugfreier (vgl. UNIX-Philosophie)
288 \item Die Paketgröße gibt indirekt Aufschluss auf den Codeumgang
289 \item Der Codeumfang im Verhältnis zu den Features wirft Überlegungen zur Qualität des Codes auf
290 \item nur als Anhaltspunkt sehen
291 \item
292 \end{itemize}
293 \end{block}
295 \pause
297 \begin{block}{Alternativen}
298 \begin{itemize}
299 \item \texttt{vim} (7350k) Der bekannteste (und beste?) vi-Klon.
300 \item \texttt{nvi} (290k) Reimplementierung des orginal vi. Weniger Features; u.a. kein Syntax-Highlighting.
301 \item \texttt{emacs} (1.4e26k) \dots
302 \end{itemize}
303 \end{block}
304 }
309 \section{Mein Weg}
310 \frame{ \frametitle{Mein Weg}
311 \begin{block}{2005}
312 Fluxbox, Firefox, Kate, Sylpheed Claws, gFTP, Gaim, vlc, k3b, gThumb, OOo, Grip, XMMS, \dots
313 \end{block}
315 \pause
317 \begin{block}{2006}
318 Auslöser: \textit{Mein Umzug in die Shell}
319 \end{block}
321 \pause
323 \begin{block}{2007}
324 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
325 \end{block}
327 \pause
329 \begin{block}{}
330 {\scriptsize Nachzulesen auf http://marmaro.de/lue }
331 \end{block}
332 }
335 \section{Programme}
337 \subsection{Editor}
338 \frame{ \frametitle{Editor}
339 \begin{block}{vi(m)}
340 \begin{itemize}
341 \item Der Editor schlechthin
342 \item Auf jedem UNIX-System vorhanden
343 \item meist in Form eines Klons vorhanden
344 \item darf ruhig angepasst werden: \texttt{.vimrc}
345 \item Die meisten User verwenden viel zu wenige seiner Möglichkeiten!
346 \end{itemize}
347 \end{block}
349 \pause
351 \begin{block}{Alternativen}
352 \begin{itemize}
353 \item \texttt{vim} (7350k) Der bekannteste (und beste?) vi-Klon.
354 \item \texttt{nvi} (290k) Reimplementierung des orginal vi. Weniger Features; u.a. kein Syntax-Highlighting.
355 \item \texttt{emacs} (1.4e26k) \dots
356 \end{itemize}
357 \end{block}
358 }
362 \subsection{Mailclient}
363 \frame{ \frametitle{Mailclient}
364 \begin{block}{mutt}
365 \begin{itemize}
366 \item ``The mail client, that sucks less''
367 \item sehr konfigurierbar
368 \item Kombination mit \texttt{fetchmail}, \texttt{procmail}, \texttt{masqmail}
369 \item \dots
370 \item Debian-Paket: 1810k
371 \end{itemize}
372 \end{block}
374 \pause
376 \begin{block}{Alternativen}
377 \begin{itemize}
378 \item \texttt{mailx} (155k) einfaches Mailprogramm
379 \item \texttt{pine} () (nicht mehr in Debian??)
380 \item \texttt{mutt-ng} () Neue Features für mutt
381 \end{itemize}
382 \end{block}
383 }
387 \subsection{Browser}
388 \frame{ \frametitle{Browser}
389 \begin{block}{w3m}
390 \begin{itemize}
391 \item Textbrowser
392 \item kein JavaScript
393 \item hat Caret-Navigation
394 \item \dots
395 \item Debian-Paket: 1100k
396 \end{itemize}
397 \end{block}
399 \pause
401 \begin{block}{Alternativen}
402 \begin{itemize}
403 \item \texttt{lynx} (1860k) der Dinosaurier
404 \item \texttt{links} (380k) lynx-Klon
405 \item \texttt{elinks} (1190k) hat auch JavaScript-Unterstützung
406 \item \texttt{links2} (2080k) bietet textuellen und grafischen Modus
407 \item \texttt{dillo} (360k) rein grafisch, layoutet aber wie Textbrowser
408 \end{itemize}
409 \end{block}
410 }
414 \subsection{Musikplayer}
415 \frame{ \frametitle{Musikplayer}
416 \begin{block}{cplay}
417 \begin{itemize}
418 \item Frontend für mpg123, ogg123, \dots
419 \item sehr simpel, aber meist ausreichend
420 \item vi-like Bedienung
421 \item Remote-Control via FIFO
422 \item Debian-Paket: 41k
423 \end{itemize}
424 \end{block}
426 \pause
428 \begin{block}{Alternativen}
429 \begin{itemize}
430 \item \texttt{moc} (190k) sehr einfach, etwas instabil
431 \item \texttt{cmus} (124k) sehr featurereich
432 \item \texttt{mpd+ncmpc} (127k+85k) Client-Server-Architektur
433 \end{itemize}
434 \end{block}
435 }
439 \subsection{Filemanager}
440 \frame{ \frametitle{Filemanager}
441 \begin{block}{coreutils}
442 \begin{itemize}
443 \item cd, mv, cp, rm, mkdir, rmdir, \dots
444 \item man braucht eine gewisse Übersicht im FS
445 \item letztendlich aber einfach am schnellsten
446 \item \dots
447 \item überall vorhanden
448 \end{itemize}
449 \end{block}
451 \pause
453 \begin{block}{Alternativen}
454 \begin{itemize}
455 \item \texttt{mc} (2140k) Alleskönner mit schrecklicher Bedienung
456 \item \texttt{vifm} (63k) \texttt{mc} mit vi-Bedienung; noch zu wenige Features
457 \end{itemize}
458 \end{block}
459 }
463 \subsection{FTP-Client}
464 \frame{ \frametitle{FTP-Client}
465 \begin{block}{ncftp}
466 \begin{itemize}
467 \item toller FTP-Client
468 \item hatte nur früher ein curses-Interface
469 \item ncftpget, ncftpput, \dots
470 \item \dots
471 \item Debian-Paket: 500k
472 \end{itemize}
473 \end{block}
475 \pause
477 \begin{block}{Alternativen}
478 \begin{itemize}
479 \item \texttt{ftp} (50k) wenig Komfort
480 \item \texttt{lftp} (540k) (kenne ich leider nicht)
481 \item \texttt{mc} (2140k) (siehe Folie Filemanager)
482 \end{itemize}
483 \end{block}
484 }
488 \subsection{Chatten}
489 \frame{ \frametitle{Chatten}
490 \begin{block}{weechat-curses}
491 \begin{itemize}
492 \item ein IRC-Client
493 \item Reimplementierung von irssi
494 \item Debian-Paket: 580k
495 \end{itemize}
496 \end{block}
498 \pause
500 \begin{block}{Alternativen}
501 \begin{itemize}
502 \item \texttt{irssi} (1060k) der populäre IRC-Client
503 \item \texttt{sic} (6k) liest stdin, schreibt stdout
504 \item \texttt{centericq} (1260k) sehr bekannter ICQ-Client
505 \end{itemize}
506 \end{block}
508 \pause
510 \begin{block}{bitlbee}
511 \begin{itemize}
512 \item bitlbee ist ein IM-to-IRC-Gateway
513 \item den IRC-Client für ICQ und Jabber verwenden
514 \item Debian-Paket: 315k
515 \end{itemize}
516 \end{block}
517 }
521 \subsection{Framebuffer}
522 \frame{ \frametitle{Framebuffer}
523 \begin{block}{fbi}
524 \begin{itemize}
525 \item \texttt{fbi} zeigt Bilder im Framebuffer
526 \item \texttt{fbgs} zeigt PDF- und PS-Dokumente im Framebuffer
527 \item Debian-Paket: 54k (enthält \texttt{fbgs})
528 \end{itemize}
529 \end{block}
531 \pause
533 \begin{block}{mplayer}
534 \begin{itemize}
535 \item \texttt{mplayer -vo fbdev} zeigt Filme im Framebuffer
536 \item kann auch über libaa, libcaca und Ähnliches ausgeben
537 \item Debian-Paket: 4400k
538 \end{itemize}
539 \end{block}
541 % \pause
542 %
543 % \begin{block}{Alternativen}
544 % \begin{itemize}
545 % \item keine bekannt
546 % \end{itemize}
547 % \end{block}
548 }
552 \subsection{screen}
553 \frame{ \frametitle{screen}
554 \begin{block}{screen}
555 \begin{itemize}
556 \item Terminal-Multiplexer
557 \item Unersetzbares Tool für Shelluser
558 \item \dots
559 \item Debian-Paket: 590k
560 \end{itemize}
561 \end{block}
562 %
563 % \pause
564 %
565 % \begin{block}{Alternativen}
566 % \begin{itemize}
567 % \item keine bekannt
568 % \end{itemize}
569 % \end{block}
570 }
574 \subsection{Window-Manager}
575 \frame{ \frametitle{Window-Manager}
576 \begin{block}{dwm}
577 \begin{itemize}
578 \item dynamic window manager
579 \item seit September 2006
580 \item von Anselm R. Garbe (wmii)
581 \item http://dwm.suckless.org
582 \item Debian-Paket: 20k
583 \end{itemize}
584 \end{block}
586 \pause
588 \begin{block}{Alternativen}
589 \begin{itemize}
590 \item \texttt{larswm} (110k)
591 \item \texttt{ratpoison} (170k)
592 \item \texttt{ion2} (330k)
593 \item \texttt{icewm} (700k)
594 \end{itemize}
595 \end{block}
596 }
601 \frame{ \frametitle{dwm}
602 \begin{block}{Features}
603 \begin{itemize}
604 \item minimalistisch, nur das Nötig(st)e
605 \item Tagging statt Workspaces
606 \item Konfiguration durch Quellcode editieren und neu kompilieren
607 \item Quellcode kann an einem Abend verstanden werden
608 \item aktive Entwicklung
609 \end{itemize}
610 \end{block}
612 \pause
614 \begin{block}{Ziele}
615 \begin{itemize}
616 \item 2kLOC
617 \item portables C
618 \item guter Code (Refactoring)
619 \item sehr standardkonform (aber: broken appz)
620 \item Erweiterung mit Patches
621 \item
622 \end{itemize}
623 \end{block}
624 }
629 \section{suckless-Projekt}
630 \frame{ \frametitle{suckless-Projekt}
631 \begin{block}{Community}
632 \begin{itemize}
633 \item http://suckless.org
634 \item kleine aktive Community
635 \item Patches als fester Bestandteil
636 \item Mailingliste ist Pflicht
637 \item einfach mitmachen!
638 \item
639 \end{itemize}
640 \end{block}
642 \pause
644 \begin{block}{Mein dwm}
645 \begin{itemize}
646 \item http://prog.marmaro.de/dwm-meillo/
647 \item ein Patchset
648 \end{itemize}
649 \end{block}
650 }
657 \section{Zusammenfassung}
658 \frame{ \frametitle{Zusammenfassung}
659 \begin{block}{}
660 \begin{itemize}
661 \item
662 \item
663 \item
664 \end{itemize}
665 \end{block}
667 }
670 \section{Fragen}
671 \frame{ \frametitle{Fragen?}
672 \vspace{5ex}
673 \centerline{\huge ?}
674 }
677 \frame{ \frametitle{Abschließend}
678 \begin{block}{Verwendete Software}
679 \begin{itemize}
680 \item Debian GNU/Linux
681 \item \LaTeX-Beamer und \texttt{pdflatex}
682 \item Vim
683 \item qiv und ImageMagick
684 \item Mercurial
685 \end{itemize}
686 \end{block}
688 { \tiny $\dagger$ \textit{UNIX} ist ein eingetragenes Warenzeichen der OpenGroup. }
690 \pause
692 \begin{block}{}
693 \vspace{3ex}
694 \centerline{\textbf{Danke für eure Aufmerksamkeit}}
695 \end{block}
696 }
699 \end{document}