User:Strife Onizuka/Talkpage Archive 01
Hi Strife,
I see recently you edited llGetKey to tell us that llGetKey returns a key for the prim the script is attached to.
Thank you! I had seen the English there before say that llGetKey returns a key for the task, but I haven't yet learned to distinguish "task" from "prim". I guess task and prim are often the same thing?
-- Ppaatt Lynagh 05:43, 2 October 2007 (PDT)
Hi Strife,
I came across your Dialog Module and wonder what is the ESL version published there. I tried a compile in-world, but it doesn't run. How did you manage that?
Greetz
--Huney Jewell 22:04, 20 September 2007 (PDT)
- ESL is LSL passed through a C/C++ preprocessor (you can use Microsoft's cl or gcc to do this). There isn't much talk about ESL these days but it's the way to fight off LSL induced insanity. It's a bit involved to set it up but once its working it's the bees knees. [1] [2] -- Strife Onizuka 01:12, 21 September 2007 (PDT)
Hi Strife,
why did you kill the routine for negative values in Meter2Feet? Results now are wrong if negative meter value is entered!
- Pffft, i'll check this out. -- Strife Onizuka 08:29, 12 September 2007 (PDT)
Sure the results are wrong; of course I checked that and restored the routine! And your constant for meter to feet conversion was also wrong, see here: http://en.wikipedia.org/wiki/Foot_%28unit_of_length%29
But nontheless many thx for your assistance. Nobody is perfect ;-)
Strife...
I don't know what you're doing..but I was really helped by the comment Indira Bekkers gave me.
I had to turn on the Pay-behavior..
Your description might be useful to you..but it doesn't say a thing to me.
So I'm going to put back my description ..without the name of course..
--Gal Canning 13:11, 3 August 2007 (PDT)
Hi Strife....the term is "deprecated", not "depreciated". See "Deprecation" in Wikipedia -- Rob Linden 16:37, 27 January 2007 (PST)
- I was wondering about that. I'll change the template (it's handled in the template).Strife Onizuka 16:42, 27 January 2007 (PST)
- I'm still learning the ins and outs of MediaWiki, so these templates are moving along.Strife Onizuka 17:25, 27 January 2007 (PST)
- Excellent work on the templates. The pages look really good! -- Rob Linden 18:38, 27 January 2007 (PST)
- It's amazing what can be done with good documentation. MediaWiki is gold (just wish it was 1.9.x).
- I was considering making some generic templates for function definition pages. Hasn't happened yet. And still have to make the templates for events.
- And I made a bit of a mess of the Template namespace (you can delete the redirecting pages). Getting out of the habit of using CamelCase is tough ~_~ Strife Onizuka 18:59, 27 January 2007 (PST)
- Great to see your contributions, Strife. Thanx for building up this resource. --Torley Linden 14:25, 30 January 2007 (PST)
Template magic needed
Hi Strife: great work on the wiki so far. When you get a chance, could you take a look at Template:LSL conformance test and Template:LSL conformance script, which were created for adding our conformance suite? See LSL llGetUnixTime test for an example. I'm mainly looking for help making sure that the interface is sensible (i.e. the template parameter list makes sense and the general structure makes sense). The formatting can wait. The idea is to get these stabilized, and that will provide us a mechanism for those of us at LL to consolidate our tests, and for the community to chip in if desired. -- Rob Linden 22:46, 7 February 2007 (PST)
(moved rest of conversation to Template talk:LSL conformance test -- Rob Linden 22:22, 8 February 2007 (PST))
function & generic template
Are you planning on putting something in your templates for constants used by that function or event? Anthony Reisman
- There is, just set 'constants' equal to a table. Checkout llDetectedType. Strife Onizuka 13:24, 8 February 2007 (PST)
Ok, I wasn't sure if you were making a general table template or something. Sorry, I'm still new at wiki formatting. I didn't want to just edit if we working on a standard for the pages.--Anthony Reisman 11:24, 9 February 2007 (PST)
Templates for tables are very difficult to make and not very useful. By the time you have populated the template with information you have done more work then it would have been just to make the table by hand. Strife Onizuka 11:28, 9 February 2007 (PST)
In the example that you used, I noticed it was a template, which is why I wondered. I'll figure out how to make a table, and just stick it in the page I'm editing. Also, where do I find the list of all the templates used? I found the unused templates, but didn't find the a list of all. Again, sorry for the silly questions. I'm picking wiki up as I go.
- An inline example you can find on llParcelMediaCommandList. Strife Onizuka 11:56, 9 February 2007 (PST)
Thanks! That was exactly where I was going to put it in. Back to my other question. How to I find all the templates and template names we'll use. I can use the examples from other pages, but it might be nice to look at all the templates we have available. Thanks again! Anthony Reisman 12:14, 9 February 2007 (PST)
Really isn't a big list of LSL templates yet. The ones I use and wrote are:
Name | Description |
---|---|
Template:LSL Header | The bit at the top of the page, you need it if your page isn't using 'LSL Function', 'LSL Event', or 'LSL Conditional'. |
Template:LSLG | Used for links to any LSL_* page |
Template:LSLGC | Used to link to categories that start LSL_* |
Template:LSLC | Used to add a page to a category to which the category name starts LSL_*. This template also tries to figure out the sort value needed. |
Template:LSL Hex | Used for hex values. |
Template:LSL Hex/Parse | Template used to convert hex literals into integers. Doesn't work just yet. |
Template:LSL Function | Template used for function pages |
Template:LSL Event | Template used for event pages |
Template:LSL Conditional | Template used for flow control pages |
Template:LSL Generic | Parent Template of 'LSL Function', 'LSL Event', or 'LSL Conditional'. It is the template that does the heavy lifting, it also has a couple sub templates that handles some of the intersting stuff required for the child templates. |
Template:LSL Generic/Text | Sub template for the making the text of the first box of text. |
Template:LSL Generic/Title | Sub template for the making the title of the first box of text. |
re: Talk:LSL Function Style
I apologise if anything I've said has offended you personally- accessibility is something of a sore point to me.
SignpostMarv Martin 12:27, 11 February 2007 (PST)
LSL markup
Have we got LSL syntax highlight yet? If not what's the holdup? Anyone know? Gigs Taggart 15:38, 11 February 2007 (PST)
- "We tried to use start using this on Thursday, but ran into some problems. Thraxis, it'll help if you can contact me privately to discuss some of the issues. -- Rob Linden 00:37, 11 February 2007 (PST)" Taken from Talk:LSL Portal
Energy: 10?
Why do all the functions take 10 energy? Even ones that have nothing to do with physics? Gigs Taggart 15:46, 11 February 2007 (PST)
- I can't say for sure. Probably to counter balance bytecode throttling and to keep complex objects from using all the CPU time. As a non sequitur llSleep and llDie do not require any energy to call. Don't remove the value though, it is technically important, all objects have energy and if it runs out the scripts stops regardless of physics. Strife Onizuka 16:38, 11 February 2007 (PST)
- Oh. Oops. I took it out on one or two. Gigs Taggart 20:07, 11 February 2007 (PST)
- Already fixed it, don't worry about it. It is only a minor annoyance (a pet peeve) but an easily fixed one at that. I got the information from one of the source files used by LSL, so it is accurate. Strife Onizuka 20:12, 11 February 2007 (PST)
- This would be where the lookup templates I alluded to in the layout examples I proposed- allowing the information only to be included where it's relevant. The information for all functions can then be displayed in a separate article- Energy (Havok) perhaps ? The Havok-disambig'd article will become more relevant if/when the server code is released, although the structure of the article should not take this into account until such time as the code is released.
- SignpostMarv Martin 03:12, 12 February 2007 (PST)
- Energy is implemented in the VM. While energy predominantly is important for physical objects you can also run out of it on non-physical objects, such as ones with negative mass (which don't have any at all). And it's not like it takes up a lot of space on the right side of the page. There isn't much known about energy at this time so it would not be a good thing to remove it until there is more known. But if you want I'll comment out the code that displays the value. Better to have the value and not display it then not have it at all (I am not keen on going through the source again to re-add those values to 328 pages; so please don't remove it).
- I was planning on making tables for all of that information on their pages but it hasn't happened yet (with the exception of delay). So much to do and it not been a high priority. Strife Onizuka 06:06, 13 February 2007 (PST)
- I repeat; allowing the information only to be included where it's relevant. The information for all functions can then be displayed in a separate article.
- Including content that doesn't affect the operation of a script will confuse new comers, and the "seperate article" would be written in a relatively technical language and only be of interest to those working with the VM directly.
- SignpostMarv Martin 07:08, 13 February 2007 (PST)
- P.S. If you don't use a lookup template, you'll find that it'll be a pain in the ass to update everything if the default energy value for non-energetic LSL functions (you want to try updating 328 pages with the current issue of "session data" getting lost ?), whereas using a lookup template will be one edit.
- SignpostMarv Martin 07:10, 13 February 2007 (PST)
- LL is loath to change the VM, even to fix bugs. I can only think of two instances in my three years in SL that the Sleep value has changed for a function. Energy usage could be considered a caveat. It normally isn't something a user needs to worry about unless it is causing them problems. The information is relevant because it is a number specific to each function (and there are functions with different requirements). If I were a user wanting to know the energy requirements for a function would I look for a central table on energy usage first or the functions article? Well we don't know, it could go either way. Best to have it in both places. I did consider making a huge template to include such information as a lookup table, but that just smacked me as inefficient, a waste of CPU time.
The information is relevant because it is a function specific attribute. Information should be easy to find, not just easy to edit. Strife Onizuka 07:34, 13 February 2007 (PST)
P.S. It's not even like it takes up a large amount of screen space.- I repeat:
- Including content that doesn't affect the operation of a script will confuse new comers
- "seperate article" would be written in a relatively technical language
- Also:
- Lookup templates aren't a waste of CPU time.
- You still seem to be forgetting this whole "community resource vs technical manual" thing.
- SignpostMarv Martin 11:53, 13 February 2007 (PST)
- You seemed to have missed the most important fact of energy. It does effect the operation of scripts. It causes them to stop working if none is left. I would imagine a new scripter would be quite peeved if such information were not obvious and their scripts stopped working. For an example a rapid firing turret: rezzing many prims quickly. If it rezzes too many prims too fast the scripts will stop working in the entire object. Why? because llRezObject has a high energy cost. Where should the energy cost for llRezObject be? On an obscure article about energy? Yes, but it should also be on the page for llRezObject. Now you're going to say: "But a new user wouldn't make a rapid firing turret" you would not believe the percentage of new scripters who make guns.
Imagine for a moment going into a store and there were no price tags. How would you know if you had enough money before going to the checkout? Energy is the price of scripting. Strife Onizuka 12:40, 13 February 2007 (PST)- For the third time:
- Including content that doesn't affect the operation of a script will confuse new comers
- SignpostMarv Martin 13:21, 13 February 2007 (PST)
- Exactly why it should be included I'm glad we agree. ^_^ Strife Onizuka 13:32, 13 February 2007 (PST)
- Read the LSL Wiki article on Energy. http://lslwiki.org/index.php/Energy
- SignpostMarv Martin 13:26, 13 February 2007 (PST)
- I wrote a good portion of that article. The information it contains could not be verified at the time of it's writing. I know it is inaccurate because I've read portions of the applicable LSL VM source code. If you like I will cite the line numbers. Strife Onizuka 13:32, 13 February 2007 (PST)
- *reads article* hmmm looks like some idiot came back and rewrote it. That is not what I would have written about energy at all. What it has to say about energy is incomplete. Looks like something Eep wrote. Strife Onizuka 13:35, 13 February 2007 (PST)
- I wrote a good portion of that article. The information it contains could not be verified at the time of it's writing. I know it is inaccurate because I've read portions of the applicable LSL VM source code. If you like I will cite the line numbers. Strife Onizuka 13:32, 13 February 2007 (PST)
- For the third time:
- You seemed to have missed the most important fact of energy. It does effect the operation of scripts. It causes them to stop working if none is left. I would imagine a new scripter would be quite peeved if such information were not obvious and their scripts stopped working. For an example a rapid firing turret: rezzing many prims quickly. If it rezzes too many prims too fast the scripts will stop working in the entire object. Why? because llRezObject has a high energy cost. Where should the energy cost for llRezObject be? On an obscure article about energy? Yes, but it should also be on the page for llRezObject. Now you're going to say: "But a new user wouldn't make a rapid firing turret" you would not believe the percentage of new scripters who make guns.
- I repeat:
- LL is loath to change the VM, even to fix bugs. I can only think of two instances in my three years in SL that the Sleep value has changed for a function. Energy usage could be considered a caveat. It normally isn't something a user needs to worry about unless it is causing them problems. The information is relevant because it is a number specific to each function (and there are functions with different requirements). If I were a user wanting to know the energy requirements for a function would I look for a central table on energy usage first or the functions article? Well we don't know, it could go either way. Best to have it in both places. I did consider making a huge template to include such information as a lookup table, but that just smacked me as inefficient, a waste of CPU time.
- Already fixed it, don't worry about it. It is only a minor annoyance (a pet peeve) but an easily fixed one at that. I got the information from one of the source files used by LSL, so it is accurate. Strife Onizuka 20:12, 11 February 2007 (PST)
- Oh. Oops. I took it out on one or two. Gigs Taggart 20:07, 11 February 2007 (PST)
- Branching out discussion due to pain-in-the-ass nesting
How many functions actually use the energy listed
The key point is that functions like llAbs() don't appear to actually consume energy.....
SignpostMarv Martin 15:01, 13 February 2007 (PST)
- Yeah the branching is a pain. The return of llGetEnergy is normalized. Part of what I don't know yet is how much energy an object has. Sure llAbs may use 10 energy, but if thats out of 1,000,000 total, it would regenerate before you can call llGetEnergy. Or there is the other possibility that LSO VM no longer uses the Energy Supply Register (ESR). It is a small detail in the bigger picture to me, being that it can be easily removed from the template I wasn't going to research it until later. Further research would most undoubtedly require a conversation with Phoenix or Babbage. On a side note, executing any arbitrary bytecode costs 0.1 energy per operator (according to the source). Strife Onizuka 15:28, 13 February 2007 (PST)
- It's fairly trivial to test. Have between 20 and 100 scripts running a function on a fast timer, with a separate script:
float energy = 1.0; default { state_entry() { llSetTimerEvent(0.01); } timer() { if(llGetEnergy() < energy) { llSetText((string)llGetEnergy(),ZERO_VECTOR,1.0); } } }
- SignpostMarv Martin 18:32, 13 February 2007 (PST)
- Haven't logged in a while. If you tried that on such a short timer most of the updates would be dropped because of the rapid updates. AND events only trigger every 0.1 seconds (unless you are talking about control events which are every 0.05 seconds). If you want that code to actually work try:
//Slaves default { link_message(integer a, integer b, string c, key d) { a = 1000; do llAbs(b); while( a=~-a); } }
//Master default { touch_start(integer a) { llMessageLinked(LINK_SET, 0, "", ""); list b; float c; a = 100; do if(1.0 != (c = llGetEnergy())) b+=c; while( a=~-a); a = -llGetListLength(b); do llOwnerSay(llList2String(b,a)); while( a=-~a ); } }
- Strife Onizuka 19:11, 13 February 2007 (PST)
- *notices the category name change*
Well, what happens is, on any bytecode, 0.1 is subtracted from the ESR and then when a function is called whatever thats specific energy amount is subtracted from the ESR as well. The code is functional, but you see, only the essential parts of the LSL VM are included in the source package and not the sim code that interfaces with it. The bits that read and set the initial value of the ESR (and the SLR) are in the sim code. Strife Onizuka 19:37, 13 February 2007 (PST)- Bleh ?
- SignpostMarv Martin 21:04, 13 February 2007 (PST)
- *nods* "Bleh" pretty much sums it up. Strife Onizuka 21:30, 13 February 2007 (PST)
- Do functions like llAbs() consume energy or not ?
- SignpostMarv Martin 04:08, 14 February 2007 (PST)
- Is the energy value for each function, the one transcribed onto every function page, used to update the Energy Supply Register? Yes. Is the Energy Supply Register used to update the objects memory? Unknown. Need to talk to a Linden who has detailed knowledge of the insides of the VM & Havok. From the parts of the source visible the answer could be said to be: Yes or No. Strife Onizuka 07:51, 14 February 2007 (PST)
- *nods* "Bleh" pretty much sums it up. Strife Onizuka 21:30, 13 February 2007 (PST)
- you know if you'd run the test you'd get an answer. If it is not obvious from running a test, then for the sake of simplicity one would assume "no". Besides, having every single function consume energy would be moronic.
- SignpostMarv Martin 10:00, 14 February 2007 (PST)
- How many languages would allow a bug like (1.0-2) == 1 to exist (think they may have finally fixed this one)?
- Or how about a compiler that has such a limited stack size you have to get creative to work around it's limits?
- Or a compiler that doesn't even remove dead?
- LSL is moronic.
- I take it then you ran the test and it spammed chat with lines of nothing?
- Strife Onizuka 10:08, 14 February 2007 (PST)
- Nope, not had the chance- although when I ran mine I had an endless stream of 1.00000
- SignpostMarv Martin 11:21, 14 February 2007 (PST)
- If yours returned an endless stream of 1.00000 then the value was not in fact 1.0 (remember you are doing a test to filter out 1.0) but something less or more. Though it's unlikely it would round up even if it were only a bit away from 1.0 hmmm.
- Try:
//Slaves default { link_message(integer a, integer b, string c, key d) { a = 1000; do llAbs(b); while( a=~-a); } }
//Master string hexc="0123456789ABCDEF";//faster string Float2Hex(float input) {// Copyright Strife Onizuka, 2006, LGPL, http://www.gnu.org/copyleft/lesser.html if((integer)input != input)//LL screwed up hex integers support in rotation & vector string typecasting {//this also keeps zero from hanging the zero stripper. float unsigned = llFabs(input);//logs don't work on negatives. integer exponent = llFloor(llLog(unsigned) / 0.69314718055994530941723212145818);//floor(log2(b)) if(exponent > 127) exponent = 127;//catch fatal rounding error in exponent. integer mantissa = (integer)((unsigned / (float)("0x1p"+(string)exponent)) * 0x1000000);//shift up into integer range while(!(mantissa & 0x1)) {//strip extra zeros off before converting or they break "p" mantissa = mantissa >> 1; exponent = -~exponent;//++c; } string str = "p" + (string)(exponent - 24); do str = llGetSubString(hexc,15&mantissa,15&mantissa) + str; while(mantissa = mantissa >> 4); if(input < 0) return "-0x" + str; return "0x" + str; }//integers pack well so anything that qualifies as an integer we dump as such, supports netative zero return llDeleteSubString((string)input,-7,-1);//trim off the float portion, return an integer } default { touch_start(integer a) { llMessageLinked(LINK_SET, 0, "", ""); list b; float c; a = 100; do if(1.0 != (c = llGetEnergy())) b+=c; while( a=~-a); if(a = -llGetListLength(b)) do llOwnerSay(Float2Hex(llList2Float(b,a))); while( a=-~a ); llOwnerSay("done"); } }
- Float2Hex is lossless (tested the edges and fed it random numbers along the entire float range, without unexpected error). Should answer the question. If Float2Hex says the value is 1 then the value is 1. It doesn't work properly in Mono though because they uses doubles and not singles and it wasn't written with they extended range or precision in mind (it was made to run fast and efficiently in LSO without writing it LSO assembly). Something unconsidered is that llGetEnergy might only looks at a portion of the range or that it is a rounded or cropped result.
- Strife Onizuka 11:38, 14 February 2007 (PST)
re User:Strife Onizuka#Downloads and Downloads
You wouldn't happen to have a handy shortcut for the OS X & Linux Main/Preview Viewers and First Look Viewers for all 3 OSs would you ?
SignpostMarv Martin 05:35, 15 February 2007 (PST)
- Let me see if I can dig them up, I remember seeing it somewhere recently. Strife Onizuka 10:11, 15 February 2007 (PST)
- Think it was the downloads page you just mentioned that I saw. I did some quick tests looks like the update URL doesn't take an 'os' parameter. If I come across anything I'll post it. *wanders off to make a late breakfast* Strife Onizuka 10:22, 15 February 2007 (PST)
- Should one of us file a JIRA "New Feature" later to have the update urls improved to include OS params and first look ?
- SignpostMarv Martin 06:03, 17 February 2007 (PST)
- I'm not in a wag-the-dog mood today, but please go ahead. Strife Onizuka 08:37, 17 February 2007 (PST)
- Think it was the downloads page you just mentioned that I saw. I did some quick tests looks like the update URL doesn't take an 'os' parameter. If I come across anything I'll post it. *wanders off to make a late breakfast* Strife Onizuka 10:22, 15 February 2007 (PST)
re: Wiki Troll (but a good one, causing drama isn't why i'm here).
I believe the correct term for a good Wiki Troll is a Wiki Gnome :-D
- Thanks for the tip. Strife Onizuka
My love for you.
I love you man. Thanks for finishing the de-prefixing. I was going to get to finish it soon but it sure is tedious work. Gigs Taggart 17:53, 20 February 2007 (PST)
BTW, why are functions even on the new template like LlList2CSV not sorting right? I checked and it had a sort param in it. Gigs Taggart 17:55, 20 February 2007 (PST)
- Not sure what you mean about the problem with LlList2CSV, it should be sorted under L. I have been noticing some very strange corruption with categories. Probably has to do with the changing of the templates. When a template is changed I think it re-renders all the pages that depend upon it. I've been trying to keep the number of changes down on the big templates but i suspect that i may have caused a collision in the edits. I have finished the first phase of template change over. Still a few small bugs to work out though. Next time if you are going to do something drastic like moving pages, first write it in the guidelines (If it is in the guidelines you can beat them about the head with the guidelines if they try an edit war). Strife Onizuka 18:08, 20 February 2007 (PST)
- That was a bad example, llFloor is one like I'm talking about. It's sorted in the L's, it has a sort parameter, and it's on the right template. Gigs Taggart 07:34, 21 February 2007 (PST)
- If you find a page in a category it shouldn't be in, edit the page; it may fix the problem. Strife Onizuka 18:10, 20 February 2007 (PST)
- Bringing up sorting; What's the policy on double-sorting ? e.g. listing a llList2CSV under "L" for List and "C" for CSV ?
- SignpostMarv Martin 21:09, 20 February 2007 (PST)
- Media wiki won't allow a page to be listed twice in a category. I think it's better to list them alphabetically instead of getting creative; straight forward is easier to understand.Strife Onizuka 21:24, 20 February 2007 (PST)
- Huh. I swear I saw it do that once. Nevermind then :-D
- SignpostMarv Martin 02:29, 21 February 2007 (PST)
- Media wiki won't allow a page to be listed twice in a category. I think it's better to list them alphabetically instead of getting creative; straight forward is easier to understand.Strife Onizuka 21:24, 20 February 2007 (PST)
"LSL Function" vs "LSL_Function"
Just wondering why you changed "LSL Function" to "LSL_Function".
SignpostMarv Martin 17:30, 21 February 2007 (PST)
- Is there are specific example? The couple pages I updated that you converted I did so to tweak and add the extra parameters to make future editing easier (having to look up the field names is a pain); also you had kept the pages in the Stub category, which was an idea I had when I first deployed the pages but then realized I could do it alot better by making the templates smart enough to include them selves in categories describing what actually needed to be done to the pages. So as a side project I've been removing pages from it. It was just enough to prod me into action. As to the " " vs "_", the regex i use to convert the pages is to blame for that i think. Strife Onizuka 17:40, 21 February 2007 (PST)
- llTarget
- As I'm sure you're aware, the "_" isn't needed.
- SignpostMarv Martin 17:50, 21 February 2007 (PST)
- <.< A few of your revisions I started with the base page so the regex would work (then I put your revisions into the output... then rewrote them as needed, i was not pleased with your example on llTargetOmega). In truth when i was writing the templates I meant it to be an "_" and not a space but if the wiki engine doesn't care I don't. I don't really trust it not break on the space though. Strife Onizuka 17:57, 21 February 2007 (PST)
Category:LSL Flow Control vs Category:Flow Control
Boo.
I tried updating the templates to point to Category:Flow Control, waited till after the job queue cleared, but it didn't seem to work. Since it involves your templates, could you do that (since you know how your templates work better than me :-P )
SignpostMarv Martin 07:50, 23 February 2007 (PST)
- There is a guideline for LSL prefixed categories. My hands are tied. The guideline can't just be repealed or rewritten now it has come under dispute, a proper debate needs to happen. Until the debate is formally concluded further action would be Wrong. Strife Onizuka 08:58, 23 February 2007 (PST)
- ah :-P
- Category_talk:LSL_Flow_Control#LSL_Prefix
- SignpostMarv Martin 09:48, 23 February 2007 (PST)
Stub
Why is the stub category broken? Gigs Taggart 12:58, 11 March 2007 (PDT)
- How do you mean broken? Why are there no articles in it? There is no way to automate putting articles in it. I suppose template parameters could be read by length and that used to determine if it should go into the stub category but thats a bit procrustean (and not worth the effort). Some articles don't need extensive... articles, like llSin; but others need extensive articles. Or do you mean that the sort is borked? I've been over the code that handles the sort and I'm at my whits end as to what is causing that, I think there is some corruption going on in the article rebuilding code; it's ok if you only rebuild a dozen or so pages at a time, but more then that and it borks. Strife Onizuka 13:19, 11 March 2007 (PDT)
Template complexity
Hi Strife - you do a lot of great work here. However, we've gotta figure out how to be nicer to the servers. The templates you are creating are *killing* them, and we can't keep buying more servers to keep up (we have a cluster of six). Prior to an emergency fix I made, Template:Chat rendered Open Source Meeting/2007-07-19 totally unreadable, because it was using 30 seconds(!) of execution time.
I'm going to start keeping a closer eye on this, and try to figure out which pages are CPU pigs and figure out how to pare them down. Now that we have better caching, that will help matters, but it won't solve them. There are still cases where pages need to be rerendered, and using that much execution time means it will take forever. -- Rob Linden 22:46, 19 July 2007 (PDT)
- I've been trying to keep an eye on this as well. I was seeing if the template was usable, I suspected it wasn't but you don't know until you try. Sorry for tanking it. Was it only effecting that page or everything? (I'm really sorry didn't mean to tank things). -- Strife Onizuka 23:18, 19 July 2007 (PDT)
- Definitely a better solution to static render chat tables and not use a template. I take it when a page is displayed it just uses the cached version only re-renders it on edit? I really don't like changing the templates once they go into circulation. I'll work on making them simpler and less CPU intensive. -- Strife Onizuka 23:35, 19 July 2007 (PDT)
- I brought this up a while back with the LSL Wiki templates being needlesly complex.
- I watched the stats page process all the pages one by one. Things like using variables to populate category tags when you could just pass over the category tags themselves would be a good place to start.
- SignpostMarv Martin 04:58, 20 July 2007 (PDT)
- That's an interesting point (with the category tags) but that is one of the least complex features, there are a couple templates that could be inlined and dead code removed that would probably have a greater impact. I have been doing this. The function template for example doesn't depend upon the generic layout template anymore, which resulted in a reduction of variables used internally. I don't want to make breaking changes to features unless they are unused features. Requiring the passing of the entire category tag would require updating several hundred pages; that could take quite a while to do. I don't have time to devote so that the transition would be short enough that the user experience wouldn't suffering. -- Strife Onizuka 17:04, 20 July 2007 (PDT)
- Thanks for looking at this. I'll keep an eye out for tools and techniques that help you see where the hotspots are. -- Rob Linden 17:07, 20 July 2007 (PDT)
- For the category tag stuffages, do a substring check for [[, if it isn't found assume that the template is using the old style usage. if it is found, dump the variable into the body. This allows a certain degree of backwards compatibility while going through and "upgrading" manually.
- SignpostMarv Martin 03:16, 22 July 2007 (PDT)
- The irony is that that is going to end up just as costly as what I'm currently doing if not more. To maintain compatibility would require keeping the old variables, and there wouldn't be a need to do that form of type checking because there is no need to push finished data like that into a template parameter. There is nothing stopping people from inlining category tags at the bottom of the page (matter of face I think the Detected functions do just that). The fun stuff to do with sorting these days is handled by configuring the default page sort (which meant alot of code was stripped from LSLC). LSLC these days is just a single #if to see if a sort key was passed to it. I haven't a clue why pages are still ending up out of order and in the wrong categories; it's not a template issue (don't ask me how llAtan2 shows up in Color under 'P'). Speaking of wiki issues, the #var & #vardefine extension doesn't get along with span tags for some reason (which is why LSL_Const uses HoverLink instead of inlining). *trundles off to bed* -- Strife Onizuka 04:04, 22 July 2007 (PDT)
- That's an interesting point (with the category tags) but that is one of the least complex features, there are a couple templates that could be inlined and dead code removed that would probably have a greater impact. I have been doing this. The function template for example doesn't depend upon the generic layout template anymore, which resulted in a reduction of variables used internally. I don't want to make breaking changes to features unless they are unused features. Requiring the passing of the entire category tag would require updating several hundred pages; that could take quite a while to do. I don't have time to devote so that the transition would be short enough that the user experience wouldn't suffering. -- Strife Onizuka 17:04, 20 July 2007 (PDT)