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.
226
Archived fixes / Re: Just emptied the boards table and got an error
« on June 29th, 2013, 06:02 PM »
Did you truncate the table or empty it board by board?
227
Features / Re: More useless nonsense
« on June 28th, 2013, 09:47 PM »
But that's the thing: if you're using external statistics tools, they're likely to be more accurate... or if you don't care about them, you don't have the overhead of tracking them.
We're back to the notion of 'if you don't care, why have the hit, but if you do care, you'll use something more accurate anyway'
We're back to the notion of 'if you don't care, why have the hit, but if you do care, you'll use something more accurate anyway'
228
Features / Re: More useless nonsense
« on June 28th, 2013, 07:45 PM »
I wonder why we place so much importance on these numbers that, in the scheme of things, really don't make that much sense.
I find it interesting that WordPress does not keep a view count per article. Or if it does, it's not actually shown in their ACP anywhere I can find. I wonder what the logic of not doing so is.
There are certainly cases on sm.org of threads having obscenely high view counts unnaturally quickly (rising tens of thousands inside an hour)
I find it interesting that WordPress does not keep a view count per article. Or if it does, it's not actually shown in their ACP anywhere I can find. I wonder what the logic of not doing so is.
There are certainly cases on sm.org of threads having obscenely high view counts unnaturally quickly (rising tens of thousands inside an hour)
229
Features / Re: More useless nonsense
« on June 28th, 2013, 07:16 PM »
UptimeRobot visits every 5 minutes to see if the site's up or not (and hands out RSS feeds about it), the others I'm not sure about what they are but they are regular bot visitors who seem to be crawlers of some kind.
View count used to count everyone, I believe we changed it to count only non-robots (but that still depends on having the robots set up in the first place)
View count used to count everyone, I believe we changed it to count only non-robots (but that still depends on having the robots set up in the first place)
230
Plugins / [Plugin] Re: Notifications system (1.0)
« on June 27th, 2013, 11:51 PM »- Is it feasible?
- I hate the very fact that explains are so obscure to a non-specialist, to me it makes no sense, and thus has limited interest.
As for notifications, @Dragooon is probably the person to ask.
231
Plugins / [Plugin] Re: Notifications system (1.0)
« on June 27th, 2013, 11:22 PM »Autoload: we could easily call the file Class-wedit.php, it doesn't look as good, but it's not much of a problem..?
Per-album: it's the best solution, because one might want to have 'likes' on a regular album, and 'ratings' on an audio album with multiple tracks that the author wants to know who prefers what, etc... (I feel like I made a grammar mistake in that sentence, hmm...)
AND: see, that's where it goes right over my head... I still have no clue about how indexes work, and not that I care much, either...
Email: let's start with just raw text e-mails, all right..?
I changed Class-Notifier's to remove the abstract keyword, but I need to access the current notifier's name, so how do I do it..?
As far as current notifier's name, get_class($this) seems the likely candidate?
232
Plugins / [Plugin] Re: Notifications system (1.0)
« on June 27th, 2013, 06:31 PM »I don't think we have the same definition of an autoloader, though... You're talking about spl_autoload_register, right..? I was thinking of something entirely Wedge-made, myself...
An autoloader is something that does the loading of a class when it's called for without explicitly loading it. You just say $var = new Classname(); and if it is already loaded, fine, if not the autoloader function is called, and given the Classname and essentially expected to figure out how to load it.
__autoload is the simple version, one function, application-wide, that will receive every call for a class that doesn't currently exist. spl_autoload_register is the swish version, which lets you declare multiple functions that act as __autoload functions. They will be called in order and attempt to find the class name. Bear in mind plugins may well want to declare autoloaders. I'm strongly thinking of making SSI auto-loader driven rather than including every function every time it's used.
Short of having a list of names to files (e.g. wedit => Class-Editor.php), there's simply no way to do it. If we're going to do *that* we might as well not bother with an autoloader in the first place.
Per-album option, then..?
If I was MySQL (but I am not), I would do it this way...
- gather all of the AND elements in the WHERE.
- go through each of them, see if there's a matching index, if yes, use index, otherwise, skip the test for now, and look for the next test that has an index.
- when the loop is finished, if it's still TRUE, then go back to the beginning, and run a regular unindexed sort on all remaining entries, until we get FALSE.
Wouldn't it, err... Make more sense, to run queries this way...?
But as I said, I'm not MySQL... These guys probably know better than me, don't they..?
Basically, HTML e-mail = higher chance of being flagged as spam, and thus not seen by the end user.
HTML e-mail is fine for a marketing newsletter campaign, where you're precisely trying to attract someone's attention, but it's no good for something that's utilitarian, and it also makes it look less 'personalized', because you can't help thinking that it's an advertisement, even if it isn't.
| 1. | For those not familiar with how the mail queue works, it does something unlike every other insert in SMF/Wedge. Most inserts, even those with bulk lines to insert, are never going to get anywhere near the query packet limit, but the mail queue insertion is potentially very likely to do so. So the query is built bit by bit and then thrown as a single big-ass query, typically around 800KB in length, into the queue table. I have to admit I was impressed when I first saw it because it's showing an awareness of a problem most people don't even know exists. |
233
Features / Re: More sidebar complications...
« on June 27th, 2013, 06:11 PM »
What do you want me to test? (iPad 3 here)
234
Plugins / [Plugin] Re: Notifications system (1.0)
« on June 25th, 2013, 12:08 AM »Hmm, I think they do..? (Once you ucfirst them, of course...)
And an autoloader wouldn't help in wedit, wezip, westr, wesql or similar cases (but most of those aren't dynamically loading) or any similar 5-letter class naming scheme because there's no way to derive the filename from those class names.
And in any case, an autoloader is going to be largely screwed if you want plugins to use them because the plugin folders aren't part of the autoload list. (XenForo solves this aspect by essentially expecting plugins to add to the master Library/ folder so then you have Library/Author/System/Component deals, giving you classes named Author_System_Component, which IMHO is hideously long) And plugins will want to declare their own notifications at times.
It's actually quite tempting to ditch media ratings in favor of likes, but in that situation, things like fox.noisen.com lose some of their interest, at least for me -- since I like giving very precise ratings to these audio files. But really, in 95% of the cases, a like would even be preferable, because it's much easier to 'grasp' for users, who these days are so incredibly lazy...
Dunno if it matters that much -- if id_object is included as "AND id_object ...", MySQL will prioritize the first test (if it's keyed) before this one, right..?
In hindsight my index suggestion was probably naive but I'm kind of thinking on the hoof a bit here. If you have two clauses in a WHERE, MySQL is going to run them in that order. That means if you're doing two WHEREs on table contents, the WHERE clauses should follow the index.
This is kind of a chicken/egg scenario, the query should follow the index but the index is for the query's benefit. What is ideal is the characteristic of selectivity. The more selective something is - i.e. the criteria that lets you select a suitably useful subset of rows with the fewest characters - the better the index will be.
I suggested notification then what the notification is about, because that's logically the direction of selectivity, but I suspect on profiling it, putting the index on id_object then the type of notification (but making the index cover both fields in all cases) would be even better. It's still selecting the same rows, still selecting the same data, but the way it goes about it (which is what EXPLAIN will tell you) is faster. If you have to go through something row by row, better to have the fewest rows possible first.
Oh, you have no idea how many times I regretted including AeMe by default in Wedge... :^^;:
Not because it's not maintainable -- it is -- but for two reasons:
- too many 'loose licenses' in the code, meaning it's currently not compatible with Wedge's, and it will eventually force me to change most of the libraries to make it work, while I wouldn't have had to do it (so soon), had it been a plugin...
- my original plan was to ditch the attachment system, and replace it with media items uploaded to a default, fallback 'attachments' folder. Hmm... Well, I never got around to do that. Too much attachment code, too many things to change entirely. I could have done it at the beginning... But three years later, I'm just wary of huge code overhauls, and I don't see myself ever doing it, which is a pity...
And I suspect it wouldn't be such a big deal to do the replacement - the real issue is doing it for *here* at this point in time. Though I'd suggest refactoring Aeva's code at this point so that action=media itself might still delegate tasks everywhere but it doesn't need to load hundreds of KB of code to do so every time (for busy galleries it can actually hammer a server, to the point where one 'firewall' mod for SMF typically considers it a DOS risk)
If you like, it's something I can tackle when I'm back?
Why is Notifications a plural, and Class-Notification a singular, for instance..? :P
Why is weNotif called that way (Wedge standard is "wefirstletters", all lowercase[1]), and why is it an object to begin with?
Of course it would also encourage standardisation of the naming system like you wanted to do.
I'm currently holding my changes, been doing so for a week now, I don't know where to go...
(Mind you, this isn't the only thing I've been stuck on; I'm very, extremely stuck on getting infinite scrolling to work 100%, and despite several internal rewrites, I still can't get it to behave better than it currently does.)
I do have some of the changes fixed for the /e modifier deprecation but I'm not yet ready to commit them for a similar sort of reason
236
Plugins / [Plugin] Re: Notifications system (1.0)
« on June 23rd, 2013, 04:45 AM »
Yeah, see, that makes sense to me.
237
Plugins / [Plugin] Re: Notifications system (1.0)
« on June 23rd, 2013, 01:36 AM »
What did you do? :P
238
Archived fixes / Re: Can't Post Thoughts on IE10 on Win8
« on June 22nd, 2013, 05:37 PM »This is jQuery's bug ticket for this issue, and they indicate that Microsoft doesn't seem to give a damn. I'm tempted to revert my changes, and just use $.post(), because really, really, Microsoft, go to hell.
Since we're never going to make money with Wedge, and we spent three years on it already, and I wasted months on IE compatibility, I don't want to spend an extra minute on their vomit.
239
Plugins / [Plugin] Re: Notifications system (1.0)
« on June 22nd, 2013, 05:33 PM »
Without looking at the code (been snowed under with other code)... here's my take on a few things:Quote For handling multiple operations to the same thing. E.g. if three people like a post, you'd want to tie them all together using the id_object. I mean we *don't* do that but we *could*. And it's on that field that we do it.Quote It is, under certain conditions. Firstly, the parent class must be loaded (or invokable through an autoloader) before the child class, and secondly whatever invokes the child class will need the full class name and that seems a bit long for the current system.
Autoloading is currently tricky because the class names don't really match the filenames but we could do something with it if we wanted.Quote We have a gigantic data field for stuffing things like that into so it's no big deal to track it and then generate an appropriate message in getText().
See, there's more potential for likes than we're currently using; there's no reason why we couldn't attach likes to media items, for example. I know media items have ranking, but I can see the use for likes on media items as an additional option.Quote It'd be better served as a key on (notifier (6), id_object) really from what I remember.Quote This is something I've raised in the past, actually. issue_notification() needs to handle loading all the relevant files (including the right file for a given notifier) and then we don't need to load it all each page (which would be handy)
Right now, the notifications core doesn't just load each page but every notifier does too. I can kind of see that need, to load each notifier, so that you know what you have available... I dunno.
I have a hard time understanding why id_object gets its own database field.
- Could be done as an extra plugin, e.g. a class named Thought_Like(s)_Notifier, that extends Likes_Notifier, and can override all of its functions. Is that even doable..?
Autoloading is currently tricky because the class names don't really match the filenames but we could do something with it if we wanted.
- Could be done within the same notifier class, e.g. when returning the notifier name, getName() should return 'like' or 'like_thought', depending on the origin. Of course, this implies that the notifier keeps track of what type it is, internally.
See, there's more potential for likes than we're currently using; there's no reason why we couldn't attach likes to media items, for example. I know media items have ranking, but I can see the use for likes on media items as an additional option.
(BTW, I'm surprised that id_object doesn't even get its own key..?!)
Also, maybe Notification::issue shouldn't be a method. Maybe it should be issue_notification(...), and this redirects to your Notification object, or something... Notification::issue implies that the notif object is loaded, which shouldn't be needed, at least not at all times. I don't know. Maybe it should, but it's just strange to me.
Right now, the notifications core doesn't just load each page but every notifier does too. I can kind of see that need, to load each notifier, so that you know what you have available... I dunno.
240
Off-topic / Re: YAQT (yet another quote thread)
« on June 21st, 2013, 06:15 PM »
Of course, one methodology of nailing that is simply to strip nesting of quotes so that when you quote a post you're only quoting that one post so you wouldn't get crazy amounts of notifications. So that when a post is quoted, only that post's owner gets notified.