Software Development, Windowing Systems, Final Review - PowerPoint PPT Presentation

1 / 75
About This Presentation
Title:

Software Development, Windowing Systems, Final Review

Description:

Lecture 13 Software Development, Windowing Systems, Final Review – PowerPoint PPT presentation

Number of Views:154
Avg rating:3.0/5.0
Slides: 76
Provided by: Jeffre211
Learn more at: https://cs.nyu.edu
Category:

less

Transcript and Presenter's Notes

Title: Software Development, Windowing Systems, Final Review


1
Lecture 13
  • Software Development, Windowing Systems, Final
    Review

2
Types of Development Tools
  • Archiving tar, cpio, pax, RPM
  • Configuration autoconf
  • Compilation and building make
  • Managing files RCS, SCCS, CVS
  • Debugging gdb, dbx, prof, strace, purify
  • Programming tools yacc, lex, lint, indent
  • Editors vi, emacs

3
tar Tape ARchiver
  • tar general purpose archive utility (not just
    for tapes)
  • Usage tar options files
  • Originally designed for maintaining an archive of
    files on a magnetic tape.
  • Now often used for packaging files for
    distribution
  • If any files are subdirectories, tar acts on the
    entire subtree.

4
tar archiving files options
  • c creates a tar-format file
  • f filename specify filename for tar-format
    file,
  • Default is /dev/rmt0.
  • If - is used for filename, standard input or
    standard output is used as appropriate
  • v verbose output
  • x allows to extract named files

5
tar archiving files (continued)
  • t generates table of contents
  • r unconditionally appends the listed files
    to the archive files
  • u appends only files that are more recent
    than those already archived
  • L follow symbolic links
  • m do not restore file modification times
  • l print error messages about links it cannot
    find

6
cpio copying files
  • cpio copy file archives in from or out of tape
    or disk or to another location on the local
    machine
  • Similar to tar
  • Examples
  • Extract cpio -idtu patterns
  • Create cpio -ov
  • Pass-thru cpio -pl directory

7
cpio (continued)
  • cpio -i dtum patterns
  • Copy in (extract) files whose names match
    selected patterns.
  • If no pattern is used, all files are extracted
  • During extraction, older files are not extracted
    (unless -u option is used)
  • Directories are not created unless d is used
  • Modification times not preserved with -m
  • Print the table of contents -t

8
cpio (continued)
  • cpio -ov
  • Copy out a list of files whose names are given on
    the standard input. -v lists files processed.
  • cpio -p options directory
  • Copy files to another directory on the same
    system. Destination pathnames are relative to the
    named directory
  • Example To copy a directory tree
  • find . -depth -print cpio -pdumv /mydir

9
pax replacement for cpio and tar
  • Portable Archive eXchange format
  • Part of POSIX
  • Reads/writes cpio and tar formats
  • Union of cpio and tar functionality
  • Files can come from standard input or command
    line
  • Sensible defaults
  • pax wf archive .c
  • pax r lt archive

10
Distributing Software
  • Pieces typically distributed
  • Binaries
  • Required runtime libraries
  • Data files
  • Man pages
  • Documentation
  • Header files
  • Typically packaged in an archive
  • e.g., perl-solaris.tgz or perl-5.8.5-9.i386.rpm

11
RPM
  • Red Hat Package Manager
  • Originally for Linux, has been ported to other
    UNIX flavors
  • Software distribution part of a package
  • Archive with binaries, documentation, libs, etc.
  • Extra file with meta-information
  • What each file is
  • What goes where
  • Other software that must be installed first
  • Version info
  • Helps with upgrades and removal

12
Packaging Source autoconf
  • Produces shell scripts that automatically
    configure software to adapt to UNIX-like systems.
  • Generates configuration script (configure)
  • The configure script checks for
  • programs
  • libraries
  • header files
  • typedefs
  • structures
  • compiler characteristics
  • library functions
  • system services
  • and generates build configuration

13
Installing Software From "Tarballs"
  • tar -xf lttar-filegt
  • cd ltdist-dirgt
  • ./configure
  • make install

