Difference between revisions of "User:Strife Onizuka"

From Second Life Wiki
Jump to navigation Jump to search
m (→‎Tenebrous: Replaced <source> with <syntaxhighlight>)
 
(41 intermediate revisions by 6 users not shown)
Line 1: Line 1:
<div style="float:right;"><videoflash>hTIsIjZCvHk</videoflash></div>{{RightToc|clear:right;}}
<div style="float:right;"><videoflash>hTIsIjZCvHk</videoflash></div>
 
<div style="float:right; clear:right; border:1px solid #AAAAAA; margin-top:8px; background-color:white;"><div style="margin: 0 8px;">
== MIA ==
'''Subpages'''
 
* Personal
I may be MIA for the next month. I. My current computer is inadequeate for SL as this is my backup, my main computer died in August. Here's a glimpse of my ToDo list: Get a job, find a new place to live, get a new computer.
** {{Sub|Miscellaneous}}
It may seem that Strife is MIA, well Strife's computer died several months ago... then the LCD on the backup failed... then the CRT on the backup decided the only resolution it wants to run at is 800x600 at 60hz. So Strife really can't do much until the computer gets rebuilt. To add to that, Strife will soon be moving to a yet unknown location. While a new computer would be nice, it's not a wise investment at the moment. Did I forget to mention the need for a job? -- So things are pretty stressed.
* Code
 
