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