14
Make
  • make A program for building and maintaining
    computer programs
  • developed at Bell Labs around 1978 by S. Feldman
    (now at IBM)
  • Instructions stored in a special format file
    called a makefile.

15
Make Features
  • Contains the build instructions for a project
  • Automatically updates files based on a series of
    dependency rules
  • Supports multiple configurations for a project
  • Only re-compiles necessary files after a change
    (conditional compilation)
  • Major time-saver for large projects
  • Uses timestamps of the intermediate files
  • Typical usage executable is updated from object
    files which are in turn compiled from source files

16
Dependency Graph
myprog
link
foo.o
bar.o
baz.o
compile
foo.c
bar.c
baz.c
baz.y
original
generated
17
Example Makefile
  • Example Makefile
  • CCg
  • CFLAGS-g Wall -DDEBUG
  • foobar foo.o bar.o
  • (CC) (CFLAGS) o foobar foo.o bar.o
  • foo.o foo.cpp foo.h
  • (CC) (CFLAGS) c foo.cpp
  • bar.o bar.cpp bar.h
  • (CC) (CFLAGS) c bar.cpp
  • clean
  • rm foo.o bar.o foobar

make make clean make f other_makefile
18
Version Control
  • Provide the ability to store/access and protect
    all of the versions of source code files
  • Provides the following benefits
  • If program has multiple versions, it keeps track
    only of differences between multiple versions.
  • Multi-user support. Allows only one person at
    the time to do the editing.
  • Provides a way to look at the history of program
    development.

19
Version Control Systems
  • SCCS UNIX Source Code Control System
  • Rochkind, Bell Labs, 1972.
  • RCS Revision Control System
  • Tichy, Purdue, 1980s.
  • Easy to use
  • Check-out files with locks
  • Revision history
  • CVS Concurrent Versions System
  • Grune, 1986, Berliner, 1989.
  • No exclusive locks
  • Client/server model

20
Debuggers
  • The GDB or DBX debuggers let you examine the
    internal workings of your code while the program
    runs.
  • Debuggers allow you to set breakpoints to stop
    the program's execution at a particular point of
    interest and examine variables.
  • To work with a debugger, you first have to
    recompile the program with the proper debugging
    options.
  • Use the -g command line parameter to cc, gcc, or
    CC
  • Example cc -g -c foo.c

21
Using the Debugger
  • Two ways to use a debugger
  • Run the debugger on your program, executing the
    program from within the debugger and see what
    happens
  • Post-mortem mode program has crashed and core
    dumped
  • You often won't be able to find out exactly what
    happened, but you usually get a stack trace.
  • A stack trace shows the chain of function calls
    where the program exited ungracefully
  • Does not always pinpoint what caused the problem.

22
GDB, the GNU Debugger
  • Text-based, invoked with
  • gdb ltprogramfilegt ltcorefilegtltpidgt
  • Argument descriptions
  • ltprogramfile gt executable program file
  • ltcorefilegt core dump of program
  • ltpidgt process id of already running program
  • Example
  • gdb ./hello
  • Compile ltprogramfilegt with g for debug info

23
Example GDB Commands
  • General Commands
  • run ltargsgt runs selected program with
    arguments ltargsgt
  • attach ltpidgt attach gdb to a running process
    ltpidgt
  • quit quits the gdb program
  • help lttopicgt accesses the internal help
    documentation
  • Stepping and Continuing
  • continue continue execution (after a stop)
  • step step one line, entering called
    functions
  • next step one line, without entering
    functions
  • finish finish the function and print the
    return value
  • Useful breakpoint commands
  • break ltwheregt sets breakpoints. ltwheregt can
    be a number of things, including a
    hex address, a function name, a
    line number, or a relative line offset
  • rwatch ltexprgt sets a watchpoint, which will
    break when ltexprgt is written to or read
  • info breakpoints prints out a listing of all
    breakpoints
  • clear ltwheregt clears a breakpoint at ltwheregt
  • delete ltnumsgt deletes breakpoints by number
  • Commands for looking around
  • backtrace ltngt prints a backtrace ltngt levels
    deep
  • print ltexprgt prints out the evaluation of
    ltexprgt

