Chat Transcript, Sunday June 22


=> [wachsmut] joins at Sun Jun 29 19:57:49 1997 from 143.229.3.60
=> [David] joins at Sun Jun 29 19:58:04 1997 from 151.198.127.2

David=> Hello

=> [wachsmut] leaves at Sun Jun 29 19:58:19 1997
=> [wachsmut] joins at Sun Jun 29 19:58:22 1997 from 143.229.3.60

wachsmut=> Hello David
wachsmut=> is it 8:00 now, on your watch ?

=> [Rob] joins at Sun Jun 29 19:58:51 1997 from 128.122.237.116

wachsmut=> hi rob ...
Rob=> hi
David=>
wachsmut=> Alright, our LAST chat session - hope you're disappointed !
Rob=> last but not least!
wachsmut=> Right - and I hope everyone shows up
wachsmut=> well ... I can live with one person missing ... -:)
wachsmut=> It's 8:02 here, let's wait a little and hope for the best !

=> [Don] joins at Sun Jun 29 20:01:11 1997 from 206.173.45.51

wachsmut=> hi don !
Don=> what's up guys
wachsmut=> well, so far 3 out of 6 ... that's a start !
wachsmut=> let's wait for two more minutes before starting the "final chapter" ....
wachsmut=> but, of coures, you're welcome to "converse" .....
Rob=> Can I ask for a clarification of something you said in the last class?
wachsmut=> yes ! Please ....
Rob=> It has to do with doing the slide show with a canvas...
Rob=> did you say the hard part was getting the URL in the canvas?
wachsmut=> yes .... tricky business, with an easy solution
wachsmut=> sorry
Rob=> I tried this this afternoon...
wachsmut=> not the URL, but the "getImage" ....
wachsmut=> yes, and did it work ?
Rob=> getDocumentBase?
wachsmut=> yes, that, too ....
Rob=> No.. I didn't spend t
Rob=> THAT much time on it, but I started trying to PASS the url into the canvas
Rob=> from the applet. Not probably the right idea.
wachsmut=> great ! that's the idea indeed !
Rob=> Great!
wachsmut=> Actually, you could do one of two things:
wachsmut=> 1. load the image in the applet, and PASS the "image" to the canvas
wachsmut=> 2. pass the entire "applet" into the canvas, then you can
wachsmut=> load the image from the canvas
wachsmut=> So, in other words, the canvas constructor looks like:
wachsmut=> public SlideCanvas(SlideShow master)
wachsmut=> and in your applet's "init" method, you instantiate it like this:
wachsmut=> SlideCanvas drawing = new SlideCanvas(this)
wachsmut=> then your canvas can use 'getDocumentBase' likie this:
wachsmut=> master.getDocumentBase();
wachsmut=> if you know what I mean .....
Rob=> the master. refers to the calling applet?
wachsmut=> Anyway, let's do what we have to today ....
wachsmut=> yes, rob.
wachsmut=> public SlideCanvas(SlideShow master)
wachsmut=> so "master" is of type SlideShow extending Applet, therefore
wachsmut=> possesing those methods such as 'getDocuentBase' and
wachsmut=> 'getImage'.
Rob=> hmm, ok, thanks... (I know what i"m doing tonight.)
wachsmut=> Alright ! Any other questions for now ?
wachsmut=> David, Don ?
Don=> sure
David=>
David=>
David=> no
wachsmut=> Don, you have a question ?
Don=> no i though you asked if wee were ready, sorry
wachsmut=> Alright, here's the gameplan for today:
wachsmut=> I have several lectures available, and
wachsmut=> we will not really go into reading/writing.
David=> will chat from 6/21 be available soon?
wachsmut=> but you can read the lecture notes ....
wachsmut=> yes ... I am sorry, I forgot to post the chat transcript
wachsmut=> I'll post both tonight, sorry about that !
David=> no problem
wachsmut=> Anyway, we'll take a look at client/server examples,
wachsmut=> play a game of "guess that server", then introduce
wachsmut=> SQL servers, and a simple client for that.
wachsmut=> Then we enjoy the rest of this sunday .....
wachsmut=> Alright, here's a very brief description of client/server solutions:
wachsmut=> SERVER: a program with no user interface that sits on a - usually -
wachsmut=> large and fast machine
wachsmut=> CLIENT: a program with a user interface that usually runs on a PC
wachsmut=> or MAC and connects to a server
wachsmut=> PROTOCOL: the language that the client and the server speak
wachsmut=> so that they understand eachother.
wachsmut=> Very abstract...... so, here's an example:
wachsmut=> please all start Telnet and connect to Sciris, and login as usual.
wachsmut=> Come back and say "done" when done.....
wachsmut=> go ahead, please.
David=>
David=> done
wachsmut=> great .... let's wait for the others ....
Rob=> back
wachsmut=> alright, let's see how Don is doing ....
Don=> hold on still trying
wachsmut=> no problem ...
Don=> alright, looks good
wachsmut=> Great.
wachsmut=> Now, go to your teln
wachsmut=> That's your first example of a client/server solution already.
wachsmut=> telnet: the client
wachsmut=> the server is a program called "telnetd' running on sciris
wachsmut=> the protocol is: pass all characters from telnet to telnetd, and
wachsmut=> all characters from telnetd to telnet ....
wachsmut=> telnet is actually very general, here's a simpler example.
wachsmut=> Go to your telnet session, and type:
wachsmut=> telnet sciris 13
wachsmut=> wait
wachsmut=> then tell me what kind of server is answering, and what the protocol
wachsmut=> might be ..... and give that server a name.....
wachsmut=> go ahead
wachsmut=> telnet sciris 13
wachsmut=> did you see anything ? If so, what /
Don=> the protocol looks loke TCP/IP but i don't know the type of server
wachsmut=> what did you see ?
David=>
Don=> an address
David=> ftp address
Don=> connected to
Don=> escape char is
Don=> then the time
David=>
wachsmut=> YES !
David=> date & time
wachsmut=> EXACLTY !
David=> close session
wachsmut=> The first couple of lines are always present when
wachsmut=> using telnet.
wachsmut=> but the day & time was the thing that the server returned.
wachsmut=> It's called the "daytime" server, and is used for synchornizing
wachsmut=> Unix machines.
wachsmut=> One machine can accomodate many server.
wachsmut=> Each server - also called a "daemon" - guards what's called a port.
wachsmut=> When you "knock" at that port, the server answers, and
wachsmut=> if you know the right protocol, you can communicate with the server.
wachsmut=> The "daytime" server runs on port 13 (hence telnet sciris 13),
wachsmut=> and the protocol is simple: if somebody "knocks", always send
wachsmut=> the time and date, then disconnect again.
wachsmut=> Alright, here's another server..... find me a name for that server.
wachsmut=> type:
wachsmut=> telnet sciris 7
wachsmut=> then
wachsmut=> type some lines and hit return ..... then come back here
wachsmut=> and tell me the name for the server that guards port 7.
wachsmut=> go ahead, please.
Don=> it is some type of repeat server
wachsmut=> right !
Don=> it displays what you just type in
Rob=> echo?
wachsmut=> It's called the "echo" server, great, Rob.
wachsmut=> That's another Unix standard, used mainly for testing client.
wachsmut=> sorry, clients. The protocol is simple:
wachsmut=> just return everything that the client says.
wachsmut=> Now, the problem is you can not easily quit that echo server !
wachsmut=> so, note that "Telnet" always says "Escape character is ^]"
wachsmut=> So, press "CONTROL-]", then type 'quit', then come back for another server.
wachsmut=> All back ?
Rob=> yes
Don=> yep
David=>
David=> yes
wachsmut=> great ....
wachsmut=>
wachsmut=> now try "telnet pirate.shu.edu 80" - look at what you see, but don't
wachsmut=> type anything, please ..... and, name that server !
wachsmut=> go ahead.
wachsmut=> Oopps, sorry, you don't see anything......
wachsmut=> are you back ?
Rob=> back
Don=>
Don=> yes
wachsmut=> alright, here's what I meant to say:
David=>
wachsmut=> type
David=> yes
wachsmut=> telnet pirate.shu.edu 80
wachsmut=> then type
wachsmut=> get index.html
wachsmut=> then name that server !
Don=> i got a bad coomand error
wachsmut=> Alright, go ahead, of course (sorry) ....
wachsmut=> yes ... actually, didn't it say "bad request" ?
Don=> yes
wachsmut=> And, it returned a bunch of stuff that gives away the
wachsmut=> identiy of the server ..... -:)
David=>
David=> 400?
wachsmut=> Hint: who talks things like "<BODY>" ... and "<H1>" ....
Don=> html
Rob=> internet server?
wachsmut=> not internet, but web server !
wachsmut=> Port 80 is the standard port for any web server !
wachsmut=> but, we don't know the protocol.
wachsmut=> Our request "get index.html" was not understood by the server, so
wachsmut=> it returned an error message, then disconnected us.
wachsmut=> What's a better program to use (rather than telnet) to connect
wachsmut=> to port 80 of pirate ?
David=>
David=> ftp?
Don=> netscape?
wachsmut=> Yes: Netscpae
wachsmut=> it knows the right protocol, so it sends the 'right' request,
wachsmut=> and it also knows how to interprt the answer.
wachsmut=> two more tries:
wachsmut=> type:
wachsmut=> telnet www.uni-erlangen.de 13
wachsmut=> and tell me what time it is in Germany !
Rob=> (No relation to the Erlang distribution?)
wachsmut=> don't konw ....
wachsmut=> alright, what time ?
Don=> i get unknown host
David=>
David=> 2:35
Rob=> a.m.
wachsmut=> check your spelling ... yes, 2:35am ...
wachsmut=> So, we also know that the machine known as
wachsmut=> www.uni-erlangen.de has another name, and is a Unix machine,
wachsmut=> and is pretty "open", since it seems to allow connection on "standard"
wachsmut=> ports. It would be a good target for a "break-in" ... but we're not
wachsmut=> inclined towards that, of course.
wachsmut=> Any Unix machine has thoursands of ports,
wachsmut=> each port could be "guarded" by a seperate server.
wachsmut=> You can even write your own servers to wait behind some
wachsmut=> port for a connection, and then try to talk to the client.
wachsmut=> In one of the lectures, I have an example of
wachsmut=> an "echo client/server" package.
wachsmut=> Not too exciting, but it shows the principle.
wachsmut=> Now .....
wachsmut=> one very popular client server package is "SQL Client Server Databases"
wachsmut=> SQL = "Standardized Query Language"
wachsmut=> The SQL Server is a large, fast system with a fast and large
wachsmut=> hard disk that houses the company data. It understands
wachsmut=> "sql" commands, which are pretty user-unfriendly.
wachsmut=> So, you use an SQL Client program to connect to that server.
wachsmut=> The client says: hey, SQL server, give me all records for NAME=WACHSMUTH
wachsmut=> the Server then searches its vast database, finds the data records
wachsmut=> and retuns those.
wachsmut=> The client formats those records nicely, and displays them "pretty" on
wachsmut=> the screen.
wachsmut=> Alright, so, let's connect to our own SQL server.
wachsmut=> Go to your Telnet session, and type:
wachsmut=> msql csas4083
wachsmut=> then - if you don't get an error - please return and say so.
David=>
David=> now
wachsmut=> sure, go ahead.
Don=> get a welcome screen
David=> ok back
Rob=> back
wachsmut=> Great.
wachsmut=> That's very bad example of an SQL Client !
wachsmut=> It's does not look pretty, but at least it understands the SQL protocol,
wachsmut=> and it did connect to an "msql" server.
wachsmut=> MSQL stands for "Mini SQL" and is a free system with limited, but
wachsmut=> pretty useful SQL support.
wachsmut=> Let's look at the commands that msql understands.
wachsmut=> I'll show you a summary on your web screen, are you ready ?
David=>
David=> yes
Don=>
Rob=> ok
wachsmut=> Alright, here we go: take a brief look, then come back, please.
Don=>
David=>
David=> back
wachsmut=> great.
wachsmut=> Don, Rob, all back ?
Rob=> \ back
Don=> back
wachsmut=> Alright, you have there a summary of the commands you can use.
David=>
wachsmut=> The command "msq" is the client program
wachsmut=> the "csas4083" is a database I created for you, and you have full
wachsmut=> access to that database.
wachsmut=> In that database you can have many "tables" with data.
wachsmut=> For example, go back to "telnet" and type:
wachsmut=> select * from wachsmut_address \g
wachsmut=> including the "\g" at the end !
wachsmut=> go ahead, let me know what you see.
Don=> 2 rows of data
wachsmut=> exactly. All back ?
David=> yes
wachsmut=> Great ... please enter now your own information (first name, last name,
wachsmut=> telephon is optional). Here's the command to do it :
wachsmut=> (hand on, I need to try it first -:)
wachsmut=> alright, here we go. Type:
wachsmut=> insert into wachsmut_address (fname, lname, phone) values
David=>
wachsmut=> ('first name', 'last name', 'phone') \g
wachsmut=> where 'first name' etc is of course your own info.
wachsmut=> Go ahead, please try now, let me know when done.
David=>
David=> seem to be stuck in ->?
wachsmut=> type:
wachsmut=> \g
wachsmut=> for "go"
wachsmut=> here's to command again, with some fake name:
wachsmut=> insert into wachsmut_address (fname, lname, phone) values
wachsmut=> ('Joe', 'Doe','1112') \g
Don=> i got an arrow ->
wachsmut=> type:
wachsmut=> \g
Don=> then an^R
wachsmut=> if you get an arry (for "go").
Don=> thewn on another line an A
wachsmut=> Well ... did you all try, at least ?
Rob=> yes
David=> its working on it
David=> nothing came back yet?
Don=> looks like he got booted, lets go home???!!!
wachsmut=> I am back ... and listening !
Don=> whoops :-)
wachsmut=> Alright ... so again, this client is terrible !
David=>
wachsmut=> it's not userfriendly at all.
David=> nothing came back after entering command?
wachsmut=> (hit \g when done with a command)
David=> when you hit enter ..advances blank line
David=> still nothing
wachsmut=> Okay ... hang on .....
David=> anybody else?
wachsmut=> NOW, type:
wachsmut=> \q
wachsmut=> in the "msql" client to quit.
wachsmut=> Then, let me know when you're back for the "wrap-up" .....
David=> no response..exit telnet?
David=> i'm back
Rob=> back
wachsmut=> try an "end quote", then "\q"
wachsmut=> anyway, everybody back ... here's the end of the story:
wachsmut=> Since "msql" is a terrible sql client, your job is to write a better
wachsmut=> one, at least for a specific table.
wachsmut=> You can find - not now, anytime you like - two examples under
wachsmut=> http://sciris.shu.edu/~wachsmut/ShowCase
wachsmut=> and click on SQL handler, or the "PhoneBook".
wachsmut=> I'll put up lecture notes for how to do that on Monday, and you will
wachsmut=> find that - thanks to objects - it will be pretty easy !
wachsmut=> Also, try the following:
wachsmut=> read the "msql commands"
wachsmut=> type "msql csas4083" to connect to the database
wachsmut=> create your own tabl
wachsmut=> and add some info (look at the examples in the msql commands)
wachsmut=> also, try really hard to enter your name to my database !
wachsmut=> Again, I'll post how to do that again as part of the lecture.
David=>
wachsmut=> Other than that, that's it !
David=> ota
wachsmut=> So, see you Wed, one more time, and have a nice evening.
wachsmut=> I'll be around for a little for questions, if any.
David=> good evening
Rob=> ok.... good night all.
wachsmut=> night.
Don=> see ya wednesday
wachsmut=> see ya !
David=> ya sure Don

=> [Don] leaves at Sun Jun 29 21:02:28 1997
=> [David] leaves at Sun Jun 29 21:02:40 1997

wachsmut=> Rob, still there ? Any questions ?
Rob=> oh, sorry, I left and forgot to "leave"...
Rob=> nope, no questions... I'll keep working on the canvas problem..
wachsmut=> okay, post it if you have a questions
wachsmut=> it would be interesting to everyone, and it's a general
wachsmut=> problem in many applets !
wachsmut=> anyhow, talk to you Wed, then .....
Rob=> ok.. thanks....I actually think (maybe) I have an easier way to do it.
wachsmut=> then let *me* know !!!!
Rob=> (somehow I doubt it.. but if it works I'll certainly tell you.
Rob=> ok... great, see you
wachsmut=> Can't wait .... -:) bye !

=> [Rob] leaves at Sun Jun 29 21:05:17 1997
=> [wachsmut] leaves at Sun Jun 29 21:05:19 1997