xPerT -- PervTalk plugin for Xlobby

Xlobby plugin development

xPerT -- PervTalk plugin for Xlobby

Postby P3rv3rt B3ar on Wed Jul 19, 2006 1:44 am

check it out:

xPerT

I hope somebody else can host the plugin too would be great... cause i have no idea how long that IP is valid.

TO DO list for next releases:

- Add feature, known as "tally"
- Add options dialog
- Make ifless work with float also
- Fix "recv lag" bug (DONE)
- Hunt and fix "concurrency related jam" bug
- Open more options for key value (DONE trough workaround)
- Fast catwalk operations (O(n): n log n)
- Faster referencing to non-current items
- add support for common dialogs
- add support for presenter of bars
- add subscribable click point on lengthier side of button.
- add catmaps
- add collagecats
Last edited by P3rv3rt B3ar on Wed Sep 06, 2006 8:13 pm, edited 6 times in total.
P3rv3rt B3ar
 
Posts: 1364
Joined: Fri Apr 07, 2006 9:52 pm
Location: West Coast Funland

Postby sagitaz on Wed Jul 19, 2006 2:26 am

test and it's a very good plugin :wink:

i don't understand all tutos but i'm try testing it.

good job, thanks for this :wink:
sagitaz
 
Posts: 114
Joined: Mon Jul 05, 2004 11:17 pm

Re: xPerT -- PervTalk plugin for Xlobby

Postby dgemily on Wed Jul 19, 2006 6:24 am

P3rv3rt B3ar wrote:I hope somebody else can host the plugin too would be great... cause i have no idea how long that IP is valid.


here it is: xPerT
dgemily
 
Posts: 793
Joined: Thu May 13, 2004 6:24 am
Location: Paris, France

Postby sagitaz on Wed Jul 19, 2006 2:13 pm

can we have more explain for plugin command :wink:

what command need parameter ? what command do ?

Delegate = ???
Invoke = ???
Reconnect = ???
Disconnect = ???
If
Ifnot
Ifequal
Ifnotequal
Ifless
CatAdvance = categoryName>n
CatRetreat = categoryName>n
CatBack = categoryName>n
Call = ???
Init = ???
Draw = ???
Consume = ???
DeepMoveTo = ???
Focus = ???
Return = ???
Animate = ???
Stop = ???
Stamp = ???

And do you have a little exemple skin ?

thanks a lot :wink:
sagitaz
 
Posts: 114
Joined: Mon Jul 05, 2004 11:17 pm

Postby P3rv3rt B3ar on Wed Jul 19, 2006 3:12 pm

"Delegate" and "Invoke" are P3rvTalk commands and are unusable to public until i release p3rvHub and ZPd... ill explain those then.

"Call" and "Return" i already tried to explain. "Call" invokes any xlobby event (set of commands) and its called with

EventGroup>Event or

EventGroup>SubEventGroup>Event

"Return" makes it possible to return from called event in middle (obviously makes sense only when used together with "ifxxx") though it is untested.

"Reconnect" and "Disconnect" are for as name suggest connecting and disconnecting from P3rvHub, these are not needed until i release it.

"CatRetreat" is same as CatAdvance but does catwalk to other direction.

"Init" is to certain procedures which are normally performed at startup... It doesnt make much sense to call it normally... unless u change your events, u need to call "Init" to update events used for "Call" command. or u can just restart Xlobby if u prefer. As far as i can remember it doesnt take parameters.

I dont know exactly why i added "Draw"... i thought i need it... but i guess i never did and just forget to remove it... but it just Invalidates whole screen... actually now that im thinkin it might not even work... no parameters.

"Focus" tries to return focus to xlobby with varying success. no parameters here either.

"Stamp" sets a timestamp to certain field on certain item on certain cat:
its pretty useless cause there is easier ways to do this if u wanna do it for current item. Main reason for this command is setting outside Xlobby... but on last meters i also added it accessible from inside... dont know exactly why. Thing is xPerT provides more services to P3rvTalk than it does for XLobby... including other catwalk operations. anyway if i can recollect correctly syntax is:

StampField>Value>Field>CatPath

where StampField is the field to be stamped, Value/Field/Catpath spesifies item to be stamped. Where Field is the field which value is to be compared against Value and if it equals stamping is done on that particular item... Catpath specifies category where the item is searchfor:

Catpath notation speficies whole path of categories: in flat category called "movies" it can simply be

movies

but if we have database with depth greater than 1. It can spesifie whole catpath from root to leaves: so if we have category "music" for albums and "musicdetails" for songs, then cat path

music>musicdetails

means that all songs are searched for one which Field's value matches to Value and that one is stamped. but we can also call using catpath

musicdetails

which means that only songs on currently selected album are searched for match.

CatPath can handle any depth since all my catwalk algorithms are recursive. Only problem is that i aimed them for small categories like for videos... i doubt that they can handle big categories with several thousands of items. We already had discussion about implementing Catwalk algorithms in logarithmic time, which would make them able to perform with categories of pretty much any size efficient enough as long as cats are properly hierarchial and not flat. Ive already planned how to implement these... and fastcatwalk algorithms will be available in next version.

DeepMoveTo (another catwalk algorithm) is same as XMoveTo... lots of thanx to original author... but difference is that it handles categories which are deep, AFAIK original doesnt. if i remember correctly syntax is:

Value > Field > CatPath

Where Value is matched to contests of Field in set of items pointed by CatPath. Look for CatPath notation above... also here any depth of categories can be specified.

NOTE: all Catwalk algorithms have two requirement to work:

1) Items in category in question must have unique values in parameter field. (In most of cases this is inherently true).

2) every cat on catpath must exist. But u can use dummy cats, hiding them on never visited pages.

"Stop" and "Animate" are part of experimental feature to make animations possible. more on them later...

"Consume" is meant to adjust how much processor time is left for other processes. Cause screens with heavy use of alternative ways to present categories can be quite heavy. First use your common sense... when starting to play video, switch to another screen, dont display one with lot odf usage to "beforeprevious" etc... If common sense fails u can experiment with consume, allthough not expect too much from it. parameters:

Value

where value is positive int. Default setting is 1. If u increase it. screen should update slower and everything on GUI should take more time... but there should be more CPU cycles available for other programs. If your machine is fast... dont hesitate to experiment with zero. If "Consume" is useful (which i highly doubt) u can set optimal value screen by screen basis.


Whoohaa... done... if something stays unclear dont hesitate to ask.

Theres also sh*t load of undescribed variables... but... let me catch a breath first :)
P3rv3rt B3ar
 
Posts: 1364
Joined: Fri Apr 07, 2006 9:52 pm
Location: West Coast Funland

Postby P3rv3rt B3ar on Wed Jul 19, 2006 3:24 pm

Oh, it seems u misunderstanded CatBack.... it takes only one parameter... which is the category. it just remembers and removes effect of last CatAdvance or CatRetreat command. It is used to return current item back to normal after temporal shift in it...

EDIT: Oh and i forget about the skin: no, i dont have one... im not skinning type... i can only provide screenshots and try explain features and how they are used. Well i hope some of experienced skinners here, picks up the torch and turns new capabilities of xPerT to possibilities for endusers.
P3rv3rt B3ar
 
Posts: 1364
Joined: Fri Apr 07, 2006 9:52 pm
Location: West Coast Funland

Postby P3rv3rt B3ar on Thu Jul 20, 2006 12:21 pm

I dont know how many of u guys are testing this... but i would approciate some data about performance. If u happen to try to make screens with these "extended categories" please give me feedback do they perform well enough. Also let me know how many items u have showed and how many fields for those u query, and what percentage of them is pictures, and dont forget to mention speed of processor, and wheter consume helps u control performance or not. I hope we can together make some guidelines, which pitts processor speed, screen complexity and responsiveness against each other.

Reason why i have such a big need for data is that my test machine is very outdated and forming any realistic estimates about performance with it is impossible.

Anyway i have also plans for new algorithm on this part of program, which should put all these performance issues to history. But like i said i dont know when i have change to get back with the code...

Also there seems to be concurrency related bug which causes xlobby to halt. Its either caused by deadlock between threads or inorderly calls to grab/releasePaintkey helpermethod. Any case these concurrency related bugs are usually hardest to track, so its a bitch. Id like to ask if this hang has happened to u or not? cause im pretty sure that it happens only when xPerT is connected to P3rvHub, so if my diagnostics are correct, u guys shouldnt have experienced it. is it true?
P3rv3rt B3ar
 
Posts: 1364
Joined: Fri Apr 07, 2006 9:52 pm
Location: West Coast Funland

Postby P3rv3rt B3ar on Thu Jul 20, 2006 2:01 pm

Ok i try to take little time now to descripe rest of the variables. For complete listing refer also to original link where some of variables are already described.

present

Code: Select all
present>time|date|clock>[i]n[/i]|[i]stamp[/i]


Ok first few words of notation used here, i tried to use bit more formalism than my earlier descriptions... character | denotes or and italic is variable while plainface is literal.

Where n is positive integer which represent time in second and is used in conjunction with second parameter time.

stamp is xPert form of timestamp and is used in conjunction with second parameters date and clock.

These variables are presentors and subpresentor time takes int amount of seconds and presents it either as MMmin SSs or HHh MMmin depending on context.

date and clock subpresentors take a timestamp and present it as locales long way to represent date or shortway to represent time. These subpresentors are untested.

ifxxx

all if commands exists as variables as well, difference is though when they are used as variables they are written in small case and separator is ">" instead of "|". There is as many parameters as in corresponding commands, but last parameter is another variable or literal but not command. If expression is true translation of if returns that last variable, else it returns empty string.

Example of use:

If u wanna see star which contains string "new" on top of category items which have added shortly, u just have to stamp items when they are added, use ifless inside loadpic which compares stamp to soon discussed relative timeperiods and returns filename of "new" pic to loadpic if stamp falls inside threshold of timeperiod.

Take a note that both, relative time periods and ifxxx variables are untested.

loadanimation

yes there is loadanimation too... but i explain its usage later...

fetch

Fetch is big thing. Its one of the Catwalk variables. It fetches contants of given field in given category based on value of another field, much like all other catwalk commands or variables.

Code: Select all
 fetch>[i]FetchedField[/i]>[i]RefrenceValue[/i]>[i]ReferenceField[/i]>[i]CatPath[/i]


where FetchedField is Field which value we want to fetch, ReferenceValue and ReferenceField spesifies based on which entities item is matched. And as u probably remember from earlier tutorials CatPath can contains several parameters itself(incase of deeppath) or be just name of cat (in case of flatcat).

I strongly advice against using fetch (or any other catwalk variables) as screen variable. Theyre as such planned to be used only in commands. But it is possible to use them as screenvariables, without overloading your system (im doing it currently) IFF u have certain knowledge about translation, which i will reveal only later.

xfetch

crossfetch command is rather complicated and i cannot remember order of parameters right now... so we have to return to it later... Its much like fetch but retrieves information across categories. its much like JOIN operation in relational databases if u will.

random
this other catwalk variable is my favorite, it return value of specific field of random item in given category

Code: Select all
random>[i]CatPath[/i]>[i]FetchedField[/i]


As fetch earlier... dont use as screen variable.... before u know few secrets from translation....

weightedrandom

Gives a possibility to weight the odds based on certain field. Values of weight field must be positive integers.

Code: Select all
weightedrandom>[i]WeightField[/i]>[i]CatPath[/i]>[i]FetchedField[/]


Precise, Constant, Variable

These make use of P3rvHub and are explained later.

last

This gives u relative time periods explained earlier to be used in comparisons with stamps.

Code: Select all
last>hours|days|months>[i]n[/i]


n specifies amount of hours, days or months before current moment in time. so it can be used to check if some timestamps are newer or older than expression specifies.

NOTE here that these are not exactly precise... but should be consider more like fuzzy logic time intervals, since inherent imprecision included in expression month.
P3rv3rt B3ar
 
Posts: 1364
Joined: Fri Apr 07, 2006 9:52 pm
Location: West Coast Funland

Postby bfauska on Sat Jul 22, 2006 4:05 am

This looks like a really cool plugin, I have been waiting a long time for a way to advance the catagory around the selected item and as you said in my feature request thread this should do it.

This is the first plugin I have used so I don't know if there was a error on my part or if something is not working right with the plug in. I downloaded the file and saved it in my plugins directoy under xlobby, it showed up in the plugins list on the F2 window, and I got some of the features to work... kind of. The are working some of the time and not others. It seems to allways behave the same way on any individual item in a DB, but it doesn't behave the same way on ALL of the items.

For example: I have a screen with 7 items, 4 of them are text items with your plugin variables in use (beforeprevious, previous, next, afternext), 1 other is a text item (category>movies>cover), and the last 2 are buttons with events that advance the (category>movies>cover) one step forward or back.
When I go to the page it shows the first item in my DB in the right spot, and as I advance through the DB it sometimes shows the surrounding movies covers and sometimes does not. Every time a given movie is the current selection it shows the surrounding art the same way... If the current selection is "Changing Lane's" you also see next "Charlie and the Chocolate Factory"... always. But if the selection is "Charlie and the Chocolate Factory" you see all 4 others, "Cellular," "Changing Lanes,"Charlie's Angles" and "Chicago". I don't get it... it happens in similar ways all over the DB. One thing that is consistant is that it never shows a beforeprevious without a previous or a afternext without a next.

Like I said before, I don't even know if I "installed" the plugin correctly. I noticed that it says "offline initialized" under the status collumn of the plugin tab on the F2 screen, I don't know if that means anything.

I would really like this to work and could take screenshots of the problem if it would help explain it, but I don't have anywhere to upload them. I have also just documented what shows when in excel so that I could look for a pattern but I saw nothing, if the spreadsheet would be helpful, I can save that too.

I know you said that you didn't have much time lately but if you could help it would be great.

Thanks,
Brian
bfauska
 
Posts: 94
Joined: Thu Jul 21, 2005 10:50 pm

Postby P3rv3rt B3ar on Sat Jul 22, 2006 12:34 pm

Oh, ofcourse i have time to help u guys with the problems, and im especially interested to find the bugs and fix them. Only problem is i didnt exatcly knew when i have a change... meaning that i used 30 days of freeuse without registration period on 2 out of three of my windows machines of express edition of c#. 3rd one holds MSVC 6, im not keen installing on it cause it could broke that installation. So i cant currently recompile unless i register to microsoft, and i wont if there just is way to avoid it. Dont get me wrong i have legal OEM copies of windows running on each machine, also my universities site licenses even extend to my home, so AFAIK im even licensed to use real C# version. But i simply dont like idea about registering and wont do it... Its same thing with company drug tests... Bottomline is if we dont fight for our privacy, we will certainly loose it.

However things are not so grim... ill be ordering new machine on next week... its especially important to get this concurrency jamming bug fixed cause it is holding back ZPd release. Also i simply forgot to implement one feature i had planned... Anyway now u guys know why so many features are untested... many are just last minute implementations... i finished last version 2 minutes before than unregistered license expired... Mayby around two weeks i have, parts arrived, machine built, and compiler ready to run again.

Anyway im sure u r using plugin correctly... but i cant yet say what could be cause, because it has been working quite alright to me. But, how small is your category? Cause it is very likely this kind of behaviour could occur towards each end of category. Im using these features currently on two categories, one large, and other very small. well the large one is one u uys saw on my screenshot, and when i approach its end, yes it has behavior like this. And small one shows 8 items, but it starts on current and only uses forward items since i wanted first items to be shown always (even when theres less items in cat than 8).

First algorithm used to work so that it made catwalk in every case... but that leaded to dublicate items if cat was smaller than amount of items u show... so i decided to add measure which doesnt show item if catwalker has gone around the cat. Mayby this last minute addation is buggy somehow... btw i think it is based on parameter field... so if u have exact same values on that field on different items, your problem is there... it needs parameter field to be unique.

Or mayby your problem is something very specific for CatAdvance>1... cause i only made some very few initial tests with it long time ago, so i knew it was possible, never tried it again ever since. Anyway if u could find out, when this occurs it could be great help, atleast check if behaviour happens only at the ends of cat or in middle too? oh and does it just show empty string or does it say "Does not compute"?

FYI "offline initialized" is what there should read right now... it says online when connected to p3rvhub only... so everything good there so far.
P3rv3rt B3ar
 
Posts: 1364
Joined: Fri Apr 07, 2006 9:52 pm
Location: West Coast Funland

Postby S Pittaway on Sat Jul 22, 2006 1:10 pm

i have been using the "free" versions of 2005 (vb, c# c++) for ages now and have not been asked to register anything??

Fow what is worth, I have Visual Studio 6, Visual Studio 7, and the express 2005 versions installed on the same machine and i havent had any problems yet (i am i tempting fate by saying that? :))
S Pittaway
 
Posts: 651
Joined: Wed Jan 25, 2006 11:08 am
Location: Manchester, England

Postby P3rv3rt B3ar on Sat Jul 22, 2006 1:24 pm

To Bfauska

Yes i managed to replicate your bug. Its not just in the end. Im very surprised, that really shouldnt be there. It mus be because of those last minute additions, and i obviously didnt test enough after them. Cause i really dont think that bug would have been unnoticed if it would have existed before.

I will hunt it down, and fix it when i have new compiler up and running, so theres no need to abandon xPerT, u just need to be patient for a while... Im sorry but i rather sell my sould to devil than Bill Gates... atleast he will reward me hellfull of naked succubi :P

EDIT: Oh, since u defenetely are testing this... could u also give me some feedback is it working well enough, speedwise? i mean if we leave this bug out of consideration...

To Pittaway

Yeah, it will work as long as u keep it up... i just didnt know it at the time... next time i will know... but its still risky... cause windowses are not most stable systems around...

Oh thanx for info about running them on same platform... it just i was running 2005 beta, with same time some other version, and experiences were not pleasent... well all 2005 beta experiences were horrible anyway. I might try it on future... but now since i have new platform coming in few weeks, i rather dont risk... anyway time is not lost even plugin wise cause i can plan xPerT and Code kXd forward with MSVC 6+

BTW whole original idea of P3rvTalk is essentially to remove limitation to use C# .NET to Xlobby plugin coding... It extends XLobby plugin infrastructure to running on any platform programmed with any language.
P3rv3rt B3ar
 
Posts: 1364
Joined: Fri Apr 07, 2006 9:52 pm
Location: West Coast Funland

Postby P3rv3rt B3ar on Sat Jul 22, 2006 1:52 pm

To Bfauska

Actually... I was too hasty with earlier post. It turns out that in my case, parameter value for those items was not unique. So its not in my case bug in XPerT after all... it just needs unique keyvalue to operate... Check if this is the case for u to. And if its not, try to provide more information from your case.

EDIT: When i was coding it i thought that parameter was most logical candidate for key value, so it is hardcoded as parameter... but if there is requirement to use nonunique values in parameter field. I can make Key field for next version configurable.
P3rv3rt B3ar
 
Posts: 1364
Joined: Fri Apr 07, 2006 9:52 pm
Location: West Coast Funland

Postby P3rv3rt B3ar on Sat Jul 22, 2006 2:08 pm

EDIT AFTER AN ANOTHER: Now that im thinking symptons u described it matches exactly... im 90% sure that u have same parameter value forexample in movies "Cellular" and "chanching lanes", is that the case?

i was trying to hit "edit" but i guess i hit "quote"... well what the hell, im thread starter anyway...

EDIT: i can see now that parameter was bad choige for key value... i open more options for key in next release.
P3rv3rt B3ar
 
Posts: 1364
Joined: Fri Apr 07, 2006 9:52 pm
Location: West Coast Funland

Postby bfauska on Sun Jul 23, 2006 12:05 am

It looks like it is the parameter. All of my offline movies have the parameter "video_ts.ifo" all of the online movies have the directory of their files as the parameter.

It looks like all of my online movies show all of the surrounding movies, and the ones around it seem to vary, it may be a very complex pattern because of the irregular nature of my online/offline collection.

Other than that the speed seems to be fast enough for me. Oddly, it seems like it is fastest when it is showing all 5 covers... that's good because ideally my movies page includes about 18 movie covers at any one time. If it makes a difference, it seems to be slightly faster with the fast interface option checked in xlobby, but the difference looked minor. It looks like if this bug gets fixed I can at least use the plugin to make my movies screen everything that I want it to be.

Good luck sorting out the C# issue, I will be patiently waiting for an update, if I can be of any help just let me know how.

Later, and thank you,
Brian
bfauska
 
Posts: 94
Joined: Thu Jul 21, 2005 10:50 pm

Next