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