This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
5281
Features / Re: Privacy options
« on December 2nd, 2011, 01:08 AM »
It doesn't help that I've been wrapped up in a bastard funk mood lately that has just flatlined my enthusiasm for just about everything :( It's just like I've been so overloaded with *stuff*, both digitally and in real life.
Also...Quote Is redundant, since you can formulate drafts quite happily...
Posted: December 2nd, 2011, 12:58 AM
Also...
Yes -- everyone, or just me (i.e. just the ability to write drafts...)
5282
FAQs / [FAQ] Re: What is Wedge?
« on December 2nd, 2011, 01:01 AM »
Hmm. Such a thing is not simple because the preparse step is called in different ways at different times (like it's called inside sendpm as opposed to sendpm expecting it to be already done like createPost does)
The times it's called with ENT_QUOTES is where it expects to see a ' and/or a " to deal with. In posts, that is a valid situation to deal with, especially since it can manifest itself in a slightly disturbing way, notably that not doing it might potentially lead to a vulnerability. I'm not sufficiently comfortable with turning it into NOQUOTES for that reason.
Harmonisation, yes. Probably even moving it all into preparsecode, but with the caveat that it will require more than just moving a few calls, as sendpm will need updating.
The times it's called with ENT_QUOTES is where it expects to see a ' and/or a " to deal with. In posts, that is a valid situation to deal with, especially since it can manifest itself in a slightly disturbing way, notably that not doing it might potentially lead to a vulnerability. I'm not sufficiently comfortable with turning it into NOQUOTES for that reason.
Harmonisation, yes. Probably even moving it all into preparsecode, but with the caveat that it will require more than just moving a few calls, as sendpm will need updating.
5283
The Pub / Re: Logo Madness
« on December 2nd, 2011, 12:56 AM »
Sure I mean arse, but I was in a hurry earlier.
5284
The Pub / Re: Logo Madness
« on December 1st, 2011, 05:20 PM »
SMF kicks ass in its own ways too... Just not as hard as perhaps it might.
5285
FAQs / [FAQ] Re: What is Wedge?
« on December 1st, 2011, 05:18 PM »
There is already a shortened version of parse_bbc for such inline purposes, as it happens.
As for the rejection of regexp, yup such things are called ReDoS situations where a badly crafted post could tie the parser up, denying service to others. I actually don't dislike what Unknown has done in the original parse_bbc actually, I just wish it were faster, but the real problem isn't the parser, but the pre parser, which I think is ultimately going to have to be rewritten.
As for the rejection of regexp, yup such things are called ReDoS situations where a badly crafted post could tie the parser up, denying service to others. I actually don't dislike what Unknown has done in the original parse_bbc actually, I just wish it were faster, but the real problem isn't the parser, but the pre parser, which I think is ultimately going to have to be rewritten.
5286
Features / Re: Privacy options
« on December 1st, 2011, 10:33 AM »The first query does a full table scan and returns in X milliseconds. The second query does the exact same full table scan, and returns in X milliseconds (sometimes a tad more but they're all very variable). Finally, the last query does an index search, and returns in X*2 milliseconds. It's also the most 'stable' of all queries, but it's stable in that it's always slower than even the slowest return time for the first two queries...
But if we start thinking this way, then we might as well drop the concept of topic privacy entirely...?
Nope, not backported. From what I gather in the link you posted, subqueries are implemented in 5.x in a way that they can't use an index, and it works in 6.x not because they fixed that bug, but because they rewrote their subquery code.
I didn't, until we dropped support for MySQL 4.0... And, turns out, I always hated doing inner joins...
My girlfriend suggested I use DISTINCT for these no later than last night.
I'm currently helping her set up a SOAP client in PHP for a WSDL app at Oracle. Another clusterfuck, BTW... We have no idea what functions we're supposed to call (and AFAIK there's no way to request a list of available methods once the custom object is created), how we're supposed to identify, etc... Thank you Oracle for zero documentation. Plus it doesn't help that neither her or I have any prior experience with SOAP...
I don't know why I'm mentioning that... Maybe there's a SOAP specialist around here
Ah yes, you just reminded me why I'm looking up to them... LJ is the only blogging platform that actually encourages communication between blog authors, rather than having parallel blogs with their own comment authors and such. It's like LJ is a huge forum with boards set up as blogs, just like on Noisen. Back when I created Noisen (2007-2008), LJ was the only similar example, and I actually used them as an example of *why* it would eventually work. Noisen was pretty much supposed to be the 'French LJ'... Too bad it never really got momentum. I'm not very good at advertising my work. I prefer development work.
Because that's the thing here... When we work with normal-sized boards, there's no such thing as a slow query. Start adding bot posters or scraping or simply have a hugely successful site, and you get your first performance issues.
5287
Features / Re: Privacy options
« on December 1st, 2011, 12:26 AM »Other possible privacy values..?
"18 years old or older"
"13 years old or older"
Etc...
I'd say it's possibly better than having a 'mature' flag on posts.
I was thinking maybe add a 'privacy' field for contact_lists as well... Although granularity for this would be hell -- what if I want my contact list to be able to browse the list they're in? Or if I don't want to? Shall I be able to select multiple viewing groups...?
Uh. v6 is a long time from now...
Is this just in an IN () situation?
I mean, could it work with something like SELECT t.id_member WHERE (SELECT TRUE FROM wedge_other AS o WHERE t.id_member = o.id_other).....? (Just off the top of my head.)
I believe it can be made to work like that but I'm not sure, I don't think in subselects very often.
I'm not sure... If there's an IN (), we'll also be getting multiple entries just the same...?
Anyway -- query_see_topic does an inner join, and it's fucking ugly because it makes inserting the query_see_topic variable more compatibled than, say, query_see_board. Having it use an IN() would make it much more elegant.
The ability to create a blog for your professional friends... And another for your drinking buddies. (Same goes for topics, although less important.)
LJ is definitely not 'the' popular blog platform these days, but they still have got 'something'. They're also the ones who have rotating avatars, which I like... (Although not THAT much, eh.)
(We could also offer to disable topic privacy settings...)
If anyone is reading this -- please tell us whether you think that it would be nice to be able to create contact lists (i.e. friends, family, work...) and whether you'd use the feature to fine-tune your topic/board privacy settings, or you just wouldn't bother yourself?
(New topic, perhaps?)
5288
Off-topic / Re: Doctor Who
« on November 30th, 2011, 10:09 PM »
It didn't work, but being written by 10 year olds and not being horrendous is a good sign for their future as writers...
5289
Off-topic / Re: Doctor Who
« on November 30th, 2011, 08:54 PM »
Which was written by a bunch of 10 year olds, and quite amusing to boot.
5290
Off-topic / Re: Doctor Who
« on November 30th, 2011, 08:48 PM »
Other than the top entry which is the 2011 Christmas special, most of the extra bits are just special extra scenes, like deleted scenes or extra scenes. They're all on the season 6 boxed set. (The special isn't... It hasn't even been shown here yet ;))
5291
Features / Re: Privacy options
« on November 30th, 2011, 04:32 PM »So we need to establish a list of privacy IDs and their corresponding meaning...
I'm starting with the basics:
1- everyone
2- members
3- just me (author & admins)
Now we'll need to update the Import tool to actually convert buddy lists to contact lists (and automatically create a default list for every user that has at least one buddy.) I don't know if it's best to do it from the importer tool, or from within Wedge if the table is empty etc... I'd say the importer.
Slower than its equivalent subselect with a secondary table?
The problem with subselects, is that they often (always??) require a table scan to complete, even if done on the proper index...
This is something that doesn't happen with INNER JOINs.
But you need to be careful. INNER JOIN may be faster but you then have to process the results of a result-table that now has multiple rows, potentially many many rows you didn't want in the first place.
It's one of the reasons the board index query is fucked up, because it inner-joins the moderators table to the list of boards, so if you have 100 boards, each with 2 moderators, you get 200 rows back of which most of it is duplicated.
The only thing we can/may/should/will/shall/would/whatever store in the data field of the member table is the list of contact lists you have. $contact_lists = unserialize($member['data']['contacts']) or something. Would need to be done on every page load (to get the list of friend groups for thought privacy), and other uses (such as users viewing a profile etc) can be done through a quick sql query.
So... You're suggesting no lists at all? Just plain contacts...?
I don't know about that. I think contact lists would have more pros and cons. And no one is forced to create multiple lists... It's just good to have them.
Heck... Either lists (id >= 10) or 'all contacts' is easily doable in a subselect. We either select id_members who are associated to our stored id_list (>= 10), or id_members who are associated with the id_member owner of the list. In which case it'd be best to store the list owner's id in the contacts table as well, to save time. Or just do a find_in_set on their buddy_list of course... But buddy lists are limited in size, unlike the contacts table.
Also, as I said above, from my experience, subselects don't use indexes. If you could help here, because you're the mysql specialist out of us both, it'd be nice to be able to use subselects, if only because it'd make life a hell of a lot easier when using {query_see_topic} in the code I'll eventually import from the Noisen diff...
My idea was to have such boards rely on Wedge...
Then again, it may never happen at all.
The only performance bottleneck I've been told so far, is the random list of items in the media homepage. That's because it retrieves all entries, randomizes them, and returns the first few. I still have an entry in my to-do-list to add a pseudo-randomizer variable in each item...
Right now, access is controlled at board level. Once you enter a board, you don't have any incremental performance concerns about access rights. A board with 1 topic has the same overhead as a board with 1m topics in it as far as assessing access to that board goes.
If you have topic-specific granularity, you have to do more work to assess it, specifically there's an extra overhead on the board index, message index, display, attachments... anywhere that has to assess topic access, which is more complex than board access (because you have to implicitly do both, though you can do it so that board access is evaluated first and if that's not going to let them in, you can skip the topic access checks)
Consequently it must slow things down compared to a base SMF install, but you probably wouldn't notice it on Noisen until you got to boards that had many many many topics, because the one-off cases like attachments or topics themselves, the incremental cost is not significantly higher, it's for the cases where you're assessing a lot at once (like board index, message index)
I'm hoping not.
5292
Features / Re: New revs
« on November 30th, 2011, 03:25 PM »
(1 file, 1KB)
Revision: 1183
Author: arantor
Date: 30 November 2011 14:25:03
Message:
! Missing ; would cause the resultant minified code to choke. For once IE9 came to the rescue, telling me what character the error was on, rather than just the line number... (script.js)
----
Modified : /trunk/Themes/default/scripts/script.js
Revision: 1183
Author: arantor
Date: 30 November 2011 14:25:03
Message:
! Missing ; would cause the resultant minified code to choke. For once IE9 came to the rescue, telling me what character the error was on, rather than just the line number... (script.js)
----
Modified : /trunk/Themes/default/scripts/script.js
5293
Features / Re: Privacy options
« on November 30th, 2011, 12:26 PM »Hmm.. Okay, okay... But I don't see this being useful in Thoughts, for instance...
It was kind of rhetorical. Noisen has asynchronous contacts, plus the ability to hide selective contacts from viewers. That one will be in Wedge too, once I get to implementing contact lists...
Oh... I see what you're talking about -- selecting several contact lists for viewers.
For instance -- if you have a family-only post, you select your family. If you have a work-only post, you select your co-workers. If you have a friends-only post, you select your friends. Among which can be some of your family and co-worker list members, of course. The point is having the ability to put some people into multiple lists. Then, when a list is modified, the 'buddy_list' field in {db_prefix}members is updated to reflect the entire list of contacts.
Although I'm not sure we'll be using that field much in the future... But IIRC there are reasons to leave it in.
If you start setting privacy settings on everything in your profile for instance, it'll be a disaster if you have to set multiple contact lists in each. I think it's much smarter to encourage people to put their 'safe' friends into a special list, and give that list all permissions, and deny the rest to anyone else -- guests, members and contacts that aren't in the safe list.
So when we check for a topic's privacy validity, we just retrieve its privacy setting, if <10 (for instance) it's a special setting like 'guests' or 'members' or 'just me' or 'just me + mods' or anything else we can think of, if >=10 it's a contact list, so we INNER JOIN wedge_contacts AS c ON t.privacy = c.id_list AND c.id_member = {int:myself}, or something like that...
As I see it, it's (WHERE i'm_admin OR topic starter = me OR (privacy >= 10 AND me IN (SELECT id_member FROM wedge_contacts WHERE privacy = id_list))
Does that make sense...?
I don't even know HOW exactly it's not KILLING performance, this one...
I'm not making advances when it comes to the select box, BTW... I'm still unsure where to start from!
5294
Features / Re: Privacy options
« on November 30th, 2011, 02:31 AM »- Okay for moderators, you've convinced me they should be kept out. Still, I think it's best to leave that option aside -- just have 'Just Me'.
- I'd like to have some user opinions on contact lists. Who do you think does it best? Noisen.com (if you ever used it)? Facebook? Google+? SMF?
- Additionally, how would contact granularity hurt performance more than a general 'My Contacts' choice...? Considering we'll be hitting an extra table in every case?
If it's kept as a simple number, it's possible to solve a touch more efficiently, because what you can then do is figure out who the users are who have the current user as a friend, and turn it into (where topic starter = me OR (privacy = friends AND topic starter IN (list of people who friended me)).
The one thing to realise about topic privacy, and this is quite important: it is going to suck compared to board privacy. It's unavoidable, because there's no way to do it in a way that adds extra conditions that can be evaluated without ORs (except in the just me or everyone cases) - ORs are bad for performance because they're an extra branch and often virtually a sub-query in their own right.