24
Tracing System Calls
  • Most operating systems contain a utility to
    monitor system calls
  • Linux strace, Solaris truss, SGI par

27mS 1 close(0) OK
27mS 1 open("try.in",
O_RDONLY, 017777627464) 29mS 1
END-open() 0 29mS 1
read(0, "1\n2\n/bin/date\n3\n/bin/sleep 2",
2048) 31 29mS 1 read(0,
0x7fff26ef, 2017) 0 29mS 1
getpagesize() 16384 29mS 1
brk(0x1001c000) OK 29mS 1
time() 1003207028 29mS 1
fork() 31mS 1
END-fork() 1880277 41mS 1
(1864078) was sent signal SIGCLD 31mS 2
waitsys(P_ALL, 0, 0x7fff2590,
WTRAPPEDWEXITED, 0) 42mS 2
END-waitsys(P_ALL, 0, signoSIGCLD, errno0,
codeCLD_EXITED, pid1880277, status0,
WTRAPPEDWEXITED, 0) 0 42mS 2
time() 1003207028
25
User Interface
26
The Early Days
  • The curses library allowed programs to take
    advantage of terminal features (e.g. vt100)
  • Special escape sequences to go to given position
  • Clear the screen
  • Font and color changes
  • Examples
  • vi, emacs, pine, lynx
  • More sophisticated screen, w3m

27
Window System History
28
History of X
  • Developed at MIT in 1984
  • Derived from Stanford project called W
  • X is now freely distributable, and available for
    UNIX, Windows, and Mac.

29
X Windows
  • The X Windows system is the standard graphical
    interface for UNIX
  • Distinguishing features
  • Allows multiple virtual terminals to be opened at
    once
  • Highly Customizable and extensible
  • Highly Portable
  • Works over networks

30
X Windows Architecture
  • Separation of display and programs
  • Connected by TCP/IP
  • Your display is the X server
  • Programs that run are clients
  • Confusing because backwards from what we are used
    to

31
X Windows Architecture
client machine
application server
Display Server
Display Client
X Windows Library
draw box
mouse event
port 6000
draw characters
keyboard event
32
Setting the display
  • The DISPLAY environment variable is used by X
    clients to decide which server to contact
  • Format serverdisplay
  • One host can have multiple displays
  • Display corresponds to port 6000 display
  • Default server localhost
  • Examples
  • 0
  • mymachine.cs.nyu.edu0
  • 128.112.13.32

33
Security
  • X Servers only accept commands from authorized
    hosts
  • The command xhost is used to enable/disable
  • xhost mymachine
  • xhost -mymachine
  • xhost Allow all hosts (dangerous!)
  • X connections are not encrypted and therefore
    insecure
  • SSH tunneling solves this

34
Configuration
  • X windows allows most things to be configured
  • Colors
  • Fonts
  • Positions
  • Decorations
  • Borders
  • Mouse bindings
  • Key bindings
  • Stored in /.Xdefaults

