Repeat Process To Check Contents of File on HTTP Server?

2009-05-06 Thread John Patten

Hi All!

I'm making a little web browser client that needs to check the  
contents of a file on a web server. It needs to be able to do this  
every 5 seconds or so in the background, and then if the contents  
changes in the last line of the file it is checking, it starts another  
process in the background. Can this be done in Rev? Would I use two  
stacks, one as the browser and one with the repeat loop?


I'm at a loss for what this might look like in a script?

Thanks in Advance!


John Patten
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Repeat Process To Check Contents of File on HTTP Server?

2009-05-06 Thread Phil Davis

John Patten wrote:

Hi All!

I'm making a little web browser client that needs to check the 
contents of a file on a web server. It needs to be able to do this 
every 5 seconds or so in the background, and then if the contents 
changes in the last line of the file it is checking, it starts another 
process in the background. Can this be done in Rev? Would I use two 
stacks, one as the browser and one with the repeat loop?


I'm at a loss for what this might look like in a script?


Hi John,

Are you familiar with the "send" command? If not, I think you're about 
to be... ;o)



-- prep: since you're looking for a change in data values,
-- you need to store its initial value so you have something
-- to compare to
global gOriginalData


-- and the data check has to be put into motion:
on openCard
  -- store initial value
  put url "http://my.website.com/targetfile.txt"; into gOriginalData
  -- put the data check into motion
  send "checkWebFile" to me in 5 secs
end openCard


-- the data check
on checkWebFile
  -- get fresh copy of the data
  put url "http://my.website.com/targetfile.txt"; into tCurrData
  if (last line of tCurrData <> last line of gOriginalData) then
 send ("startOtherProcess" && tCurrData) to me in 1 sec
  else -- data hasn't changed, so schedule another check
 send "checkWebFile" to me in 5 secs
  end if
end checkWebFile


-- the other background process
on startOtherProcess pChangedData
  -- do your other stuff here
end startOtherProcess


The "send... in" construct 'disconnects' the calling and called handlers 
from each other, so the calling one can finish executing before the 
called one starts. And by saying "in 5 secs", you insert idle time when 
the UI can be refreshed & interacted with. It keeps the user from being 
locked out of the UI due to continuous running of code you might have if 
you tried using a repeat loop for data checks.


Hopefully this will get you started.



Thanks in Advance!


John Patten 


--
Phil Davis

PDS Labs
Professional Software Development
http://pdslabs.net

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Repeat Process To Check Contents of File on HTTP Server?

2009-05-07 Thread Björnke von Gierke
I suggest to use the "put" command with the "url" keyword, using a  
"send in time" structure:


on mouseUp
  checkWebsite ""
end mouseUp

on checkWebsite thePrev
  put line -1 of url "http://yoursite.com/yourfile"; into theCurrent
  if thePrev <> theCurrent then
--do your stuff here, it changed!
  end if
  send checkWebsite theCurrent to me in 4.5 seconds
  --slightly less then 5 seconds, assuming the download of the whole  
file takes ca. 0.5 seconds

end checkWebsite


Be aware that clicking the button twice would have your code execute  
twice every 4.5 seconds, so maybe you should check the pendingMessages  
somehwere. The docu on that property also shows on how to stop the  
repeating.


On 7 May 2009, at 05:43, John Patten wrote:


Hi All!

I'm making a little web browser client that needs to check the  
contents of a file on a web server. It needs to be able to do this  
every 5 seconds or so in the background, and then if the contents  
changes in the last line of the file it is checking, it starts  
another process in the background. Can this be done in Rev? Would I  
use two stacks, one as the browser and one with the repeat loop?


I'm at a loss for what this might look like in a script?

Thanks in Advance!


John Patten
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your  
subscription preferences:

http://lists.runrev.com/mailman/listinfo/use-revolution




--

official ChatRev page:
http://bjoernke.com/runrev/chatrev.php

Chat with other RunRev developers:
go stack URL "http://bjoernke.com/stacks/chatrev/chatrev1.3b3.rev";

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Repeat Process To Check Contents of File on HTTP Server?

2009-05-08 Thread John Patten

