• Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

AltME groups: search

Help · search scripts · search articles · search mailing list

results summary

worldhits
r4wp55
r3wp797
total:852

results window for this page: [start: 601 end: 700]

world-name: r3wp

Group: Core ... Discuss core issues [web-public]
BrianH:
7-Jun-2009
ALTER is still in R3, though its usefulness is so limited it may 
be moved to R3/Plus. The enhanced logic flags that were supposed 
to replace it were removed in the latest release - they were never 
refined or documented to the point of being useful.
Ashley:
20-Jul-2009
Anyone have a nifty func to "untrim" a string? Something that converts:

	"ArialBold"

to:

	"Arial Bold"

Best I can come up with is a horrible replace loop:

	foreach char "ABC ..." [
		replace/all next string char join " " char
	]

 replace/all string "  " " " ; handle case where words were already 
 space seperated
Ashley:
20-Jul-2009
replace/all next -> replace/all/case next
Steeve:
8-Sep-2009
sorry, replace TRY by ATTEMPT
Steeve:
8-Sep-2009
and replace 
>> integer? attempt [first to block! trial/2]
by
>> attempt [to integer! trial/2]

Optimizations are a never ending task with Rebol ;-)
ChristianE:
20-Jan-2010
Yeah, it is a common idiom. But some symmetry to REMOVE FIND FLAGS 
FLAG would be nice, and I don't expect Carl or anyone to be willing 
to replace REMOVE FIND by another native or mezzanine. That wouldn't 
be worth it.

For now, I've decided to go with 

	>> union package/changes [weight]
	>> exclude package/changes [address]

since speed is really nothing to worry about in my case now.
BrianH:
21-Jan-2010
You would have to replace them with mezzanine code.
Pekr:
26-Jan-2010
amacleod - the fix is easy - just replace "insert tail tmp rest" 
by "insert tail tmp join main rest"
Ashley:
3-Apr-2010
Is there is better way to code the following idiom:

	foreach [from to] [
		"&" "&"
		"<" "&lt;"
		">" "&gt;"
		"^/" "<br>"
	][
		replace/all string from to
	]

I'm using this much too frequently for my own liking ;)
Maxim:
3-Apr-2010
still, replace is pretty fast... I don't know if the parse approach 
will be faster with only 4 items to replace.
Gregg:
3-Apr-2010
Ashley, I've done parse-based REPLACE funcs, and a simple TRANSLATE 
func, but I haven't generalized and dialected them the way I want 
to either. This week is busy for me, but if you want to collaborate 
on something, let me know. I think it would have a lot of value.
Ashley:
4-Apr-2010
A non-parse solution (for the replace problem) based on the existing 
replace mezz:

replace-each: make function! [
	target [series!] "Series that is being modified"
	values [block!] "Block of search/replace strings"
	/local len pos
][
	foreach [search replace] values [
		len: length? search
		while [pos: find target search] [
			target: change/part pos replace len 
		]
	]
]
Maxim:
23-Apr-2010
with R3 I want to replace every part of the kernel with commands, 
but for that, we need access to the object! datatype within extensions 
(or host-kit).
Maxim:
18-May-2010
look in profiling, there is a full script with verbose printing and 
everything you need, just replace the loop in one of the funcs  :-)
Maxim:
6-Jul-2010
note, they are not evaluated, even if you replace them with functions 
which have the same word.
Graham:
3-Aug-2010
This is the construct I saw which I don't like

either true [ tail s ][s ]

which I could  then replace with

 if/only true [ tail ] s
Ladislav:
21-Aug-2010
I would say, that your equivalent is fine. Since it is not that hard 
to use the "double bag", I doubt it justifies the refinement, since 
the refinement expression isn't shorter than the expression it is 
supposed to replace.
Anton:
25-Aug-2010
Gabriele, it would certainly be good to have your nice MAKE-CONTEXT 
built in. I had a strong feeling you had something like that already 
done. I just wish for a shorter function name. You're probably right 
about the higher frequency usage of USE, but I was just trying to 
find a way to minimize the characters typed.

In my proposed alternative reality, where  USE and DO USE  replace 
 MAKE-CONTEXT and USE, there would be a saving in typing only if 
