Mercurial > docs > gimme-shellter
view GimmeShellter.tex @ 6:1347b6d4e98e
modified hgignore
author | meillo@marmaro.de |
---|---|
date | Tue, 11 Dec 2007 09:55:41 +0100 |
parents | 52725a5ea7d9 |
children | e50c493cf700 |
line wrap: on
line source
% @file % @brief Vortrag: Mein Umzug in die Shell % @author markus schnalke <meillo@marmaro.de> % @since 2007-09-25 \documentclass{beamer} \usepackage[utf8]{inputenc} \usepackage{ngerman} \usepackage{graphicx} \usepackage[automark]{scrpage2} \title{Gimme Shell(ter)} \author{markus schnalke} \date{} \begin{document} \frame{ \vspace{8em} \begin{center} {\huge Gimme Shell}{\tiny (ter)} {Mein Umzug in die Shell} \vspace{6em} { \tiny markus schnalke \textless{}meillo@marmaro.de\textgreater{} } \end{center} } \section{Vorwort} \frame{ \frametitle{Vorwort} \begin{block}{} Dass meine Zukunft in der Shell stattfinden soll, war mir schon lange klar. \end{block} \begin{block}{} Bis ich jedoch soweit war, war es ein langer Weg. \end{block} \begin{block}{} Und keinesfalls möchte ich behaupten, dass ich am Ziel wäre, denn es gibt kein Ziel. Es gibt nur vorwärts. \end{block} } \section{Ziele} \frame{ \frametitle{Ziele} Dieser Vortrag soll zeigen, dass man auch ohne X komfortabel arbeiten kann. \vspace{1em} \pause Ich möchte die ``Angst'' vor der textbasierten Benutzerschnittstelle nehmen. Auch will ich hierzu Einstiegshilfen geben. \vspace{1em} \pause Ich möchte motivieren, mal Urlaub in der Shell zu machen. \vspace{1em} \pause Es soll klar werden, dass und warum Kommandozeilenprogramme oft besser als ihre grafischen Pendants sind. \vspace{1em} \pause Und als zentrales Ziel soll dieser Vortrag Gründe darstellen, weshalb es sich lohnt, in die Shell umzuziehen. } % \centerline{ \includegraphics[width=20em]{pics/observer_big.png} } \section{Motivation} \frame{ \frametitle{Motivation} \begin{itemize} \item Weil es cool ist {\scriptsize \textit{*hehe*}} \end{itemize} \pause \begin{itemize} \item effektiveres Arbeiten möglich \item konfigurierbarer \item ressourcenschonender \end{itemize} \pause \begin{itemize} \item Vorteile von \texttt{screen} \item \texttt{ssh} von überall \item auch ohne \texttt{X} daheim \end{itemize} \pause \begin{block}{} \textbf{Konzentration auf das Wesentliche!} Näher an der UNIX-Philosophie \end{block} } \section{Die UNIX-Philosophie} \frame{ \frametitle{Die UNIX-Philosophie} \begin{block}{} DER Grund UNIX$^{\dagger}$ zu verwenden ``Pro UNIX'' statt ``Anti Windows'' \end{block} \pause \begin{block}{} Welche wirklichen Vorteile bietet Gnome gegenüber der Windows-Oberfläche? \vspace{0.3em} Richtig, keine! \vspace{0.3em} An der Basis seid ihr zu UNIX gewechselt, weshalb denn nicht auch an der Oberfläche? \\ \pause Oder: \textit{An der Oberfläche seid ihr zu UNIX gewechselt, weshalb denn nicht auch an der Basis?} \end{block} \pause \begin{block}{} UNIX ist mehr als Ubuntu! \textbf{Um UNIX zu verstehen, muss man seine Philosophie kennen!} \end{block} } \frame{ \frametitle{Die UNIX-Philosophie} \begin{itemize} \item klein ist schön \item genau eine Sache gut machen \item früher Prototyp \item Portabilität vor Effizienz \item Daten in ASCII-Files speichern \item Code borgen \item alles automatisieren \item CLI statt GUI \item Programme als Filter \end{itemize} \pause \begin{block}{siehe auch} \begin{itemize} \item \item http://cat-v.org \item Rob Pike \end{itemize} \end{block} } \section{GUI vs. CLI} \frame{ \frametitle{GUI vs. CLI} \begin{block}{GUI-Programme \dots} \begin{itemize} \item haben hässlichen Code \item sind aufgebläht \item schränken ein \item laufen nur mit X \end{itemize} \end{block} \pause \begin{block}{CLI-Programme \dots} \begin{itemize} \item sind kleiner \item sind besser konfigurierbar \item sind älter und ausgereifter \item sind portabler (und damit auch öfter portiert) \end{itemize} \end{block} \pause { \scriptsize (Natürlich gilt das nicht zwangsläufig, die Wahrscheinlichkeit ist aber groß.) } } \subsection{CURSES} \frame{ \frametitle{CURSES} \begin{block}{CLI, TUI, GUI} \begin{itemize} \item CLI: \texttt{cat cli.txt | mail -s CLI lugu} \item TUI: \texttt{mutt} \item GUI: \texttt{Menu \textgreater{} Applications \textgreater{} Evolution} \end{itemize} \end{block} \begin{block}{CURSES} \begin{itemize} \item CURSES ist \emph{nicht} CLI \item sondern Text User Interface \item Ich bin hier nicht immer ganz korrekt. \item Aber CURSES gehört auch zur Shell. \end{itemize} \end{block} } \subsection{GUIs als Frontend} \frame{ \frametitle{GUIs als Frontend} \begin{block}{} GUIs sollen laut UNIX-Philosophie nur Frontends sein. \end{block} \pause \begin{block}{Beispiele} \begin{itemize} \item Programm: \texttt{nmap} \item Frontends: \texttt{nmapfe} (GTK), \texttt{knmap} (Qt) \end{itemize} \begin{itemize} \item Programm: \texttt{libparted} \item Frontends: \texttt{parted} (curses), \texttt{gparted} (GTK), \texttt{qtparted} (Qt) \end{itemize} \end{block} } \subsection{Größe von User-Interfaces} \frame{ \frametitle{Größe von User-Interfaces} { \scriptsize \begin{itemize} \item Package: \textbf{libparted1.7-1} \item Size: 198,554 \item Depends: libc6 ($>$= 2.3.6-6), libuuid1 \end{itemize} } \pause { \scriptsize \begin{itemize} \item Package: \textbf{parted} \item Size: 56,268 \item Depends: libc6 ($>$= 2.3.6-6), libncurses5 ($>$= 5.4-5), libparted1.7-1 ($>$= 1.7.1-1), libreadline5 ($>$= 5.2) \end{itemize} } \pause { \scriptsize \begin{itemize} \item Package: \textbf{gparted} \item Size: 452,616 \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 \end{itemize} } } \section{Programme vergleichen} \frame{ \frametitle{Programme vergleichen} \begin{block}{Weshalb die Programmgröße beachten?} \begin{itemize} \item Kleine Programme sind: flexibler, portabler, einfacher zu verstehen, bugfreier (vgl. UNIX-Philosophie) \item Die Paketgröße gibt indirekt Aufschluss auf den Codeumfang \item Der Codeumfang im Verhältnis zu den Features wirft Überlegungen zur Qualität des Codes auf \end{itemize} \end{block} \begin{block}{} Dies ist nur als Anhaltspunkt zu sehen! \end{block} } \subsection{Messmethoden} \frame{ \frametitle{Messmethoden} \begin{block}{Paketgröße} \begin{itemize} \item \texttt{apt-cache show \textless{}paket\textgreater{} | grep \^{}Size} \item einfach auszulesen \item Problem: Dokumentation ist oft auch im Paket enthalten \end{itemize} \end{block} \pause \begin{block}{Source-Filesizes} \begin{itemize} \item \texttt{du -c *.[ch]} (je nach Sprache) \item Quellcode muss vorliegen (\texttt{apt-get source}) \item Problem: \texttt{\{} vs. \texttt{begin} \end{itemize} \end{block} \pause \begin{block}{Source Lines Of Code} \begin{itemize} \item \texttt{sloccount} von David A. Wheeler \item Sprachen werden ``gleicher bewertet'' \end{itemize} \end{block} } \section{Mein Weg} \frame{ \frametitle{Mein Weg} \begin{block}{2005} Fluxbox, Firefox, Kate, Sylpheed Claws, gFTP, Gaim, vlc, k3b, gThumb, OOo, Grip, XMMS, \dots \end{block} \pause \begin{block}{2006} Auslöser:\\ Artikel ``Mein Umzug in die Shell'' von Gregor Oelze auf linuxlog \end{block} \pause \begin{block}{2007} 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 \end{block} \pause \begin{block}{} {\scriptsize Nachzulesen auf http://marmaro.de/lue } \end{block} } \section{Programme} \subsection{Editor} \frame{ \frametitle{Editor} \begin{block}{vi(m)} \begin{itemize} \item Der Editor schlechthin \item Auf jedem UNIX-System vorhanden \item meist in Form eines Klons \item darf ruhig angepasst werden: \texttt{.vimrc} \item Die meisten User verwenden viel zu wenige seiner Möglichkeiten! \end{itemize} \end{block} \pause \begin{block}{Alternativen} \begin{itemize} \item \texttt{vim} (7350k) Der bekannteste (und beste?) vi-Klon. \item \texttt{nvi} (290k) Reimplementierung des orginal vi. Weniger Features; u.a. kein Syntax-Highlighting. \item \texttt{emacs} (5.89e37) \dots \end{itemize} \end{block} } \subsection{Mailclient} \frame{ \frametitle{Mailclient} \begin{block}{mutt} \begin{itemize} \item ``The mail client, that sucks less'' \item sehr konfigurierbar \item Kombination mit \texttt{fetchmail}, \texttt{procmail}, \texttt{masqmail} \item Debian-Paket: 1810k \end{itemize} \end{block} \pause \begin{block}{Alternativen} \begin{itemize} \item \texttt{mailx} (155k) einfaches Mailprogramm \item \texttt{pine} (4M) (nur als Source-Paket verfügbar) \item \texttt{mutt-ng} (1790k) Neue Features für mutt (nicht in Debian) \end{itemize} \end{block} } \subsection{Browser} \frame{ \frametitle{Browser} \begin{block}{w3m} \begin{itemize} \item Textbrowser \item hat Caret-Navigation \item kein JavaScript \item Inline-Bilder mit \texttt{w3m-img} \item Debian-Paket: 1100k \end{itemize} \end{block} \pause \begin{block}{Alternativen} \begin{itemize} \item \texttt{lynx} (1860k) der Dinosaurier \item \texttt{links} (380k) lynx-Klon \item \texttt{elinks} (1190k) hat auch JavaScript-Unterstützung \item \texttt{links2} (2080k) bietet textuellen und grafischen Modus \item \texttt{dillo} (360k) rein grafisch, layoutet aber wie Textbrowser \end{itemize} \end{block} } \subsection{Musikplayer} \frame{ \frametitle{Musikplayer} \begin{block}{cplay} \begin{itemize} \item Frontend für mpg123, ogg123, \dots \item sehr simpel, aber meist ausreichend \item vi-like Bedienung \item Remote-Control via FIFO \item Debian-Paket: 41k \end{itemize} \end{block} \pause \begin{block}{Alternativen} \begin{itemize} \item \texttt{moc} (190k) sehr einfach, etwas instabil \item \texttt{cmus} (124k) sehr featurereich \item \texttt{mpd+ncmpc} (127k+85k) Client-Server-Architektur \end{itemize} \end{block} } \subsection{Filemanager} \frame{ \frametitle{Filemanager} \begin{block}{coreutils} \begin{itemize} \item cd, mv, cp, rm, mkdir, rmdir, \dots \item man braucht eine gewisse Übersicht im Filesystem \item letztendlich aber einfach am schnellsten \item überall vorhanden \end{itemize} \end{block} \pause \begin{block}{Alternativen} \begin{itemize} \item \texttt{mc} (2140k) Alleskönner mit schrecklicher Bedienung \item \texttt{vifm} (63k) \texttt{mc} mit vi-Bedienung; noch zu wenige Features \end{itemize} \end{block} } \subsection{FTP-Client} \frame{ \frametitle{FTP-Client} \begin{block}{ncftp} \begin{itemize} \item toller FTP-Client \item hatte nur früher ein curses-Interface (\texttt{ncftp2}) \item ncftpget, ncftpput, \dots \item Debian-Paket: 500k \end{itemize} \end{block} \pause \begin{block}{Alternativen} \begin{itemize} \item \texttt{ftp} (50k) wenig Komfort \item \texttt{lftp} (540k) (kenne ich leider nicht) \item \texttt{mc} (2140k) er kann auch ftp \end{itemize} \end{block} } \subsection{Chatten} \frame{ \frametitle{Chatten} \begin{block}{weechat-curses} \begin{itemize} \item ein IRC-Client \item Reimplementierung von irssi \item Debian-Paket: 580k \end{itemize} \end{block} \pause \begin{block}{Alternativen} \begin{itemize} \item \texttt{irssi} (1060k) populärer IRC-Client \item \texttt{sic} (6k) liest stdin, schreibt stdout \item \texttt{centericq} (1260k) sehr bekannter ICQ-Client \end{itemize} \end{block} \pause \begin{block}{bitlbee} \begin{itemize} \item bitlbee ist ein IM-to-IRC-Gateway \item den IRC-Client für ICQ und Jabber verwenden \item Debian-Paket: 315k \end{itemize} \end{block} } \subsection{Framebuffer} \frame{ \frametitle{Framebuffer} \begin{block}{fbi} \begin{itemize} \item \texttt{fbi} zeigt Bilder im Framebuffer \item \texttt{fbgs} zeigt PDF- und PS-Dokumente im Framebuffer \item Debian-Paket: 54k (enthält \texttt{fbgs}) \end{itemize} \end{block} \pause \begin{block}{mplayer} \begin{itemize} \item \texttt{mplayer -vo fbdev} zeigt Filme im Framebuffer \item kann auch über libaa, libcaca und Ähnliches ausgeben \item Debian-Paket: 4400k \end{itemize} \end{block} } \subsection{screen} \frame{ \frametitle{screen} \begin{block}{screen} \begin{itemize} \item Terminal-Multiplexer \item Unersetzbares Tool für Shelluser \item \dots \item Debian-Paket: 590k \end{itemize} \end{block} % % \pause % % \begin{block}{Alternativen} % \begin{itemize} % \item keine bekannt % \end{itemize} % \end{block} } \subsection{Window-Manager} \frame{ \frametitle{Window-Manager} \begin{block}{dwm} \begin{itemize} \item dynamic window manager \item seit September 2006 \item von Anselm R. Garbe (wmii) \item http://dwm.suckless.org \item Debian-Paket: 20k \end{itemize} \end{block} \pause \begin{block}{Alternativen} \begin{itemize} \item \texttt{larswm} (110k) hatte Einfluss auf dwm \item \texttt{ratpoison} (170k) soll zu \texttt{screen} passen \item \texttt{ion2} (330k) bekannt für seine Tastatursteuerung \item \texttt{icewm} (700k) wird oft als kleiner ``herkömmlicher'' WM aufgeführt \end{itemize} \end{block} } \frame{ \frametitle{dwm} \begin{block}{Features} \begin{itemize} \item minimalistisch, nur das Nötig(st)e \item Tagging statt Workspaces \item Konfiguration durch Quellcode editieren und neu kompilieren \item Quellcode kann an einem Abend verstanden werden \item aktive Entwicklung \end{itemize} \end{block} \pause \begin{block}{Ziele} \begin{itemize} \item 2kLOC \item portables C \item guter Code (Refactoring) \item sehr standardkonform (aber: broken apps) \item Erweiterung mit Patches \end{itemize} \end{block} } \section{suckless-Projekt} \frame{ \frametitle{suckless-Projekt} \begin{block}{Community} \begin{itemize} \item http://suckless.org \item kleine aktive Community \item Patches als fester Bestandteil \item Mailingliste ist Pflicht \item einfach mitmachen! \end{itemize} \end{block} \pause \begin{block}{Mein dwm} \begin{itemize} \item ein Patchset \item http://prog.marmaro.de/dwm-meillo \end{itemize} \end{block} } \section{Soll erfüllt?} \frame{ \frametitle{Soll erfüllt?} Ich habe gezeigt, dass man auch ohne X komfortabel arbeiten kann. \pause \vspace{1em} Ich habe Einstiegshilfen gegeben und hoffentlich die ``Angst'' vor der textbasierten Benutzerschnittstelle genommen. \pause \vspace{1em} Jetzt sollte eigentlich jeder von euch dabei sein einen Ausflug in die Shell zu planen. \pause \vspace{1em} 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. } \section{Zusammenfassung} \frame{ \frametitle{Zusammenfassung} \pause \vspace{1em} } \section{Links} \frame{ \frametitle{Links auf einen Blick} \begin{itemize} \item http://suckless.org \item http://pimpmyshell.de (Projekt von Gregor Oelze) \item http://cat-v.org (Website von Uriel) \item http://marmaro.de/lue \item http://prog.marmaro.de/dwm-meillo \item \item \end{itemize} } \section{Danke} \frame{% \frametitle{Abschließend} \begin{block}{Verwendete Software} \begin{itemize} \item Debian GNU/Linux \item \LaTeX-Beamer und \texttt{pdflatex} \item Vim \item qiv und ImageMagick \item Mercurial \end{itemize} \end{block} { \tiny $\dagger$ UNIX is a registered trademark of The Open Group. } \pause \begin{block}{} \vspace{3ex} \centerline{\textbf{Danke für eure Aufmerksamkeit}} \end{block} } \end{document}