** {{Sub|int2hex}}
It's moving day, and this may be the last you hear from me for a while. Going to dismantle the computer last. -- '''[[User:Strife_Onizuka|Strife]]''' <sup><small>([[User talk:Strife_Onizuka|talk]]|[[Special:Contributions/Strife_Onizuka|contribs]])</small></sup> 01:06, 21 December 2008 (UTC)
** {{Sub|int2hexdword}}
 
** {{Sub|hexchars}}
== Scite/ESL ==
** {{Sub|Float Functions}}
My config files:
** {{Sub|String Tree}}
*[http://mailerdaemon.home.comcast.net/lsl.api lsl.api]
** [[GetRootLocalPos]]
*[http://mailerdaemon.home.comcast.net/lsl.properties lsl.properties]
* Articles
*[http://mailerdaemon.home.comcast.net/stripper.zip stripper.zip - Whitespace stripper]
** {{Sub|The State of State}}
*[http://mailerdaemon.home.comcast.net/clipboard.zip clipboard - copies text to clipboard]
</div></div>
*[http://mailerdaemon.home.comcast.net/patch.esl patch.esl - make lslint not choke on new keywords]
{{RightToc|clear:right;}}
*[http://w-hat.com/lslint lslint]
{| class="sortable" {{prettytable|style=float:right; clear:right; margin:0;}}
*[http://gnuwin32.sourceforge.net/packages/indent.htm indent - code beautifier] (picks up where the whitespace stripper leaves off)
*[http://msdn.microsoft.com/vstudio/express/visualc/ MSVC Express]
 
==About Me ==
I'm an immigrant from URU. Was in all 3 of it's beta's.
 
Wiki Gnome (causing drama isn't why I'm here).
 
I have a webpage but haven't updated it in a few months...
 
Wiki's are the way of the future when it comes to making documentation Ad-hoc but eventually become static as graffiti grows with popularity as a way of controlling it.
 
also contribute to some other wiki's
[http://history.secondserver.net/index.php/Main_Page History Wiki]
[http://www.AviSynth.org/BlindWanderer AviSynth:BlindWanderer]
 
When it comes to writing I tend to go towards concise. A short accurate description is better then a long equally accurate description; less to get confused with, easier to find the important information (because it is ''all'' important).
 
{{Jira Reporter}}
{{skills
|Builder=*
|Scripter=*
|}}
 
==Downloads==
 
{| class="sortable" {{prettytable}}
|- {{Hl2}}
|- {{Hl2}}
! | Updates:
! | Updates:
Line 72: Line 45:
|}
|}


==TightList==
== About Strife ==
See [[TightList]]
 
=== Synopses ===
 
Strife joined 3/3/2004, and is an avid scripter, wiki author and SL forum denizen. Not content in selfish information gathering, he shares what he knows through various mediums, so that others may benefit and learn. He volunteers his time to work on many public projects which include: giving scripting advice, writing LSL documentation, providing and improving LSL scripts and libraries. Secondlife has been on Strife's brain for that last {{AgeUnit|03|03|2004}}.
 
=== SL Status ===
 
Strife is unemployed. Leave me a note on my talk page.
 
=== Honors ===
 
Through his public works Strife became a pillar of the SL community.
 
<!-- please see http://en.wikipedia.org/wiki/Wikipedia:Barnstars for the motivation here -->
Strife is a Hippo award winner, [http://blog.secondlife.com/2007/08/25/innovation-award-winners-announced/ awarded "Best Community Organizer" in the 2007 Linden Lab Innovation Awards], and here is [[Linden Lab Innovation Awards|his mention as a runner-up in the 2008 "Best Documentation" category:]] "Last year's winner, Strife Onizuka, continued to be insanely prolific, with thousands of edits over the past year.... Anyone learning LSL is almost certainly indebted to Strife's work in some way."
 
=== Own Words ===
 
I'm an immigrant from URU. Was in all 3 of it's beta's.
 
Wiki Gnome (causing drama isn't why I'm here) for about {{#expr:(({{ #time: U | {{LOCALDAY2}}.{{LOCALMONTH}}.{{LOCALYEAR}} }} - {{ #time: U | 3.3.2004 }}) / 31557600) round 0}} years.


==Float {{LSL_VR|-Union-}} Integer==
I <del>have</del><ins>had</ins> a webpage but I haven't updated it in <del>a few</del><ins>many</ins> <del>months</del><ins>years</ins>...
<lsl>
integer fui(float a)//Mono Safe, LSO Safe, Doubles Unsupported, LSLEditor Unsafe
{//union float to integer
    if((a)){//is it non zero?
        integer b = (a < 0) << 31;//the sign, but later this variable is reused to store the shift
        if((a = llFabs(a)) < 2.3509887016445750159374730744445e-38)//Denormalized range check & last stirde of normalized range
            return b | (integer)(a / 1.4012984643248170709237295832899e-45);//the math overlaps; saves cpu time.
        integer c = llFloor((llLog(a) / 0.69314718055994530941723212145818));//extremes will error towards extremes. following yuch corrects it.
        return (0x7FFFFF & (integer)(a * (0x1000000 >> b))) | (((c + 126 + (b = ((integer)a - (3 <= (a /= (float)("0x1p"+(string)(c -= ((c >> 31) | 1)))))))) << 23 ) | b);
    }//for grins, detect the sign on zero. it's not pretty but it works. the previous requires alot of unwinding to understand it.
    return ((string)a == (string)(-0.0)) << 31;
}


float iuf(integer a)
Wiki's are the way of the future when it comes to making documentation Ad-hoc. With popularity graffiti becomes a worsening problem. The wiki owner is left between a rock and a hard place: cope with graffiti edits or cope with out-of-data information. The popular choice is to restrict editing, which ultimately drives away legitimate editors.
{//union integer to float
    return ((float)("0x1p"+(string)((a | !a) - 150))) * ((!!(a = (0xff & (a >> 23))) << 23) | ((a & 0x7fffff))) * (1 | (a >> 31));
}//will crash if the raw exponent == 0xff; reason for crash deviates from float standard; though a crash is warented.
</lsl>


As a specialized mode of transport, this is faster the [[Float2Hex]] and just as lossless.
I also contribute to some other wikis:
<lsl>
*[http://history.secondserver.net/index.php/Main_Page History Wiki]
string fuis(float a){//float union to base64ed integer
*[http://www.AviSynth.org/BlindWanderer AviSynth:BlindWanderer]
    if(a){//is it non zero?
*[http://en.wikipedia.org/wiki/User:BlindWanderer Wikipedia:BlindWanderer]
        integer b = (a < 0) << 31;//the sign, but later this variable is reused to store the shift
        if((a = llFabs(a)) < 2.3509887016445750159374730744445e-38)//Denormalized range check & last stirde of normalized range
            b = b | (integer)(a / 1.4012984643248170709237295832899e-45);//the math overlaps; saves cpu time.
        else
        {
            integer c = llFloor(llLog(a) / 0.69314718055994530941723212145818);//extremes will error towards extremes. following yuch corrects it.
            b = (0x7FFFFF & (integer)(a * (0x1000000 >> b))) | (((c + 126 + (b = ((integer)a - (3 <= (a /= (float)("0x1p"+(string)(c -= (c == 128)))))))) << 23 ) | b);
        }
        return llGetSubString(llIntegerToBase64(b),0,5)
    }//for grins, detect the sign on zero. it's not pretty but it works. the previous requires alot of unwinding to understand it.
    if((string)a == (string)(0.0))
        return "AAAAAA";
    return "gAAAAA";
}


float siuf(string b)
When it comes to writing I tend to go towards concise. A short accurate description is better then a long equally accurate description; less to get confused with, easier to find the important information (because it is ''all'' important).
{//base64ed integer union to float
    integer a = llBase64ToInteger(b);
    return ((float)("0x1p"+(string)((a | !a) - 150))) * ((!!(a = (0xff & (a >> 23))) << 23) | ((a & 0x7fffff))) * (1 | (a >> 31));
}//will crash if the raw exponent == 0xff; reason for crash deviates from float standard; though a crash is warented.
</lsl>


==Float Compare==
{{Jira Reporter}}
<lsl>integer FloatCompare(float a, float b, integer c)
{{skills
{//compare floats and allow for a margin of error, requires fui().
|Builder=*
    if(a - b)//(c) Strife Onizuka 2006
|Scripter=*
    {//they are not equal
|}}
        //First we convert the floats to integer form, as they would be in memory;
 
        integer a_i = fui(a);
== Scite/ESL ==  
        integer b_i = fui(b);
My config files:
        integer a_e = (a_i >> 23) & 0xff;
*[https://drive.google.com/folderview?id=0B78L5DGHe6YrV2FFWlE2VTJ4S28&usp=sharing Google Drive]
        integer b_e = (b_i >> 23) & 0xff;
** lsl.api
        if(!(a_e || b_e) || //to disable the +/- roll under support put a // just before the !
** lsl.properties
            ((a_i & 0x80000000) == (b_i & 0x80000000)))//sign match check
** stripper.zip - Whitespace stripper
        {//start by getting and testing the difference, this is what limits c
** clipboard.zip - copies text to clipboard
            integer diff = a_e - b_e;//ugly is fast, basicly, it gets the mantissa, sets the sign on the mantisa,
*[https://github.com/Makopo/lslint lslint] (Makopo's fork)
            if(diff >= -1 || diff <= 1)//shifts it depending on exponent, finaly executes the test.
**[http://kwdb.googlecode.com/hg/outputs/builtins.txt builtins.txt] - Up to date keyword file for lslint (generated by [http://code.google.com/p/kwdb/ kwdb])
                if(llAbs(((((a_i & 0x7FFFFF) | (!!a_e << 23)) * ((a_i >> 31) | 1)) >> !~-diff) -
*[http://gnuwin32.sourceforge.net/packages/indent.htm indent - code beautifier] (picks up where the whitespace stripper leaves off)
                        ((((b_i & 0x7FFFFF) | (!!b_e << 23)) * ((b_i >> 31) | 1)) >> !~diff)) <= c)
*[http://msdn.microsoft.com/vstudio/express/visualc/ MSVC Express]
                    jump out;
        }
        return (a > b) - (a < b);
    }
    @out;
    return 0;
}</lsl>


==FUI2HexFloat ==
==TightList==
<lsl>
See [[TightList]]
string FUI2HexFloat(integer b)
{//Dump FUI float-integer to a hex-float string
    string c = "";
    integer d = 0;
    integer e = 0xff & (b >> 23);
    string f = "0x"+(string)(!!e) + ".";
    if(b & 0x80000000)
        f = "-"+ f;
    if(e ^ 127) c = "p" + (string)((e | !e) - 127);
    if((e = 0xfffffe & (b << 1)))
    {
        while(!((e >> d) & 0xf))
            d+=4;
        while(d < 24)
        {
            c = llGetSubString(hexc, b = 0xf & (e >> d), b) + c;
            d += 4;
        }
    }
    return f + c;
}


string Float2Hex(float a)
==Float Functions==
{//Another way to do Float2Hex, i wrote this for the heck of it; not because it's a good idea.
See [[/Float Functions]]
    return FUI2HexFloat(fui(a));
}
</lsl>


==BitCount==
==BitCount==
<lsl>integer bitcount(integer n)
<syntaxhighlight lang="lsl2">integer bitcount(integer n)
{//MIT Hackmem 169, modified to work in LSL
{//MIT Hackmem 169, modified to work in LSL
     integer tmp = n - ((n >> 1) & 0x5B6DB6DB)//modified mask
     integer tmp = n - ((n >> 1) & 0x5B6DB6DB)//modified mask
                     - ((n >> 2) & 0x49249249);
                     - ((n >> 2) & 0x49249249);
     return (((tmp + (tmp >> 3)) & 0xC71C71C7) % 63) - (n >> 31);
     return (((tmp + (tmp >> 3)) & 0xC71C71C7) % 63) - (n >> 31);
}</lsl>
}</syntaxhighlight>
 
==Tenebrous==
<syntaxhighlight lang="lsl2">string ignore = "c228d1cf-4b5d-4ba8-84f4-899a0796aa97";
list Tenebrous(){
    integer link = llGetNumberOfPrims();
    list out;
    string s;
    for(link -= (link == 1); !llGetLinkNumberOfSides(link);)
    {
        list t = llGetLinkPrimitiveParams(link, [PRIM_TEXTURE, ALL_SIDES]);
        integer i = t != [];
        while((i -= 4) >= 0)
            if(ignore != (s = llList2String(t, i)))
                out = [i >> 2, s] + out;
        out = llGetLinkKey(link--) + out;
    }
    return out;
}</syntaxhighlight>
 
{{visl
{{visl
|name=Strife Onizuka
|name=Strife Onizuka
Line 195: Line 142:
|}}
|}}
[[Category:SL Certification Participant|{{PAGENAME}}]]
[[Category:SL Certification Participant|{{PAGENAME}}]]
[[Category:User pages in need of haiku|{{PAGENAME}}]]

Latest revision as of 15:26, 3 February 2023

<videoflash>hTIsIjZCvHk</videoflash>
Updates: Preview
DMZ Preview
Agni Preview
Colo Preview
Siva Preview
Durga Preview
Aditi Preview
Soma Preview
Ganga Preview
Uma Preview
Shakti Preview
Vaak Preview
Mohini Preview
Yami Preview
Nandi Preview
Mitra Preview
Radha Preview
Ravi Preview
Aruna Preview
Damballah Preview
Bharati Preview
Chandra Preview
Danu Preview
Parvati Preview
Skanda Preview

About Strife

Synopses

Strife joined 3/3/2004, and is an avid scripter, wiki author and SL forum denizen. Not content in selfish information gathering, he shares what he knows through various mediums, so that others may benefit and learn. He volunteers his time to work on many public projects which include: giving scripting advice, writing LSL documentation, providing and improving LSL scripts and libraries. Secondlife has been on Strife's brain for that last 2 decades.

SL Status

Strife is unemployed. Leave me a note on my talk page.

Honors

Through his public works Strife became a pillar of the SL community.

Strife is a Hippo award winner, awarded "Best Community Organizer" in the 2007 Linden Lab Innovation Awards, and here is his mention as a runner-up in the 2008 "Best Documentation" category: "Last year's winner, Strife Onizuka, continued to be insanely prolific, with thousands of edits over the past year.... Anyone learning LSL is almost certainly indebted to Strife's work in some way."

Own Words

I'm an immigrant from URU. Was in all 3 of it's beta's.

Wiki Gnome (causing drama isn't why I'm here) for about 21 years.

I havehad a webpage but I haven't updated it in a fewmany monthsyears...

Wiki's are the way of the future when it comes to making documentation Ad-hoc. With popularity graffiti becomes a worsening problem. The wiki owner is left between a rock and a hard place: cope with graffiti edits or cope with out-of-data information. The popular choice is to restrict editing, which ultimately drives away legitimate editors.

I also contribute to some other wikis:

When it comes to writing I tend to go towards concise. A short accurate description is better then a long equally accurate description; less to get confused with, easier to find the important information (because it is all important).

View the issues Strife Onizuka has filed at jira.secondlife.com

Scite/ESL

My config files:

TightList

See TightList

Float Functions

See /Float Functions

BitCount

integer bitcount(integer n)
{//MIT Hackmem 169, modified to work in LSL
    integer tmp = n - ((n >> 1) & 0x5B6DB6DB)//modified mask
                    - ((n >> 2) & 0x49249249);
    return (((tmp + (tmp >> 3)) & 0xC71C71C7) % 63) - (n >> 31);
}

Tenebrous

string ignore = "c228d1cf-4b5d-4ba8-84f4-899a0796aa97";
 
list Tenebrous(){
    integer link = llGetNumberOfPrims();
    list out;
    string s;
    for(link -= (link == 1); !llGetLinkNumberOfSides(link);)
    {
        list t = llGetLinkPrimitiveParams(link, [PRIM_TEXTURE, ALL_SIDES]);
        integer i = t != [];
        while((i -= 4) >= 0)
            if(ignore != (s = llList2String(t, i)))
                out = [i >> 2, s] + out;
        out = llGetLinkKey(link--) + out;
    }
    return out;
}