Thanks Phil and Bjoernke!

That's what I needed..."send" command. Seems so obvious when you see  
someone else explain it :-)


Now, that I understand send, here's my dilemma. What I'm trying to  
create is a little app that allows a teacher in the classroom to push  
out a web site they have loaded in their "teacher" browser out to to  
all 32 student laptops in their classroom. I thought this would be a  
perfect implementation for revBrowser, a custom web browser.  I  
remember in the past struggling with Rev and opening sockets to try to  
get two Rev stacks to talk to each other. I never had very much  
success with that process so I thought I would try to keep it real  
basic and utilize web sharing and writing out a text file with the  
teacher's current web site address and time stamp to the local "web  
sites" folder. The client (student) computers would check that text  
file every 5 seconds, continually, and then if the time stamp is  
different from the last web address and time stamp, load the new web  
address in the client (student) browser.  The key word in those run on  
sentences is "continually."


In the examples shared, the scripts handlers are opencard and  
mousedown. They only run, essentially, one time through and after the  
time stamp is different, the script would end.


I started to mess with an idle handler, but that gets messy real  
quick. Is what I'm describing possible? To have a script run  
continually in the background over and over?  Or, maybe I'm going at  
this custom teacher to student web browser thing all wrong? Any ideas  
greatly appreciated!


Thank you!

John Patten


On May 7, 2009, at 10:00 AM, use-revolution-requ...@lists.runrev.com  
wrote:




  5. Re: Repeat Process To Check Contents of File on HTTP Server?
     (Phil Davis)

 12. Re: Repeat Process To Check Contents of File on HTTP Server?
 (Bj?rnke von Gierke)



--

Message: 5
Date: Wed, 06 May 2009 23:31:52 -0700
From: Phil Davis 
Subject: Re: Repeat Process To Check Contents of File on HTTP Server?
To: How to use Revolution 
Message-ID: <4a028058.9010...@pdslabs.net>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed

John Patten wrote:

Hi All!

I'm making a little web browser client that needs to check the
contents of a file on a web server. It needs to be able to do this
every 5 seconds or so in the background, and then if the contents
changes in the last line of the file it is checking, it starts  
another

process in the background. Can this be done in Rev? Would I use two
stacks, one as the browser and one with the repeat loop?

I'm at a loss for what this might look like in a script?


Hi John,

Are you familiar with the "send" command? If not, I think you're about
to be... ;o)


-- prep: since you're looking for a change in data values,
-- you need to store its initial value so you have something
-- to compare to
global gOriginalData


-- and the data check has to be put into motion:
on openCard
  -- store initial value
  put url "http://my.website.com/targetfile.txt"; into gOriginalData
  -- put the data check into motion
  send "checkWebFile" to me in 5 secs
end openCard


-- the data check
on checkWebFile
  -- get fresh copy of the data
  put url "http://my.website.com/targetfile.txt"; into tCurrData
  if (last line of tCurrData <> last line of gOriginalData) then
 send ("startOtherProcess" && tCurrData) to me in 1 sec
  else -- data hasn't changed, so schedule another check
 send "checkWebFile" to me in 5 secs
  end if
end checkWebFile


-- the other background process
on startOtherProcess pChangedData
  -- do your other stuff here
end startOtherProcess


The "send... in" construct 'disconnects' the calling and called  
handlers

from each other, so the calling one can finish executing before the
called one starts. And by saying "in 5 secs", you insert idle time  
when
the UI can be refreshed & interacted with. It keeps the user from  
being
locked out of the UI due to continuous running of code you might  
have if

you tried using a repeat loop for data checks.

Hopefully this will get you started.



Thanks in Advance!


John Patten


--
Phil Davis

PDS Labs
Professional Software Development
http://pdslabs.net



--


Message: 12
Date: Thu, 07 May 2009 15:34:20 +0200
From: Bj?rnke von Gierke 
Subject: Re: Repeat Process To Check Contents of File on HTTP Server?
To: How to use Revolution 
Message-ID: 
Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes

I suggest to use the "put" command with the "url" keyword, using a
"send in time" structure:

on mouseUp
  checkWebsite ""
end mouseUp

on checkWebsite thePrev
  put line -1 of url "http://your

Re: Repeat Process To Check Contents of File on HTTP Server?

2009-05-11 Thread Phil Davis

Hi John,

I'm assuming the following things are true:

   * everyone is using Windows, or at least all the kids
   * all the computers have access to the same shared hard disk,
 whether it's a file server or one person's computer.
   * there's a 'GoodLinks' folder on the shared disk where your links
 to web pages go.
   * I actually understand what you want to accomplish (that's probably
 the most iffy part)

On those assumptions, you could do this pretty simply. See if the 
following work flow would accomplish your goal.


First, your actions (or "use case" to make it sound more technical):

  1. The shared disk is mounted on your computer (and on all the client
 computers), and you have a shortcut to the shared 'GoodLinks'
 folder sitting on your desktop.
  2. You find a web page you want to share.
  3. You drag the web page's icon from the browser URL box onto the
 'GoodLinks' shortcut. This creates a "myGreatLink.URL" file in the
 GoodLinks folder on the server/shared disk.

Now the students' actions:

  1. When their computers start, a 'Checker' app (see code below) is
 launched and runs quietly in the background.
  2. Checker looks at the names of files in the 'GoodLinks' folder on
 the shared disk every x seconds (using the "send... in" command).
 When it finds a new file, it launches it.

I think that's everything. Now the code:


-- Checker stack script
on openStack
 send "checkForLinks" to me in 5 secs
end openStack


on checkForLinks
 -- get all link names
 set the defaultFolder to "X:/GoodLinks"
 put the detailed files into tList

  -- pick the most recently created link
 filter tList with "*.URL,*" -- to remove non-links from list
 sort lines of tList numeric descending by item 4 of each
 put line 1 of tList into tMostRecentLink
 put item 4 of tMostRecentLink into tMostRecentUpdate

 -- open link in browser if link is new
 if tMostRecentUpdate > (the seconds - 5) then
   launch document (urlDecode(item 1 of tMostRecentLink))
 end if

 -- schedule next execution
 send "checkForLinks" to me in 5 secs
end checkForLinks


A few points about this approach:

   * This way you don't need to store any previous values.
   * the code assumes that everyone's computer times are close to
 correct. If some student computer has their clock set to yesterday
 or tomorrow or last year, this code won't work as expected.
   * If you're using Macs in the classroom you'll probably need to
 change the "filter" command to look for a different file type
 (maybe .webloc), but otherwise it should work.
   * you notice there's no use of http or sockets - it's all done with
 file references.

I hope I got the problem right! I think accurate problem definition is 
about 70% of the solution.

Phil Davis


John Patten wrote:

Thanks Phil and Bjoernke!

That's what I needed..."send" command. Seems so obvious when you see 
someone else explain it :-)


Now, that I understand send, here's my dilemma. What I'm trying to 
create is a little app that allows a teacher in the classroom to push 
out a web site they have loaded in their "teacher" browser out to to 
all 32 student laptops in their classroom. I thought this would be a 
perfect implementation for revBrowser, a custom web browser.  I 
remember in the past struggling with Rev and opening sockets to try to 
get two Rev stacks to talk to each other. I never had very much 
success with that process so I thought I would try to keep it real 
basic and utilize web sharing and writing out a text file with the 
teacher's current web site address and time stamp to the local "web 
sites" folder. The client (student) computers would check that text 
file every 5 seconds, continually, and then if the time stamp is 
different from the last web address and time stamp, load the new web 
address in the client (student) browser.  The key word in those run on 
sentences is "continually."


In the examples shared, the scripts handlers are opencard and 
mousedown. They only run, essentially, one time through and after the 
time stamp is different, the script would end.


I started to mess with an idle handler, but that gets messy real 
quick. Is what I'm describing possible? To have a script run 
continually in the background over and over?  Or, maybe I'm going at 
this custom teacher to student web browser thing all wrong? Any ideas 
greatly appreciated!


Thank you!

John Patten


--
Phil Davis

PDS Labs
Professional Software Development
http://pdslabs.net

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution