Meta tags:
Headings (most frequently used words):
twitter, second, life, march, 2007, friday, updates, about, 30, sunday, 18, 16, wednesday, 14, official, linden, blog, labels, archive, other, sl, related, sites, the, wristlet, mashup, presentation, screen, for, display, external, xml, resources, on, objects, in,
Text of the page (most frequently used words):
the (144), #twitter (39), and (36), integer (35), string (31), for (28), this (22), message (21), life (20), text (20), second (19), xml (19), new (17), http (17), url (15), currentslide (15), status (15), updates (14), key (14), screen (13), 2007 (13), code (13), have (13), with (13), else (13), llsay (12), drawable (12), name (12), which (12), update (12), image (11), get (11), num (11), slidetodisplay (11), null_key (10), some (10), application (10), lastslidereached (10), slide (10), rexml (9), you (9), net (9), first (9), little (9), str (9), list (9), resultlist (9), world (8), wristlet (8), that (8), from (8), can (8), every (8), rawlist (8), post (8), ruby (7), following (7), starttoppos (7), end (7), using (7), also (7), are (7), llmessagelinked (7), prim (7), your (7), body (7), req (7), llownersay (7), march (6), rails (6), use (6), llsettexture (6), create (6), content (6), com (6), render (6), texture (6), like (6), firstslidereached (6), default (6), state_entry (6), when (6), requestid (6), lllist2string (6), statusparts (6), objects (5), presentation (5), source (5), labels (5), comments (5), posted (5), daniel (5), has (5), script (5), error (5), used (5), into (5), parse (5), xmldoc (5), attributes (5), them (5), case (5), magick (5), print (5), each (5), value (5), able (5), now (5), because (5), not (5), last (5), next (5), looks (5), later (5), messages (5), sphere (5), llparsestring2list (5), res (5), start (5), linden (4), other (4), display (4), external (4), llgetowner (4), video_texture (4), llparcelmediacommandlist (4), document (4), want (4), elements (4), field (4), png (4), its (4), did (4), available (4), will (4), link_message (4), sender_num (4), link_set (4), maxslide (4), reached (4), only (4), been (4), created (4), service (4), see (4), seconds (4), public (4), username (4), password (4), posting (4), send (4), firstrun (4), llsettimerevent (4), listen (4), llhttprequest (4), http_method (4), request (4), statuses (4), request_id (4), listlength (4), statuslinewithname (4), refreshtime (4), stop (4), tweets (4), resources (3), rmagick (3), loading (3), work (3), touch_start (3), trying (3), after (3), uri (3), secondlife (3), xpath (3), elrecords (3), records (3), was (3), annotate (3), set (3), write (3), result (3), whole (3), check (3), llgetinventorykey (3), nextslidestr (3), previous (3), buttons (3), two (3), place (3), spheres (3), creates (3), submit (3), server (3), main (3), link (3), channel (3), post_message (3), msg (3), timer (3), get_messages (3), float (3), boxposition (3), childnumber (3), llsettext (3), authenticate (3), resultstr (3), refresh (3), official (2), site (2), lab (2), related (2), mashup (2), june (2), 2009 (2), 2010 (2), virtual (2), user (2), posts (2), note (2), media (2), replaced (2), llgetpos (2), settings (2), parcel_media_command_texture (2), video_default (2), primitive (2), via (2), read (2), reports (2), marketplace_stats (2), land_sales_by_residents (2), reporttitle (2), reportdate (2), need (2), 400 (2), 200 (2), make (2), pointsize (2), fill (2), font_weight (2), element (2), return (2), directly (2), createdimg (2), response (2), headers (2), type (2), data (2), nice (2), rubyonrails (2), how (2), land (2), processor (2), test (2), textures (2), slidetodisplaystr (2), nextslidenr (2), checks (2), sets (2), da79968e (2), b8b7 (2), 8a0a (2), cc66 (2), 2a717e9c3d41 (2), total_number (2), uses (2), function (2), button (2), same (2), lsl (2), out (2), between (2), they (2), should (2), displayed (2), screenshot (2), gets (2), displays (2), above (2), twitterer (2), friday (2), processing (2), running (2), idea (2), box (2), author (2), actually (2), owner (2), lllisten (2), received (2), http_mimetype (2), www (2), form (2), urlencoded (2), http_response (2), metadata (2), boxes (2), information (2), llgetlistlength (2), rez (2), link_all_children (2), parts (2), start_param (2), delimited (2), def (2), parameter (2), api (2), path (2), basic_auth (2), host (2), port (2), just (2), httpsuccess (2), httpredirection (2), but (2), integrate (2), urlstr (2), build (2), get_text (2), about (2), where (2), scripts (2), 998 (2), automatic (2), developer (2), corner (2), skip (2), insider, premium, proxies, proxy, servers, notes, metaversed, lslwiki, sites, secon, april, may, july, february, archive, reality, multi, systems, jaiku, house, homeless, again, chatbot, blog, follow, licensed, under, creative, commons, attribution, share, alike, license, subscribe, atom, home, newer, parcelmedia, feature, allow, streaming, think, num_detected, llgetlandownerat, cannot, modify, parcel, lllist2key, llparcelmediaquery, all_sides, parcel_media_command_url, parcel_media_command_play, parcel_media_command_auto_align, true, put, returns, variable, select, report, date, size, width, height, self, background_color, white, font, draw, font_family, helvetica, gray, gravity, northwestgravity, boldweight, black, normalweight, position, values, record, 250, disk, wasnt, without, saving, disposition, inline, filename, thepicture, to_blob, played, bit, ability, access, inspired, wanted, load, looking, possible, point, view, necessary, step, loads, parses, resource, show, file, provided, lindenlabs, shows, sales, resident, three, month, parsing, specific, matt, biddulph, flickr, left, side, slides, look, b13e131e, 13a4, 37ad, e137, 4b6f81a0a3fa, exists, itself, color, circles, identified, unique, 1000, arrow, included, rotated, another, rotation, llrotatetexture, informs, navigate, anymore, nearly, scriptcode, except, one, built, small, navigation, communication, takes, placed, mainscreen, numbered, order, wednesday, integrating, named, newest, comes, than, refreshes, such, things, backend, stuff, week, feed, provides, task, interfaces, great, ror, updated, example, prims, works, really, action, please, visit, slurl, 199, 242, old, permissions, llrequestpermissions, permission_change_links, 4001, wants, chat, our, special, mimetype, submitting, variables, run, object, llrezobject, zero_vector, zero_rotation, object_rez, llcreatelink, prin, number, child, accessing, on_rez, creating, updating, doing, right, handles, connection, links, together, sends, occurs, params, basic, auth, details, set_form_data, failing, actual, debugging, purpose, wont, doesnt, authentication, problem, private, friends, public_timeline, dom, building, delimiter, line, separated, pipe, character, help, personal, extract, compact, seperated, delimiters, introduced, tell, something, implementation, all, there, working, background, fulfills, tasks, sunday, allowed, won, does, anyone, know, bypass, impossible, chatchannel, communicating, stops, stopped, reactivate, taking, sent, very, disturbing, half, full, receives, doesn, prints, accessory, allows, move, around, stylish, possibility, call, differences, fixed, experiment, tinker, features, platform, try, publish, experiences, often, include, found, happy, coding, 2nd, section, sidebar,
Text of the page (random words):
ility to send some updates to twitter i call it the twitter wristlet because its a wristlet the only differences between the wristlet and my other fixed twitter service are the following the wristlet doesn t create objects on which the tweets status updates are displayed i just prints them to screen using llownersay because it can be very disturbing to have half of the screen full of twitter updates you can stop start the timer which receives the tweets note when you are on land where running scripts is not allowed it won t work does anyone know how to bypass this or is it impossible the lsl code for the wristlet looks like that i use the chatchannel 998 for communicating with the wristlet key requestid list resultlist string rawlist float refreshtime 30 0 default state_entry integer i rawlist llsettimerevent refreshtime lllisten 998 llgetowner listen integer channel string name key id string message if message stop stops the automatic refresh of the tweets llsettimerevent 0 0 llownersay the automatic refresh has been stopped reactivate using start else if message start llsettimerevent refreshtime llownersay refresh will taking place every string refreshtime seconds stop using stop else llownersay trying to send your status message message llhttprequest your ruby url twitter post_message http_method post http_mimetype application x www form urlencoded msg message llownersay ok status has been sent timer llownersay loading tweets requestid llhttprequest your ruby url twitter get_messages type public http_method get http_response key request_id integer status list metadata string body integer i if request_id requestid rawlist body create the boxes from the list information resultlist llparsestring2list body n integer listlength llgetlistlength resultlist float boxposition 1 for i 0 i listlength i 1 string statuslinewithname lllist2string resultlist i list statusparts llparsestring2list statuslinewithname string text lllist2string statusparts 0 string name lllist2string statusparts 1 llownersay name text else llsay 0 string status error posted by daniel at 00 40 3 comments labels twitter sunday 18 march 2007 second life twitter in my last posting i introduced my twitter application in second life now i want to tell something about the implementation of it first of all there is a little ruby on rails server application working in the background which fulfills two tasks authenticate in twitter and get the new public updates the idea is to parse the xml result of twitter and extract the update text and the author of this text and after that to build a compact string seperated by delimiters authenticate in twitter and post a new personal update twitter provides for this task some xml interfaces at http twitter com help api for xml processing in ruby we will use the great rexml processor the following code gets the public updates def get_messages get public updates doesnt need authentication actually but no problem if its in the code but i integrate it because i want to integrate also private friends updates later urlstr http twitter com statuses public_timeline xml url uri parse urlstr req net http get new url path req basic_auth username password res net http new url host url port start http http request req content res body resultstr case res when net httpsuccess net httpredirection build a dom from the xml string and parse it xmldoc rexml document new content building the delimiter string for the later in world processing every update is line separated and the name and text in each update is delimited with the pipe character xmldoc elements each statuses status do status resultstr status elements text get_text value status elements user name get_text value n end render text resultstr else render text error end end username and password have to be replaced with your twitter username and password for posting a new update i use the following code def post_message get the message as parameter message params msg authenticate using basic auth and make a post request using the parameter for the new message see twitter api for details url uri parse http twitter com statuses update xml req net http post new url path req basic_auth username password req set_form_data status message res net http new url host url port start http http request req print out some little message in case of failing actual just for debugging purpose because it wont be used in the application later case res when net httpsuccess net httpredirection render text ok else render text error end end ok now with this application on a running ror server we can get the updates from twitter and are able to send new updates to twitter in second life the idea is to have a little box which creates for every twitter update a little sphere which displays the update text and the author when the spheres are created they should be updated every n seconds n 30 in this example so we have actually two prims the main box which handles the connection to the rails application creates the spheres links them together and sends a message to every sphere if an update occurs the sphere listen for messages and updates its text for the sphere we have the following code integer childnumber string text string name default if the prin is created print a message and sets the number of the child this is used for later accessing the message parts on_rez integer start_param llsettext creating 1 0 childnumber start_param if a link message is received get the parts of the delimited string and print them above the prim link_message integer sender_num integer num string str key id llsettext updating 1 0 list resultlist llparsestring2list str n string statuslinewithname lllist2string resultlist childnumber list statusparts llparsestring2list statuslinewithname text lllist2string statusparts 0 name lllist2string statusparts 1 llsettext name is doing the following right now n text 1 0 the main twitter prim script code looks like this key requestid list resultlist string rawlist integer firstrun default state_entry integer i rawlist firstrun 1 set permissions so the prim is able to link the objects llrequestpermissions llgetowner permission_change_links update every 30 seconds llsettimerevent 30 0 listen on a channel so that the owner can post updates lllisten 4001 llgetowner if the owner wants to submit an update to twitter listen integer channel string name key id string message llsay 0 trying to send your status message message post the received chat message to our server use a special mimetype for submitting post variables llhttprequest your rails url post_message http_method post http_mimetype application x www form urlencoded msg message llsay 0 ok request the new updates timer llsay 0 loading statuses requestid llhttprequest your rails url get_messages http_method get http_response key request_id integer status list metadata string body integer i if request_id requestid rawlist body create the boxes from the list information resultlist llparsestring2list body n integer listlength llgetlistlength resultlist float boxposition 1 for i 0 i listlength i 1 if firstrun 1 rez objects only in the first run llsay 0 rez object string i llrezobject status llgetpos zero_vector zero_rotation i boxposition 0 7 else after that only update with link messages llmessagelinked link_all_children 0 rawlist null_key firstrun 0 else llsay 0 string status error object_rez key id llcreatelink id 1 llmessagelinked link_all_children 0 rawlist null_key so that was the whole code which works really nice as you can see in the screenshot in the old posting if you want to see it in in world action please visit me at http slurl com secondlife oz 199 242 26 posted by daniel at 00 03 4 comments labels rexml ruby on rails twitter friday 16 march 2007 twitter second life mashup i have created a little application for integrating the twitter service into second life i named it twitterer as you can see in this screenshot the twitterer gets the newest messages from the twitter service and displays them above some spheres for every status message which comes from the twitter xml feed the application creates a sphere and than refreshes it every 30 seconds and it can also submit messages to twitter so you are able to write messages in world to twitter i like such things as backend stuff i use some rubyonrails i will submit the code this week posted by daniel at 15 37 2 comments wednesday 14 march 2007 presentation screen for second life i have built a small presentation screen with two navigation buttons the whole communication between the buttons and the screen takes place using the llmessagelinked function each slide have to be placed as texture into the prim of the mainscreen the textures have to be numbered in the order in which they should be displayed later the script of the screen also informs the buttons when the last slide has been reached so that the next prim is not able to navigate anymore the previous and next prim have nearly the same scriptcode except that the one checks if the first slide has been reached and the other looks out for the last slide the lsl code for the previous button looks like this integer slidetodisplay integer firstslidereached integer currentslide default state_entry firstslidereached 1 slidetodisplay 1 currentslide 1 llsettexture da79968e b8b7 8a0a cc66 2a717e9c3d41 4 llrotatetexture pi 4 touch_start integer total_number if firstslidereached 0 slidetodisplay currentslide 1 llmessagelinked link_set slidetodisplay slidetodisplay null_key else llsay 0 first slide reached link_message integer sender_num integer num string str key id if str currentslide currentslide num if currentslide 1 firstslidereached 1 else firstslidereached 0 the next prim code looks like this it also uses a arrow texture which is included via a key in the state_entry function the previous button uses the same texture only rotated in another rotation integer slidetodisplay integer lastslidereached integer currentslide integer maxslide default state_entry lastslidereached 0 slidetodisplay 1 currentslide 1 maxslide 1000 llsettexture da79968e b8b7 8a0a cc66 2a717e9c3d41 4 touch_start integer total_number if lastslidereached 0 slidetodisplay currentslide 1 llmessagelinked link_set slidetodisplay slidetodisplay null_key else llsay 0 last slide reached link_message integer sender_num integer num string str key id if str currentslide currentslide num if currentslide maxslide lastslidereached 0 if str lastslidereached num 1 lastslidereached 1 maxslide currentslide the screen itself checks first if a texture is available if not it sets an test texture in this case some color circles i did identified by the unique key integer lastslidereached integer firstslidereached integer currentslide default state_entry check for first slide and set it when available if llgetinventorykey 1 null_key llsettexture 1 4 else llsettexture b13e131e 13a4 37ad e137 4b6f81a0a3fa 4 link_message integer sender_num integer num string str key id if str slidetodisplay string slidetodisplaystr string num if llgetinventorykey slidetodisplaystr null_key llsettexture string num 4 llmessagelinked link_set num currentslide null_key check if next slide exists integer nextslidenr num 1 string nextslidestr string nextslidenr llsay 0 check for next slide nr nextslidestr if llgetinventorykey nextslidestr null_key lastslidereached 1 llmessagelinked link_set 1 lastslidereached null_key else lastslidereached 0 else llsay 0 slide not available with some text textures the screen will look like this on the left side is the test texture i did if no slides are available posted by daniel at 22 59 0 comments labels presentation screen display external xml resources on objects in second life if have played a little bit with second life and its ability to access external resources inspired by matt biddulph s flickr screen now i wanted to load xml data from an external source into the sl world and display it on a nice looking screen because it is not possible from my point of view to display text directly on a sl primitive it was necessary to render the text in a first step to an image i did this using a little rubyonrails application which also loads and parses the xml resource ok now i show how i did this i used the rexml processor to work with the xml data and rmagick to create the image the xml source is used is a little xml file provided by lindenlabs which shows the land sales by resident for the last three month http secondlife com reports marketplace_stats 2007 03 01 land_sales_by_residents xml the whole parsing is specific to this source get the xml via http and read it into a variable and create a xml document after that content net http get uri parse http secondlife com reports marketplace_stats 2007 03 01 land_sales_by_residents xml xmldoc rexml document new content get some attributes and select them with xpath elrecords rexml xpath first xmldoc records reporttitle elrecords attributes report reportdate elrecords attributes date create a new image in the size you need in my case it was 400 width and 200 height f image new 400 200 self background_color white make some settings for the font drawable magick draw new drawable pointsize 15 0 drawable font_family helvetica drawable fill gray drawable gravity magick northwestgravity drawable font_weight magick boldweight drawable annotate f 0 0 5 4 second life reporttitle reportdate drawable pointsize 13 0 drawable fill black drawable font_weight magick normalweight set some position for the text i want to print starttoppos 24 go the records in the xml document and print the values into the new image rexml xpath each xmldoc records record do element element elements each field do field name field attributes name value field attributes value drawable annotate f 0 0 5 starttoppos name drawable annotate f 0 0 250 starttoppos value starttoppos starttoppos 15 end starttoppos starttoppos 15 end write the image to the disk i wasnt able to return it directly without saving f write result png return the image createdimg magick image read result png first response headers content type image png response headers content disposition q inline filename thepicture png render text createdimg to_blob this script returns the following image to put this image on an primitive i used the following linden script code touch_start integer num_detected llsay 0 trying if llgetlandownerat llgetpos llgetowner llsay 0 error cannot modify parcel media settings key video_texture lllist2key llparcelmediaquery parcel_media_command_texture 0 if video_texture null_key video_texture video_default llparcelmediacommandlist parcel_media_command_texture video_default llsettexture video_texture all_sides llparcelmediacommandlist parcel_media_command_url http url llparcelmediacommandlist parcel_media_command_play llparcelmediacommandlist parcel_media_command_auto_align true url has to be replaced with the url of the ruby script note to use this parcelmedia feature you have...
|