DO USE was used less than 3 times as often as USE (ie. < 75% of the 
time).

If I could show that, then my alternative reality would at least 
have some typing advantage.
I don't have much hope of that, so I withdraw.
I'd be very happy with your MAKE-CONTEXT built in, anyway.
Maxim:
16-Sep-2010
if your source data actually has CRLF in them, just do:

replace/all datastr CRLF LF
BrianH:
1-Oct-2010
Sounds interesting. I know that CHANGE/part is the real fundamental 
operation, but that needs an additional parameter and would require 
renaming the option - /into isn't an appropriate name for that operation. 
But I don't think it would have been implemented in that case, and 
having it be a direct CHANGE would definitely not have been accepted 
because /into is mostly used to replace chained INSERT and APPEND 
operations.
Group: !RebGUI ... A lightweight alternative to VID [web-public]
Graham:
5-Nov-2007
Ashley, we talked about this before.  I  am looking for a way to 
spell check in a popup or static window attached to the area that 
is being checked, and to double click on the choice, have it replace 
the highlighted text, and then move on to the next text which is 
then highlighted.  I got it working except for the part of highlighting 
the next word that is suspect.  It highlights and then immediately 
loses the highlight .. perhaps something to do with the double click 
and focus system?
btiffin:
5-Nov-2007
I'd 'here here' on that one.  I've been mucking with a RebGUI based 
editor and getting a Find/Replace dialog working has been an excercise 
in hackery that I'm not a huge fan of.  (Much chasing of tail and 
subverting of code that I have too much respect for to allow the 
hackery.)
Ashley:
4-Dec-2007
Replace:


 info-area: "To see error: Press test button, then Status once" area

with:


 info-area: area "To see error: Press test button, then Status once"
Ashley:
5-Dec-2007
Also, replace:

	info-area/text: rejoin make block! head info-area-list

with:

	info-area/text: form rejoin make block! head info-area-list
Ashley:
26-Dec-2007
Graham, new tab-panel accessor is used as follows:

display "" [
	t: tab-panel data [
		"P1" [field]
		"P2" [field]
	]
	button [
		t/replace-tab 1 [field red]
	]
	button [
		t/replace-tab/title 1 [field blue] "Blue"
	]
]
Graham:
21-Feb-2008
do you have to be on the tab panel you are replacing to use tab-panel/replace-tab 
?  I see the new layout appear on the current tab.
Graham:
21-Feb-2008
Ashley, I got an error on these lines in replace-tab

		pane/:num/color: colors/page
		pane/:num/edge: outline-edge


I presume that there was a change to pane a while ago.  Was this 
related to the new look?
Ashley:
21-Feb-2008
do you have to be on the tab panel you are replacing to use tab-panel/replace-tab?
 ... No, see the following test case:

	t: tab-panel data [
		"A" [field]
		"B" [field]
	]
	button [t/replace-tab 2 [button]]

Click the button then tab "B".

... Was this related to the new look?

 ... yes, the new look is an extensive WIP that "breaks" build 112.

Are the function keys accessible under Linux?
 ... http://www.dobeash.com/RebGUI/user-guide.html#section-4.4
Kai:
7-Mar-2008
Ashley, I just tried the 'bistate option from 1.12 and am not sure 
that it works properly. I can toggle between green checkmark and 
blank box via left MB (and the red cross via the right MB has become 
unreachable).  I would have now expected the blank state to replace 
the off state but apparently it still does stand for NONE and displaying 
a CB in False state still shows the red cross......?
btiffin:
17-Mar-2008
I tried once.  But it was more an exercise in linking RebGUI menu 
Find/Replace to area ... too many hacks to keep caret in synch, so 
instead of tarnish Dobeash with my lousy code ... I just didn't. 
  But a quick RebGUI display of an area isn't too hard to pull off, 
but you need to rely on the built in key handlers.  Sadly Find/Replace 
is not in the list, but you do get a spell checker 'for free'.  ;) 
  In Ashley's defence, it is not the design intent of RebGUI to be 
an editor.


