Chat Transcript, 97-06-15
=> [David] joins at Sun Jun 15 19:55:22 1997 from 151.198.127.30
=> [Don] joins at Sun Jun 15 19:55:41 1997 from 206.173.45.35
David=> Hey Don | |
Don=> Whats up dave | |
David=> company just left, house is a mess | |
Don=> just got home, otherpeoples house is a mess | |
David=> works better that way! |
=> [Rob] joins at Sun Jun 15 19:58:52 1997 from 128.122.209.58
David=> I have 7:59 | |
Rob=> Hi everyone. | |
David=> Hello | |
Don=> let's get this show on the road | |
Rob=> I'm with you. | |
Rob=> How are you guys doing so far (coursewise)? | |
David=> OK, still need to invest more time. | |
Rob=> It does take a lot of time.... | |
Rob=> and it's pretty strange compared with non-oop. |
=> [wachsmut] joins at Sun Jun 15 20:02:07 1997 from 153.35.6.96
David=> yes | |
wachsmut=> Hi everybody .... | |
Don=> ahh, finally | |
wachsmut=> sorry I'm late .... | |
wachsmut=> First thing: | |
wachsmut=> happy father's day, for those who are .... |
=> [Jenn] joins at Sun Jun 15 20:02:41 1997 from 199.174.133.242
Don=> thanks, you too | |
David=> thank youditto | |
wachsmut=> and, no game 7 today ! | |
Don=> yaeh, your team got lucky | |
wachsmut=> well ... I did get my degree in the midwest, | |
wachsmut=> so I felt obliged to vote for the Bulls ... | |
wachsmut=> lucky me ! | |
wachsmut=> Anyway, I hope you enjoyed the 'breather' ... | |
wachsmut=> no new lecture until yesterday, hope you're 'caught up'.... | |
wachsmut=> I only have one question right now .... | |
wachsmut=> then we'll - try to - do something new .... | |
David=> no comment | |
wachsmut=> -:) | |
wachsmut=> So ..... this time, I ask you first: | |
wachsmut=> any questions ? | |
Rob=> I have a couple.... anybody else first? | |
wachsmut=> That's no surprise ... | |
wachsmut=> go ahead, maybe people will be less intimidated later ... | |
David=> go for it | |
Rob=> ok.. here goes: In our MoveBox example, what drew the outside rectangle? | |
Rob=> that is, the box the moving rectangle was in. | |
wachsmut=> you mean the outside rectangle that shows up in the lecture notes ? |
=> [David] leaves at Sun Jun 15 20:07:03 1997
Rob=> Hmmm, I think I just mean the box the buttons and the rectangel were in.... |
=> [aisha] joins at Sun Jun 15 20:07:19 1997 from 149.150.86.4
wachsmut=> I see, we can do that .... | |
wachsmut=> any drawing, and I mean *any drawing*, must be done by ... | |
wachsmut=> well, by which method ? | |
Rob=> paint | |
wachsmut=> (that's a 'public String question()') | |
wachsmut=> yes, exactly ! | |
wachsmut=> So, if you simply put, in any applet, a paint method, |
=> [David] joins at Sun Jun 15 20:08:22 1997 from 151.198.127.30
wachsmut=> or better, override the paint method, with a call like this: | |
wachsmut=> public void paint(Graphics g) | |
wachsmut=> { | |
wachsmut=> g.drawRect(0,0, size().width-1, size().height-1); | |
wachsmut=> } | |
wachsmut=> then you'll get a 'border' around the entire applet. | |
wachsmut=> Probably that's what you're referring to, I hope .... | |
Rob=> ok. that's why I asked... this is what you did in the DrawingCanvas example. | |
wachsmut=> Yes ... but actually, in the DrawingCanvas example, | |
wachsmut=> the box is not around the drawing area AND the buttons, | |
Rob=> right. | |
wachsmut=> it is only around the drawing area - which is, in some sense, | |
wachsmut=> the point of using a canvas ..... | |
wachsmut=> (that was my only question for today, I'll come back to that later) | |
wachsmut=> Any more questions ? | |
aisha=> no | |
Rob=> the default for action is super.action... what does super.action return? | |
Rob=> False? | |
wachsmut=> well, it depends .... | |
wachsmut=> return super.action(e, o) | |
wachsmut=> means that my action method will give the superclass | |
wachsmut=> a chance to handle the action event. If it does handle it, | |
wachsmut=> it will return true. But ... | |
wachsmut=> perhaps it, too, includes a call to super.action(e, o), in | |
wachsmut=> which case it passes the action event up one more time. | |
wachsmut=> An action method should return | |
wachsmut=> 'true' if it really handles the event, otherwise it | |
wachsmut=> should give the 'next' action method a chance to handle it. | |
wachsmut=> Matter of fact, that did cause lots of confusion | |
wachsmut=> in general, and that's exactly what | |
wachsmut=> was changed in Java 1.1 .... the event handling mechanism | |
wachsmut=> was improved a lot ... because people were pretty confused. | |
wachsmut=> For now, as a rule of thumb: | |
wachsmut=> - you handle the action even, you should return 'true'. | |
wachsmut=> - you don't handle it, you should give another action method a chance .... | |
wachsmut=> so much for that (from me). | |
wachsmut=> Anything else ? | |
aisha=> nope | |
David=> no | |
wachsmut=> (you are allowed to say no ....) | |
wachsmut=> Alright, then .... | |
wachsmut=> here's my question: | |
wachsmut=> what's a canvas, and what's it good for ? | |
wachsmut=> (while you're thinking, we have all five registered class members here !) | |
Rob=> It's a space on which to paint (no joke intended). | |
wachsmut=> (that's great, thanks for coming today !!!) | |
wachsmut=> | |
wachsmut=> Yes, exactly, that's what it is ! | |
wachsmut=> but .... | |
wachsmut=> you can always paint by simply overriding the 'paint' method, | |
wachsmut=> so why is a Canvas necessary ? | |
wachsmut=> well ... when you 'paint' in a, say, Frame, then your drawings | |
Rob=> It provides a specific object within the application in which the drawing ... | |
Rob=> takes place.... | |
wachsmut=> yes .... exactly, thanks, Rob. | |
Rob=> Or should I say applet? | |
wachsmut=> Anything ... | |
wachsmut=> a 'Canvas' can reside in anything (Frame, applet, etc).... | |
wachsmut=> If you simply override a 'paint' method inside a Frame, then | |
wachsmut=> your paintings will go 'everywhere', regardless | |
wachsmut=> of the GUI buttons, or anything else, that's already there. | |
wachsmut=> That means that often part of your drawing will be | |
wachsmut=> 'underneath' something else, hence it will not work right | |
wachsmut=> So ... | |
wachsmut=> if you paint inside a Canvas only, then you can | |
wachsmut=> use a layout manager to arrange that canvas together with | |
wachsmut=> the rest of your GUI componets, and then the | |
wachsmut=> drawing will only take place inside that canvas ! | |
wachsmut=> Let's take a look at an example .... | |
wachsmut=> First, as usual, you must be using | |
wachsmut=> Windows 95 + Netscape .... I hope you do ! | |
David=> ok | |
wachsmut=> I will be showing you an 'applet', that has two links at the bottom | |
wachsmut=> for some source code. Wait until the applet has loaded, then | |
wachsmut=> click on each of the source code links, and save the two files. | |
wachsmut=> to your disk. | |
wachsmut=> I mean the two source code files. | |
wachsmut=> Are you ready ? | |
wachsmut=> Please say 'yes' ... | |
Don=> yes | |
Rob=> yes | |
David=> yes | |
Jenn=> yes | |
wachsmut=> Aisha (I know, probably not using Win95 ...., oh well) | |
wachsmut=> Alright, here we go. Take 5 minutes to look things over, | |
wachsmut=> and save the source code .... | |
Rob=> Bert... I'm back... got these already from the lecture notes. | |
wachsmut=> please ... then, say 'aye' when you're back, please. | |
Rob=> probably.... |
=> [aisha] leaves at Sun Jun 15 20:25:42 1997
=> [Don] leaves at Sun Jun 15 20:25:50 1997
=> UNEXPECTED ERROR: client not found in list.
=> [Don13] joins at Sun Jun 15 20:26:01 1997 from 206.173.45.35
=> [aisha] joins at Sun Jun 15 20:26:21 1997 from 149.150.86.4
Jenn=> i'm back.. | |
Don13=> me too but as a different name |
=> [wachsmut] leaves at Sun Jun 15 20:26:53 1997
=> UNEXPECTED ERROR: client not found in list.
=> [wachsmut7] joins at Sun Jun 15 20:26:58 1997 from 153.35.6.96
aisha=> i'm still here | |
wachsmut7=> Alright, everybody back, then.... | |
wachsmut7=> Now, in that code (same as in the lecture) there's an applet and |
=> [Rob] leaves at Sun Jun 15 20:27:31 1997
=> UNEXPECTED ERROR: client not found in list.
wachsmut7=> a canvas class. The applet class simply arranges |
=> [Rob1] joins at Sun Jun 15 20:27:38 1997 from 128.122.209.58
Rob1=> hello.. back | |
wachsmut7=> all components on the screen, including the 'Canvas'. | |
wachsmut7=> the 'Canvas' class is responsible for drawing. | |
David=> | |
wachsmut7=> Since it is a Canvas, it can draw where ever it wants to, and | |
wachsmut7=> it won't disturb anything else. | |
wachsmut7=> Alright .... let's keep that in the back of our head for now. | |
wachsmut7=> We will now try to change that applet you've just seen, | |
wachsmut7=> so that the box will move 'by itself' .... | |
wachsmut7=> We may not finish, but we'll start .... | |
wachsmut7=> Alright .... | |
wachsmut7=> what we want to discuss, briefly, is 'threads'. | |
wachsmut7=> A thread is another piece of code that can execute | |
wachsmut7=> independently and at the same time with the rest of your code. | |
wachsmut7=> One program can have many threads (no limit) that all | |
wachsmut7=> work simultaneously, but they can also | |
wachsmut7=> be synchronized, if necessary. | |
wachsmut7=> How does it work ? | |
wachsmut7=> For a program to use a thread, several things are | |
wachsmut7=> necessary: | |
wachsmut7=> 1. your applet (or frame, or anything else) must | |
wachsmut7=> 'implement Runnable' after the 'extends whatever'. | |
wachsmut7=> 2. You usually have a field of type 'Thread' | |
wachsmut7=> 3. You must implement a method called 'run' | |
wachsmut7=> 4. You should implement two methods called 'start' and 'stop' | |
wachsmut7=> that's all..... | |
wachsmut7=> here's an example ....... | |
wachsmut7=> again, get ready for an applet, together with a link for source | |
wachsmut7=> code. Take 5 minutes to carefully look at the source code, | |
wachsmut7=> and especially try to identify the step 1 - 4 mentioned above. | |
wachsmut7=> Are you ready ? | |
David=> yes | |
Rob1=> yes | |
Jenn=> yes | |
Don13=> yes | |
aisha=> y | |
wachsmut7=> Alright, here we go. See you back here in 5 minutes from now.... |
=> [Don13] leaves at Sun Jun 15 20:34:11 1997
=> [aisha] leaves at Sun Jun 15 20:35:01 1997
=> [Don13] joins at Sun Jun 15 20:37:30 1997 from 206.173.45.35
David=> lk;lk | |
David=> back | |
wachsmut7=> lk; lk ????? | |
Don13=> back | |
wachsmut7=> Alright, every body back ? | |
Rob1=> yes |
=> [aisha] joins at Sun Jun 15 20:38:13 1997 from 149.150.86.4
Jenn=> i'm back.. | |
wachsmut7=> Jenn and Alisha ? | |
wachsmut7=> Sorry ... meant to say: aisha ? | |
aisha=> i'm here | |
wachsmut7=> Great.... | |
wachsmut7=> So, I hope you saw something that simply counts up, | |
wachsmut7=> until infinity. | |
wachsmut7=> Here's how it works, briefly: | |
wachsmut7=> the class extends Applet, so it's an applet .... | |
wachsmut7=> when it's loaded, the 'init' method executes .... and adds | |
wachsmut7=> the textfield to the layout area. | |
wachsmut7=> Then it calls 'start'. | |
wachsmut7=> Since the field 'thread' is initially 'null', the 'start' method | |
wachsmut7=> will instantiate a new thread, with input "this", and then call | |
wachsmut7=> the 'thread's start' method. | |
wachsmut7=> When the thread's start method is called, it will automatically (!) | |
wachsmut7=> execute the applet's 'run' method | |
wachsmut7=> and that method is an infinite loop: | |
wachsmut7=> it increase the counter, | |
wachsmut7=> updates the textfield | |
wachsmut7=> and puts the thread to sleep for 400 milliseconds | |
wachsmut7=> inside some funny 'try-catch' phrase. | |
wachsmut7=> Since the loop inside the 'run' method is | |
wachsmut7=> an infinite loop, it looks as if your program will count, and count, | |
wachsmut7=> and count, and count, .... | |
wachsmut7=> but .... | |
wachsmut7=> what do you simply have to do to stop counting ? | |
wachsmut7=> Any clues ???? | |
David=> lleave applet? | |
wachsmut7=> I.e. how can you interrupt the seamingly infinite loop in the 'run' method ! | |
wachsmut7=> YES ! | |
wachsmut7=> Actually, what do you mean, 'leave applet', and 'why' | |
David=> go to another url? which will stop execution | |
wachsmut7=> yes, and why will it stop execution ? | |
David=> ? | |
wachsmut7=> Well ... anyone ? | |
Rob1=> Leaving executes stop. | |
wachsmut7=> Right ! | |
Don13=> wasn't there a method that happened when you leave and enter a page | |
wachsmut7=> Since the applet has a 'stop' method, that method will automatically | |
wachsmut7=> execute when you leave the page .... | |
wachsmut7=> Alright, great question, Don13 .... | |
wachsmut7=> what will happen when you revisit the page ? | |
wachsmut7=> and, of course, why ? | |
Don13=> the applet will start agaion? | |
wachsmut7=> Yes, because it implements the 'start' method ! | |
wachsmut7=> Both, the 'start' and the 'stop' methods are cooked up so that |
=> [aisha] leaves at Sun Jun 15 20:46:52 1997
Don13=> does it sart from 0 or pick up where it left off? | |
wachsmut7=> I love it ... well ???? Take a guess !!!! | |
Don13=> probably from 0 right?? | |
wachsmut7=> Take another guess .... |
=> [aisha] joins at Sun Jun 15 20:47:21 1997 from 149.150.86.4
Don13=> pick up where it left off | |
Rob1=> Nothing re-initializes it. | |
wachsmut7=> look at the start method : does that method 'reset' the 'count' ? | |
wachsmut7=> As Rob said, it does not. | |
Rob1=> What does it mean thread != null? | |
wachsmut7=> It simply checks if the variable 'thread' is set to null. | |
wachsmut7=> 'null' is a special keyword, that refers to a 'well-defined' nothing-ness. | |
Rob1=> Sort of how I feel on monday mornings. | |
wachsmut7=> In the field declaration, 'thread = null' is declared. | |
Rob1=> Got it... and stop resets it to null. | |
wachsmut7=> then in start, thread is not null, because it get's instantiated. | |
wachsmut7=> Then, if you leave the page, the stop method sets 'thread = null'. | |
wachsmut7=> The start method will then, again, start the thread. | |
wachsmut7=> What would you have to do to 'reset' to zero after you leave and | |
wachsmut7=> re-enter the page ? | |
wachsmut7=> it's one line, added exactly where ? | |
David=> in the sip method? | |
David=> stop method | |
wachsmut7=> yes, that woud work. | |
wachsmut7=> Or, perhaps better, in the 'start' method. | |
wachsmut7=> Alright, that's the basic framework for using *one* thread: | |
David=> count + 0 | |
David=> = 0 | |
wachsmut7=> - declare a field 'thread' of type Thread, set it to null. | |
wachsmut7=> - define a 'start' method, exactly as the one you've seen | |
wachsmut7=> - define a 'stop' method, exactly as the one you've seen | |
wachsmut7=> - implement a run method .... | |
wachsmut7=> the run method *should* include a call to 'thread.sleep(###)', but | |
wachsmut7=> the rest of the run method is different for different tasks. | |
wachsmut7=> Actually, the 'thread.sleep(###)' is always embedded inside a | |
wachsmut7=> 'try-catch' block, just as you've seen. | |
wachsmut7=> So .... wanna change our 'Moving Box' to include a thread ? | |
wachsmut7=> I'll show you the applet, then .... | |
wachsmut7=> I'll quickly discuss the steps necessary to change the first source | |
wachsmut7=> code into that, and then - back to happy father's day ! | |
wachsmut7=> Alright, ready to see the final applet of the day ? | |
David=> yes | |
Rob1=> fire when ready | |
Jenn=> yes | |
aisha=> y | |
Don13=> sure | |
wachsmut7=> Alright, here we go ... be back soon, and say 'thanks' ... -:) |
=> [Don13] leaves at Sun Jun 15 20:55:33 1997
=> [aisha] leaves at Sun Jun 15 20:55:39 1997
David=> back | |
wachsmut7=> woah, that's quick .... | |
Jenn=> bback | |
wachsmut7=> Alright .... hang on just a little longer ! | |
wachsmut7=> David, Jenn back, how about the rest ? | |
Rob1=> back | |
wachsmut7=> Alrihgt .... two more ... | |
wachsmut7=> Well, here's the steps necessary to accomplish that: | |
wachsmut7=> First, the original code is the one we've seen, and saved, at the | |
wachsmut7=> beginning of our 'chat' ... two classes, one applet, one 'canvas' .... |
=> [Don13] joins at Sun Jun 15 20:58:21 1997 from 206.173.45.35
David=> yes | |
wachsmut7=> which one will get the 'thread' ????? (That's the 'key question') ! |
=> [aisha] joins at Sun Jun 15 20:58:42 1997 from 149.150.86.4
David=> applet | |
wachsmut7=> Remember, the applet handles the events, while | |
wachsmut7=> the 'canvas' handles the drawing.... | |
wachsmut7=> so, what does or thread do ? | |
wachsmut7=> Does it have to do with events, or does it have to do with | |
wachsmut7=> drawing ? | |
David=> drawing | |
wachsmut7=> Well ... the threa | |
wachsmut7=> Exactly ! | |
wachsmut7=> (sorry) ... | |
wachsmut7=> so, here's today's wrap-up .... | |
wachsmut7=> Take the 'DrawingCanvas' class from earlier, and do the following: | |
wachsmut7=> - add a field 'thread', set it to null, of type 'Thread' | |
wachsmut7=> - add 'implement Runnable' to the 'extends Canvas' | |
wachsmut7=> - add the 'standard' 'start' and 'stop' methods, as seen before | |
wachsmut7=> dealing with thread (called 'standard thread control) | |
wachsmut7=> - add a 'run' method including a thread.sleep(100) call inside | |
wachsmut7=> a 'try-catch' block', just as before, nothing new. | |
wachsmut7=> - here's the new stuff: | |
wachsmut7=> add a field 'String direction = "left" to the canvas class | |
wachsmut7=> add if statements to the 'run' method like this: | |
wachsmut7=> if (direction.equals("left")) | |
wachsmut7=> boolean dummy = handleLeft(); | |
wachsmut7=> else if (direction.equals("right")) | |
wachsmut7=> boolean dummy = handleRight(); | |
wachsmut7=> etc. | |
wachsmut7=> Finally, add one more method to the 'canvas' class: | |
wachsmut7=> public boolean changeDirection(String _direction) | |
wachsmut7=> { | |
wachsmut7=> direction = _direction; | |
wachsmut7=> return true; | |
wachsmut7=> } | |
wachsmut7=> Save and compile. | |
wachsmut7=> Change the applet, but only two changes: | |
wachsmut7=> - in the ation method, change 'handleLeft()' to | |
wachsmut7=> changeDirection("left"); | |
wachsmut7=> etc. | |
wachsmut7=> add 'drawing.start()' to the 'init()' method. | |
wachsmut7=> | |
wachsmut7=> That's it ! | |
wachsmut7=> I'll post the solution on Tuesday, but | |
wachsmut7=> I hope you'll experiment before that ! | |
wachsmut7=> Sorry I went overtime, class over - | |
wachsmut7=> I'll be hanging around for questions .... | |
wachsmut7=> if you have any ! | |
wachsmut7=> Thanks A LOT for all showing up on a great day as today ! | |
Rob1=> thank to YOU too. | |
Don13=> thanks, 'ill look this over again and post any questions to | |
wachsmut7=> P.S.: In case you didnt' catch it, I'll post the transcript in 30 minutes ! | |
Don13=> the discussion board | |
Don13=> bye! | |
David=> | |
wachsmut7=> Bye - love quesitons ! |
=> [Don13] leaves at Sun Jun 15 21:06:30 1997
Rob1=> bye | |
David=> good night |
=> [Don] leaves at Sun Jun 15 21:06:47 1997
=> [Rob1] leaves at Sun Jun 15 21:06:49 1997
=> [Rob1] joins at Sun Jun 15 21:06:53 1997 from 128.122.209.58
=> [Rob1] leaves at Sun Jun 15 21:06:55 1997
wachsmut7=> night ! |
=> [Rob] leaves at Sun Jun 15 21:07:06 1997
=> UNEXPECTED ERROR: client not found in list.
Jenn=> actually i have a question about the jdk... | |
wachsmut7=> yes ? |
=> [Rob1] joins at Sun Jun 15 21:07:19 1997 from 128.122.209.58
Jenn=> well i finally got my computer to work.. and i installed it and the pfe.. | |
wachsmut7=> GREAT ! | |
Jenn=> and i saved the files for my protfolio and compitled the program.. | |
wachsmut7=> so far so good ... |
=> [Rob1] leaves at Sun Jun 15 21:07:57 1997
Jenn=> but i keep getting 2 errors when i compile the test file |
=> [Rob1] joins at Sun Jun 15 21:08:08 1997 from 128.122.209.58
=> [David] leaves at Sun Jun 15 21:08:13 1997
aisha=> bye - great class :] - good night | |
wachsmut7=> Night, Aisha ! | |
wachsmut7=> (thanks) |
=> [Rob1] leaves at Sun Jun 15 21:08:29 1997
Jenn=> i mean the file with the main method... |
=> [aisha] leaves at Sun Jun 15 21:08:36 1997
wachsmut7=> what are those errors, Jenn ? | |
Jenn=> and i think i'm typing it in right.. | |
Jenn=> class Task not found in type declaration | |
wachsmut7=> Well, can you mail me the file ? I can take a look then ? | |
Jenn=> Task toDo = new Task(); | |
wachsmut7=> If you mail me right away, I'll look at it and have an answer 30 minutes | |
wachsmut7=> after I get it ..... | |
wachsmut7=> it's hard to discuss specifics such as that in 'chat' .... | |
Jenn=> but i compiled them in pico and they both compiled.. | |
wachsmut7=> Hmmm .... | |
wachsmut7=> sounds strange...... | |
wachsmut7=> perhaps you forgot another file ? Something like 'TaskTest.java' and | |
Jenn=> because i think the only way i can mail it to you is through my sciris account.. and i don't want to write over the files in there.. | |
wachsmut7=> 'Task.java', both in the same directory ? | |
wachsmut7=> No - you have Netscape, so you can email ! | |
Jenn=> i have Task.java as the program file | |
wachsmut7=> That is, send email, perhaps not receive it. | |
Jenn=> and TaskTest.java for the main file | |
wachsmut7=> Yes, that' right .... it sems ... and both in the same directory, I anm | |
wachsmut7=> | |
wachsmut7=> sure. | |
wachsmut7=> Wanna know how to send email with Netscape ? | |
Jenn=> i think i need information from the service that i dialed into for the netscape mail to work.. | |
Jenn=> and my brother won't give it to me... | |
wachsmut7=> Not at all .... | |
wachsmut7=> it's easy, no info needed ! | |
wachsmut7=> wanna know ? | |
Jenn=> oh... ok. let me try it.. | |
Jenn=> sure.. | |
wachsmut7=> Alright, here's the steps: | |
wachsmut7=> first, click on 'options', then pick 'mail and news' .... | |
wachsmut7=> make sure you find 'servers' or something like that, and you | |
Jenn=> oh yeah.. i downloaded netscape 4 and it's great! | |
wachsmut7=> Even better ... here's exactly what to do, then: | |
wachsmut7=> click on 'Edit', the 'Preferences'..... | |
Jenn=> uh huh... | |
wachsmut7=> then on 'Mail' and 'Groups' | |
wachsmut7=> (make sure you click on the little 'plus' sign') | |
wachsmut7=> click on Identity, fill in your name and email address at SHU | |
wachsmut7=> click on Mail server, and under SMTP server, fill in 'www.shu.edu' | |
wachsmut7=> That's it. | |
wachsmut7=> Leave incoming mail server (pop3) blank.... | |
wachsmut7=> Then click on File, then 'new', then 'message', and send your message | |
wachsmut7=> to 'wachsmut@shu.edu' - simply 'cut-and-paste' your source code, | |
wachsmut7=> or attach via the attach button. | |
wachsmut7=> Got it ? | |
Jenn=> got it! | |
Jenn=> thanx.. =) | |
wachsmut7=> Alright .... I'll be waiting ... if that does not work, | |
wachsmut7=> simply 'post' your code to the discussion area (perhaps that's | |
wachsmut7=> the better way, and easier, anyhow (using cut-and-paste) | |
Jenn=> oh yeah one more thing.. | |
wachsmut7=> yes ? | |
Jenn=> for me to put my program onto my homepage.. | |
Jenn=> do i have to copy it to the sciris account? | |
wachsmut7=> yes, using the 'FTP' program you can download from our | |
wachsmut7=> homepage. | |
wachsmut7=> I'll post some details, it's a good point (I forgot to do that | |
Jenn=> ok.. | |
wachsmut7=> so far, thanks for bringing it up ) | |
wachsmut7=> I'll have that done tomorrow, not tonight, though .... -:) | |
Jenn=> great... thanks for all your help! | |
wachsmut7=> Alright, then, waiting for your email ! And no problem ! | |
wachsmut7=> Bye . | |
Jenn=> bye |
=> [wachsmut7] leaves at Sun Jun 15 21:20:21 1997
=> [Jenn] leaves at Sun Jun 15 21:20:23 1997