35
Window Managers
  • Provide the look and feel of X Windows.
  • In charge of
  • The placement of windows
  • UI for moving/resizing/iconifying windows
  • Window decorations
  • Because window managers are separate from X
    Windows, there are many to choose from
  • twm (tom's)
  • fvwm (free/fast virtual window manager)
  • mwm (Motif)
  • olvwm (Open Look)

36
twm
37
Motif
38
OpenLook
39
CDE
  • Common Desktop Environment
  • Combines functionality of
  • Motif
  • OpenLook
  • Response to threat of MS Windows

40
(No Transcript)
41
Disadvantages of X
  • X is a resource hog
  • On an 80x86 machine, 16 MB is the minimum amount
    of memory for decent performance
  • X has a large disk footprint
  • OpenLook, Suns window manager, takes up 30 MB
    of disk space for the binaries and libraries
  • On older, less powerful workstations, X also
    takes a performance hit
  • But this isnt a big deal on reasonably modern
    machines (386 and better, for PCs)

42
X Toolkits
  • X windows provides an API for doing low level
    graphics functionality (Xt)
  • Too cumbersome to use for many applications
  • Motif
  • Higher level widgets
  • Examples buttons, scrollbars, menus, etc.
  • Even higher level portability outside X
  • gtk
  • Qt

43
A Sampling of Motif Widgets
44
Example X Windows Program
include ltXm/PushB.hgt main(int argc, char
argv) Widget toplevel, button
XtAppContext app XmString label
XtSetLanguageProc (NULL, NULL, NULL)
toplevel XtVaAppInitialize (app, "Hello",
NULL, 0, argc, argv, NULL, NULL)
label XmStringCreateLocalized ("Push here to
say hello") button XtVaCreateManagedWidget
("pushme", xmPushButtonWidgetClass,
toplevel, XmNlabelString, label,
NULL) XmStringFree (label)
XtAddCallback (button, XmNactivateCallback,
button_pushed, NULL) XtRealizeWidget
(toplevel) XtAppMainLoop (app) void
button_pushed(Widget widget, XtPointer
client_data, XtPointer call_data) printf
("Hello Yourself!\n")
45
Gtk and Qt
  • Make it possible to write applications that work
    on X, Windows and MacOS
  • Even PDAs
  • Gtk GNU license. C API
  • Qt Property of Trolltech, free to use. C API
  • wxWindows common API

46
User Interface Builders
glade
47
Linux Window Managers
  • Trying to complete with MS Windows, advanced
    window managers have been developed
  • KDE
  • Gnome
  • Also include more advanced programming APIs for
    inter-program communication

48
KDE
49
GNOME
50
Ximan Desktop
51
Star Office / Open Office
52
The Gimp
53
Graphical Scripting
  • Several scripting languages exist with graphical
    primitives
  • The first widely used example was Tcl/Tk
  • Tcl scripting language
  • Tk built-in routines for graphics
  • Very good for quick prototypes
  • Similar to Visual Basic

54
Other Languages
  • The graphics part of Tcl/Tk has been ported to
    many other scripting languages
  • tkperl
  • tkpython
  • tksh

55
Other Scripting Extensions
  • tcl/tk led the way for scripting languages to
    allow user extended builtin commands.
  • Perl, Python, Kornshell all allow compiled
    C-libraries to be plugged into the interpreter
  • SWIG tool to wrap up any library
  • Examples
  • Database access
  • OpenGL

56
Terminal Windows Still Alive!
  • Popular terminal-oriented programs
  • pine
  • w3m
  • screen

57
MySQL
  • Open source database developed on Linux (GPL)
  • Others available include berkeleydb, postgress
  • Easy to administer

mysqladmin -uroot create guestbookdb mysql
-uroot -e" CREATE TABLE guestbook ( name
char(255) not null,age int(3) unsigned,email
char(255) not null,website char(255),comments
blob,time int(10) unsigned)" guestbookdb
58
MySQL Perl Example
  • use DBI
  • dbh DBI-gtconnect("DBImysqldatabaseserverDb
    hostserverName
    portserverPort",serverUser,serverPass)
  • sth dbh-gtprepare("SELECT name,age,email,websi
    te,comments,time               FROM
    serverTabl ORDER BY time")
  • sth-gtexecute
  • print "Existing Entries",hr
  • while(_at_row sth-gtfetchrow_array)    row5
    scalar(localtime(row5))   print "Name ",
    row0, br   print "Age ", row1,
    br   print "E-Mail Address ", row2,
    br   print "Web Site Address ", row3,
    br   print "Comments ", row4, br   print
    "Added on ", row5, hr
  • sth-gtfinish
  • dbh-gtdisconnect

59
MySQL PHP Example
  • lt?username"username"password"password"da
    tabase"your_database"mysql_connect(localhost,
    username,password)_at_mysql_select_db(database)
    or die( "Unable to select database")query"SELE
    CT FROM contacts"resultmysql_query(query)
    nummysql_numrows(result)mysql_close()echo
    "ltbgtltcentergtDatabase Outputlt/centergtlt/bgtltbrgtltbrgt"
    firstmysql_result(result,i,"first")lastm
    ysql_result(result,i,"last")phonemysql_resul
    t(result,i,"phone")mobilemysql_result(resul
    t,i,"mobile")faxmysql_result(result,i,"fax"
    )emailmysql_result(result,i,"email")webm
    ysql_result(result,i,"web")lttrgtlttdgtltfont
    face"Arial, Helvetica, sans-serif"gtlt? echo
    first." ".last ?gtlt/fontgtlt/tdgtlttdgtltfont
    face"Arial, Helvetica, sans-serif"gtlt? echo
    phone ?gtlt/fontgtlt/tdgtlttdgtltfont face"Arial,
    Helvetica, sans-serif"gtlt? echo mobile
    ?gtlt/fontgtlt/tdgtlttdgtltfont face"Arial, Helvetica,
    sans-serif"gtlt? echo fax ?gtlt/fontgtlt/tdgtlttdgtltfont
    face"Arial, Helvetica, sans-serif"gtlta
    href"mailtolt? echo email ?gt"gtE-maillt/agtlt/fontgt
    lt/tdgtlttdgtltfont face"Arial, Helvetica,
    sans-serif"gtlta href"lt? echo web
    ?gt"gtWebsitelt/agtlt/fontgtlt/tdgtlt/trgt?gt

60
Final Review
61
The UNIX Philosophy
  • Small is beautiful
  • Make each program do one thing well
  • More complex functionality by combining programs
  • Make every program a filter
  • Good for reuse
  • Avoid captive interfaces
  • Portability over efficiency
  • Use ASCII

62
The UNIX Philosophy
..continued
  • Scripting increases leverage and portability

print (who awk 'print 1' sort uniq)
sed 's/ /,/g'
List the logins of a systems users on a single
line.
who 755
awk 3,412
sort 2,614
uniq 302
sed 2,093
  • Build prototypes quickly (high level interpreted
    languages)

9,176 lines
63
Unix System Structure
user
c programsscripts
lsksh
gccfind
shell and utilities
open()fork()exec()
kernel
hardware
64
UNIX Concepts
  • File System
  • Standard in, out, error
  • Users and groups
  • Permissions
  • The shell
  • Pipes

65
Pipes
  • General idea The input of one program is the
    output of the other, and vice versa
  • Both programs run at the same time

A
B
66
UNIX Programs
  • Means of input
  • Program argumentscontrol information
  • Environment variablesstate information
  • Standard input data
  • Means of output
  • Return status code control information
  • Standard out data
  • Standard error error messages

67
Commands and Filters
  • Basic UNIX Commands
  • rm, cp, mv, ls
  • ps, kill
  • Unix Filters
  • cat, head, tail, tee, wc
  • cut, paste, tr
  • grep, egrep, fgrep
  • find, xargs
  • diff, cmp, comp

68
Regular Expressions
  • A regular expression (regex) describes a set of
    possible input strings.
  • Regular expressions are endemic to Unix
  • vi, ed, sed, and emacs
  • awk, tcl, perl and Python
  • grep, egrep, fgrep

69
This is one line of text
input line
o.o
regular expression
fgrep, grep, egrep
grep, egrep
grep
egrep
70
(No Transcript)
71
UNIX Scripting Languages
  • There are many choices for shells
  • Shell features evolved as UNIX grew

72
CGI Scripting
73
Important Aspects of Security
  • Make sure data is accessible to only those
    authorized to see it
  • Make sure people cant do things theyre not
    supposed to do
  • Make sure data is protected against corruption or
    loss

74
System Administration
  • Install, update and configure software
  • Define user accounts
  • Configure peripherals (disks, printers, etc)
  • Allocate disk storage
  • Back-up files and data, recover lost data
  • Monitor performance
  • Communication with users
  • Maintain system integrity (security, hardware)

75
Final Exam
  • Mostly material that was on midterm (75)
  • Should be more familiar now
  • Basic questions about
  • Administration
  • Security
  • Kernel
Write a Comment
User Comments (0)
About PowerShow.com