I've not tried, but Anton has been pumping out a new editor ... may 
conflict less than  editor  dunno, but I kinda doubt it will work 
without the same types of problems.

Alternative is to use CALL and launch an external editor.
Graham:
25-May-2008
I'm trying to create a widget that resembles the one from the MS 
demo

http://screencast.com/t/unHPOZ0oP


I've got a bunch of panels inside a scroll-panel.  When I click on 
a panel, I recreate the whole layout using replace-tab which is okay 
if I haven't scrolled down the panel, and add the area below the 
panel I clicked on.


If I have scrolled down, I capture the scroll-panel/panel/1/offset 
and then try and set it back again ... but when I show the scroll-panel 
even though the offset is eg. 0x-188, I stil need to scroll down 
to see it.

Ideas on how to show the scroll panel at the current pane offset?
Graham:
7-Jul-2008
and then I use tab-panel/replace-tab [ new layout ]
shadwolf:
28-Aug-2008
ctx-rebgui/rebface replace this by  : listview: make rebface [
Claude:
7-Oct-2008
i replace this func by a face/text:  with show face
Graham:
22-Jan-2009
I am trying to use the function keys to replace a mouse click on 
the "Save" button.  But the function keys are  global .... so if 
one defines it to have a specific action for one screen, there's 
bound to be a problem where the wrong definition arises.
Graham:
22-Jan-2009
Pekr, you can create empty tabs, and then replace the tab contents 
dynamically.
Graham:
23-Apr-2009
however, I can't reproduce it outside my app yet.  
Now if I replace the above with 

add2script: has [ tl ][
    view/new layout [
        t1: text-list 100x100 data [ "one" ] [ print t1/text ]
    ]
]

then double click always produces two windows ...
marek:
24-Aug-2009
Can I ask how to replace append-widget funcionality? Is there anything 
simpler that making custom distribution with %custom.r widget?
Ashley:
25-Aug-2009
how to replace append-widget funcionality?
 ... make your own custom distribution in three easy steps:
Graham:
25-Aug-2009
What I do at present is use a tab-panel and have the loading gif 
in one, and then replace that panel with the table once the data 
arrives
Ashley:
25-Aug-2009
(replace loop 20 with loop n)
Ashley:
7-Sep-2009
Build 214
- updated toggle (2x2 edge on select)
- added missing btn widget
- added missing chat widget
- added flash requestor
- added request-about
- renamed request-password to request-pass

Flash is used as follows:

	...
	flash "message"
	...
	hide-popup
	wait []
	...

request-about is used as follows:


 request-about/url "MyProj" 0.0.1 "Copyright (c) MyCo" "www.site.com" 
 ; or a url!


Note the logo is located in ctx-rebgui/images/logo and defaults to 
the info icon ... replace with your own logo image as follows:

	ctx-rebgui/images/logo: load %my-logo.png
jack-ort:
25-Feb-2010
Ashley - that got me started, but where I get stuck is on the syntax 
to refer to a widget *in another window*.  In the sample below, I 
want my "Save" button to not only write a new record to my SQLite 
db, but also to refresh the query that loads the table in the parent 
window (OR, can I refresh the parent window table after the child 
window closes and the focus returns to the parent?  I cannot seem 
to trigger any focus events.).  I was trying to wrap my windows in 
objects, which are new to me also, so I'm sure that is part of my 
problem.  Obviously my attempt to refer to my table by this path 
(adddelusers/gui/tbl/data) is incorrect, since I get this error:

** Script Error: Invalid path value: tbl
** Where: on-click

** Near: insert adddelusers/gui/tbl/data (sql/flat "select * from 
users order by userid") adddelusers/gui/tbl/redraw

adddelusers: context [
			title: {Add/Remove Users}

   tbldata: copy esql/rtn [sql/flat "select * from users order by userid"][]
			gui: [

    tbl: table 125x50 options ["UserID" left 0.2 "Password" left 0.8] 
				return
				button "Add User" 30 on [
										click [display/parent adduser/title adduser/gui ]
									]
				button "Remove User" 30 [alert "need to add code here..."]
						]	
]

adduser: context [
		title: {Add User}
		gui: [	
				user:	field text "username" return
				pwd:	field text "password" return

    button "Save" [sql compose ["insert or replace into users values 
    (?,?)" (to-word user/text) (to-binary checksum/secure pwd/text)]

         insert adddelusers/gui/tbl/data (sql/flat "select * from users order 
         by userid") adddelusers/gui/tbl/redraw
								unview adduser/gui ]
				button "Cancel" [unview adduser/gui]
		]
	]
jack-ort:
25-Feb-2010
Ashley - that got me started, but where I get stuck is on the syntax 
to refer to a widget *in another window*.  In the sample below, I 
want my "Save" button to not only write a new record to my SQLite 
db, but also to refresh the query that loads the table in the parent 
window (OR, can I refresh the parent window table after the child 
window closes and the focus returns to the parent?  I cannot seem 
to trigger any focus events.).  I was trying to wrap my windows in 
objects, which are new to me also, so I'm sure that is part of my 
problem.  Obviously my attempt to refer to my table by this path 
(adddelusers/gui/tbl/data) is incorrect, since I get this error:

** Script Error: Invalid path value: tbl
** Where: on-click

** Near: insert adddelusers/gui/tbl/data (sql/flat "select * from 
users order by userid") adddelusers/gui/tbl/redraw

adddelusers: context [
			title: {Add/Remove Users}

   tbldata: copy esql/rtn [sql/flat "select * from users order by userid"][]
			gui: [

    tbl: table 125x50 options ["UserID" left 0.2 "Password" left 0.8] 
				return
				button "Add User" 30 on [
										click [display/parent adduser/title adduser/gui ]
									]
				button "Remove User" 30 [alert "need to add code here..."]
						]	
]

adduser: context [
		title: {Add User}
		gui: [	
				user:	field text "username" return
				pwd:	field text "password" return

    button "Save" [sql compose ["insert or replace into users values 
    (?,?)" (to-word user/text) (to-binary checksum/secure pwd/text)]

         insert adddelusers/gui/tbl/data (sql/flat "select * from users order 
         by userid") adddelusers/gui/tbl/redraw
								unview adduser/gui ]
				button "Cancel" [unview adduser/gui]
		]
	]
Ashley:
9-May-2010
Replace 'load-image with 'load unless you want to cache the image.
Ashley:
14-Sep-2010
re: button colors. A QAD fix for b117 follows:


Edit rebgui.r and make the following changes to the button widget 
starting on line 1260:

	- Add a new attribute ... old-color: none
	- Add the following to the init function ... old-color: color

 - Change color references ... replace "colors/theme-dark" with "face/old-color" 
 (leave the "color = colors/theme-dark" ref though)
Awi:
14-Jan-2011
This don't happen in b117 (the same code, except I had to replace 
'question' to 'confirm' and 'ctx-rebgui/layout/only' to 'layout/only')
GrahamC:
17-Jan-2011
Yeah ... the docs are in this channel for the tricky stuff.  But 
Ashley has assumed that R3 was going to quickly replace R2 hence 
the lack of movement here.
Gabriele:
24-Mar-2011
Timers are not really related to multithreading. If you only need 
a timer, you can just use WAIT with a time! or integer! value. Also, 
one way to work around problems that may happen when using WAIT inside 
a face action is to disable the event port, then WAIT, then enable 
it again. Eg, in your above code, replace the WAIT 0 with:

    saved: system/ports/wait-list
    system/ports/wait-list: []
    wait 0
    system/ports/wait-list: saved


It may be better though to add the serial port to the wait list and 
handle things differently - I can't say without knowing more about 
your program.
Group: !REBOL3-OLD1 ... [web-public]
Maxim:
29-Apr-2009
you can't tell a company that invested several years to start over 
from scratch.  it has to be able to migrate without changing the 
habits... rebol has to sink into the other model first, then slowly, 
if it worth it, people will start putting rebol in the center and 
eventually, something like rebrowse can replace the current framework 
or maybe even live besides it while the migration takes place.
Maxim:
14-May-2009
money is usefull, just that it doesn't replace a real BCD type.
BrianH:
28-May-2009
Yeah, REDUCE/into and COMPOSE/into were designed to replace chained 
inserts or appends. They're pretty common in optimal code.
BrianH:
28-May-2009
We need utypes for host interoperability, to replace rebcode, and 
more. A utype will need to be able to react to the actions, just 
like a type
Pekr:
1-Jun-2009
Posted by Doc - "Having the TCP/IP part open-sourced in R3 will be 
great. It will allow to use much faster OS hooks for file transfers, 
extend the port! API to bind only on selected interfaces, etc...I 
wonder if the main event loop will be there also, so we can replace 
the not-scalable Select( ) call by other faster ones or even integrate 
libevent. That would definitely make Cheyenne able to handle a much 
higher number of connections."
BrianH:
3-Jun-2009
You wouldn't be able to make a unit a number!, or even a scalar!, 
but otherwise doable. As long as the unit is on the left side of 
a equation it would work. You wouldn't be able to replace money (prefix 
vs. postfix), but otherwise good.
BrianH:
3-Jun-2009
It still wouldn't replace money!, because the international standard 
syntax for specifying money uses a prefix, not a suffix.
Steeve:
3-Jun-2009
I was answering to Sunanda, a new name to replace money!
Ladislav:
13-Jun-2009
hmm, since it is about the deep copy, you can always replace it by 
doing it on your own
Maxim:
14-Jun-2009
what you are saying is that for modules, we need to start declaring 
words?  not very rebolish. 


 I have to do so in slim to keep words local to the calling context, 
 but I would have tought that modules would do so automatically since 
 they replace the global context.

 any new word in the root of the spec block of the module should be 
 added to the module's context and set to unset! just like R2's global 
 context does.
BrianH:
14-Jun-2009
Modules have their own context, but they don';t replace the "global" 
context.
Steeve:
24-Jun-2009
sunanda, in insert-compact, replace:
>>prev: pick here -1
by
>>prev: pick here 0
BrianH:
9-Jul-2009
I proposed an /ignore stuff option that would replace the old default 
behavior, and be more general. Then we could toss /all.
BrianH:
14-Jul-2009
Patrick, you can replace APPEND2 with APPEND APPEND.
BrianH:
14-Jul-2009
It's a global search-and-replace in the source rather than a simple 
assignment, but it works.
Pekr:
13-Aug-2009
excuse me, but what is wrong by escaping by ^{  and ^} ? In R2, left 
curly brace escaping does not work in console only, but script being 
run from file (which is case on the server anyway) is OK. In R3, 
which soon will be ready to replace R2 for such scenarios, it works 
even in console. But probably I am too dumb to understand the issue 
involved :-)


Could someone please give me a snipped of some quoted JS or other 
code, in order to get the issue? Would like to try the headache myself 
:-)
BrianH:
14-Aug-2009
What, did you think Carl was going to be the one to replace rebcode? 
:)
BrianH:
20-Aug-2009
The %rebol.r file is only meant to be used by the person who installs 
REBOL, for the purposes of adding custom stuff that is specific to 
a particular computer. Loading standard libraries will be handled 
by the module system instead. This is the same reason why we are 
planning to replace %user.r with a preferences file.
Henrik:
21-Aug-2009
I'm not sure it is. :-) but many things don't seem very useful on 
the surface. I'm still thinking in terms of setting mulitple words 
with multiple values in one operation. I hate picking words out of 
a block, one at a time. It becomes more powerful when you replace 
the blocks with words. Then you can use the same program structure 
to set one-to-many, one-to-one, many-to-one and many-to-many words.
Maxim:
26-Aug-2009
I don't see why you're having so much trouble... when I read the 
JSON reference docs a few months ago, I could almost do a replace/all 
of a JSON data set to REBOL's  seems pretty obvious to write a lib 
for.f
BrianH:
4-Sep-2009
Robert, you can do lazy evaluation using functions that replace themselves 
with their results. Anything more requires a full language semantics 
overhaul, and might not be possible in an interpreted language. What 
do you hope to accomplish?
Pekr:
9-Sep-2009
the list is sometimes strange - why 'replace has high priority, but 
other imo more important stuff has medium or low?
BrianH:
9-Sep-2009
I think you are underestimating how badly REPLACE sucks. I wrote 
it, so I know it is as good as you are going to get in mezzanine. 
And it's a widely used and reviled function.
Pekr:
9-Sep-2009
I agree about the need for replace being a native. I would prefer 
emphasis on other areas though, e.g. on parse enhancements :-)
Steeve:
9-Sep-2009
is there any new work version of REPLACE ?
BrianH:
9-Sep-2009
The new REPLACE would be native, and noone has made any proposed 
source or even spec yet. Still under discussion.
Steeve:
9-Sep-2009
probably, we should use APPLY :find in REPLACE to allow more options, 
no ?
BrianH:
9-Sep-2009
REPLACE has as many options as it can handle. The overhead of managing 
all of the REPLACE refinements is reaching the point of diminishing 
returns. The main problem of REPLACE isn't flexibility, it's performance.
Pekr:
22-Sep-2009
just don't replace STAY word with &, if you don't want to make situation 
even worse ...
Pekr:
22-Sep-2009
what are you talking about? You want to change the meaning-of, or 
replace | symbol? :-)
Pekr:
22-Sep-2009
Today I posted more philosophical topic, and Carl noticed it - we 
ares shooting ourselves in the foot. Here's what I posted:
-------------------

There will always be problem with dialects, if they contain the same 
keyword names as REBOL functions. So we have to somehow live with 
that.


So the question is, where to introduce new name and why, just to 
be different, and where to not. E.g. parse 'copy keyword has already 
different semantics to REBOL's one, or VID's 'at has different semantics 
to REBOL's one. Now can users be confused? It depends.


I try to think about each dialect in the context of the dialect itself 
- so the only measure for me actually is, when reading the source 
code (or trying to understand one's), how quickly I am able to understand, 
what is going on?


But then we could as well replace 'stay by 'save-position, 'of by 
'any-of, 'if by 'only-if, etc., which would imediatelly map the meaning 
to what the keywords are really doing. But we are somehow mysteriosly 
looking for one-word-only-mantra naming convention, and I suppose 
it is already our style, and we will not change it :-)


... so, the topic is a little bit more abstract - it is about contexts, 
and user/programmer switching between contexts, and his/her ease 
of understanding of the code.


In above case, all 'if, 'check, 'either are OK, even if their semantics 
is a bit different to their REBOL counterparts.
Pekr:
29-Sep-2009
why to replace anything later???
BrianH:
29-Sep-2009
The simulation I've been running of Carl isn't good enough to replace 
him, so forking isn't that effective :)
Pekr:
6-Oct-2009
how can I replace inbuilt fontize by my own? Will it be rewritten(redefined) 
by the demo call?
shadwolf:
2-Dec-2009
in php they do it like that 

	function getHTML($page=False)
	{
		if (!$page)
			$page = $this->path;
		$contents = "";

  $domain = (substr($this->domain, 0, 7) == "http://") ? substr($this->domain, 
  7) : $this->domain;



  if (@$fp = fsockopen($domain, $this->port, $this->errno, $this->errstr, 
  2))
		{
			fputs($fp, "GET ".$page." HTTP/1.1\r\n".

    "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)\r\n".
				"Accept: */*\r\n".
				"Host: ".$domain."\r\n\r\n");

			$c = 0;
			while (!feof($fp) && $c <= 20)
			{
				$contents .= fgets($fp, 4096);
				$c++;
			}

			fclose ($fp);

			$this->encodeContent($contents);

			preg_match("/(Content-Type:)(.*)/i", $contents, $matches);
			if (count($matches) > 0)
			{
				$contentType = trim($matches[2]);


    preg_match("/(meta http-equiv=\"Content-Type\" content=\"(.*); charset=(.*)\")/iU", 
    $contents, $matches);
				if (isset($matches[3]))
				{
					$this->setStreamEncoding($matches[3]);
				}
				if ($contentType == "text/html")
				{
					$this->isShoutcast = True;
					return $contents;
				}
				else
				{
					$this->isShoutcast = False;


     $htmlContent = substr($contents, 0, strpos($contents, "\r\n\r\n"));


     $dataStr = str_replace("\r", "\n", str_replace("\r\n", "\n", $contents));
					$lines = explode("\n", $dataStr);
					foreach ($lines AS $line)
					{
						if ($dp = strpos($line, ":"))
						{
							$key = substr($line, 0, $dp);
							$value = trim(substr($line, ($dp+1)));
							if (preg_match("/genre/i", $key))
								$this->nonShoutcastData['Stream Genre'] = $value;
							if (preg_match("/name/i", $key))
								$this->nonShoutcastData['Stream Title'] = $value;
							if (preg_match("/url/i", $key))
								$this->nonShoutcastData['Stream URL'] = $value;
							if (preg_match("/content-type/i", $key))
								$this->nonShoutcastData['Content Type'] = $value;
							if (preg_match("/icy-br/i", $key))

        $this->nonShoutcastData['Stream Status'] = "Stream is up at ".$value."kbps";
							if (preg_match("/icy-notice2/i", $key))
							{

        $this->nonShoutcastData['Server Status'] = "This is <span style=\"color: 
        red;\">not</span> a Shoutcast server!";
								if (preg_match("/ultravox/i", $value))

         $this->nonShoutcastData['Server Status'] .= " But an <a href=\"http://ultravox.aol.com/\" 
         target=\"_blank\">Ultravox</a> Server";
								$this->altServer = $value;
							}
						}
					}
					return nl2br($htmlContent);
				}
			}
			else
				return $contents;
		}
		else
		{
			return False;
		}
	}
Group: !Cheyenne ... Discussions about the Cheyenne Web Server [web-public]
Will:
23-Aug-2009
I use apache2-MPM as a reverse proxy in front of Cheyenne for the 
same reasons (static serving, ssl), works flawlessly, but now is 
time to move to nginx. Looking at MacPorts variants for nginx, there 
are many options that I see interestings:
root/trunk/build alpha% port variants nginx
nginx has the variants:
	dav: Add WebDAV support to server
	flv: Add FLV (Flash Video) streaming support to server
	mail: Add IMAP4/POP3 mail proxy support

 ssl: Add SSL (HTTPS) support to the server, and also to the mail 
 proxy if that is enabled
	status: Add /nginx_status support to the server

 perl5: Add perl support to the server directly within nginx and call 
 perl via SSI
	realip: Using nginx as a backend
	addition: Append text to pages
	substitution: Replace text in pages

 gzip_static: Avoids compressing the same file each time it is requested

 google_perftools: Enable Google Performance Tools profiling for workers

 upload: Enable Valery Kholodkov's upload module (http://grid.net.ru/nginx/upload.en.html)
	universal: Build for multiple architectures
Pekr:
22-Sep-2009
OK, but it can't replace Linux MTA generally, can it? I mean - installing 
Cheyenne with MTA can I replace the need for Sendmail for e.g. entirely?
Pekr:
15-Oct-2009
yes, it was supposed to replace Rugby and/or R/Services :-)
Dockimbel:
3-Jan-2010
To pass the c10k wall, we would need to replace the select( ) call 
by one of the other polling methods. That means changing the C network 
layer.
Davide:
3-Jan-2010
I would like to replace the tcp http server  with cheyenne.

Now I'm using a modified hipe server by Maarten Koopmans, but it's 
not async, so some things are currently not possible
Pekr:
10-Jan-2010
Flash might move to RIA (but who's interested to do real apps in 
Flash?) or - many mp3 etc vendors are doing their UI using flash. 
As for html 5, we are still talking vapor, unless it is supported 
by most browsers, which are used by most ppl IE still has 62% of 
share, and IIRC CSS3 and HTML5 are going to be supported in IE9. 
How long do you think will it take to replace those 60% of IEs out 
there by IE9? Well ... I know what you are trying to say ... it is 
inevitable ... but ... not yet, not yet :-) .... this probably belongs 
to advocacy though ....
Terry:
13-Jan-2010
This works in answer to my last questions.. 

	on-message: func [client data][
		;-- escape all html tags for security concerns
		data: copy data
		replace/all data "<" "&lt;"
		replace/all data ">" "&gt;"

		params: load copy data  
			
		do-task/on-done data func [client data][
		 n: do load %test2.r
		 broadcast out
		]
	]
Terry:
13-Jan-2010
Here's a better version.. with basic error notification;

	on-message: func [client data][
		;-- escape all html tags for security concerns
		data: copy data
		replace/all data "<" "&lt;"
		replace/all data ">" "&gt;"

		params: load copy data  
			
		do-task/on-done data func [client data][

   if error? try[do load %test2.r][out: "alert('error with test2.r');"]
		 broadcast out
		]
	]
Will:
14-Jan-2010
Carl, good to hear you trying out Cheyenne 8-)  now you know why 
we need threading in R3 to replace the worker processes.

BTW, I see you are running version 0.9.19 which is a bit old, I really 
suggest you dowload latest SVN from here:
  svn checkout http://cheyenne-server.googlecode.com/svn/trunk/
I personally run it from source. W la Rebolution!
Janko:
22-Mar-2010
Some texts (that are part of application) are a little longer. I 
was thinking of replacing all of them with "tags", like "add_now" 
instead of "Add now" and "warning_text" instead of "bla bla ........................" 
and having the default language as this tag language from which it 
is then translated to english, slovene, etc.. anyone has any thoughts 
about this?


I could also make a tool that would statically replace all the values 
in say "..." and #[...] if I decide to do so at one time. That's 
why I would preferr the same system for most of things.


I will probably have a separate files where the whole page is text 
, like the instructions.
Dockimbel:
9-Jul-2010
Terry: just replace ws:// by http:// and test the URL from rebol 
console with a READ (from your server box)
Dockimbel:
11-Jul-2010
AJAX will remain in use I guess, having a permanent connection is 
not always required and makes servers less scalable. Websockets will 
mainly replace all COMET tricks for server-side events.
NickA:
27-Jul-2010
Endo, for the moment, use 4 spaces for tabs, and you're formatting 
will stay intact.  I'll change the script to replace tabs with spaces.
Graham:
3-Aug-2010
Found this in misc/service.r


; TBD: replace alert function by a call to MessageBox win32 API (would 
work with both Core&View)
alert: func [msg /local svs][
	svs: system/view/screen-face
	svs/pane: reduce [
		make face [
			offset: (system/view/screen-face/size - 200x50) / 2
			size: 400x100
			pane: make face [
				size: 380x80
				offset: 0x24
				text: msg
			]
		]
	]
	show svs
	open-events
	wait []
	clear svs/pane
	show svs
]
Davide:
3-Sep-2010
I've made a func to calculate the challengin code given the header 
request.

It was in the "I'm new" section, but it works nicely, I'm using it 
very often, so it's well tested.


ws-chall: funct [header [string!]] [		
	
	cnt: funct [k] [
		n: copy "" 
		ns: 0 
		repeat x k [
			if all [x >= #"0" x <= #"9"][
				append n x
			] 
			if x = #" " [
				ns: ns + 1
			]
		]
		if ns = 0 [
			return none
		]			
		(to decimal! n) / ns
	]
	
	int-2-char: funct [n [integer! decimal!]] [
		;n: to decimal! n
		head insert insert insert insert make string! 4
			to char! n / 16777216
			to char! (n // 16777216) / 65536 
			to char! (n // 65536) / 256
			to char! n // 256
	]

	attempt [
		t: parse/all replace/all header crlf lf "^/"

  l: copy [] repeat x t [if n: find x ":" [insert tail l reduce [copy/part 
  x (index? n) - 1 next n]]] l: head l
		k1: next select l "Sec-WebSocket-Key1"
		k2: next select l "Sec-WebSocket-Key2"
		k3: next next find header "^/^/"
		aux1: cnt k1
		aux2: cnt k2
	]

	if any [none? aux1 none? aux2 none? k3] [return ""]

 to-string checksum/method rejoin [int-2-char aux1 int-2-char aux2 
 k3] 'md5		
]
amacleod:
7-Jan-2011
That worked. I get the alert but there is an error that  "data"  
(my variable) is undefined.


Can I use use the application/json header and if so what is the syntax...do 
I just replace the the "text/html" string?
601 / 852123456[7] 89