pauamma: Cartooney crab wearing hot pink and acid green facemask holding drink with straw (Default)
Res facta quae tamen fingi potuit ([personal profile] pauamma) wrote in [site community profile] dw_dev_training2011-11-21 05:27 pm
Entry tags:

Question thread #3

It's time for another question thread!

The rules:

- You may ask any dev-related question you have in a comment. (It doesn't even need to be about Dreamwidth, although if it involves a language/library/framework/database Dreamwidth doesn't use, you will probably get answers pointing that out and suggesting a better place to ask.)
- You may also answer any question, using the guidelines given in To Answer, Or Not To Answer.
randomling: A wombat. (Default)

Testing

[personal profile] randomling 2011-11-21 04:38 pm (UTC)(link)
Hi!

So I'm working on Bug 2886, and I've reached the point (with lots of help!) where I MIGHT have a working patch. And now I need to test it.

And I'm kind of stuck, to be honest.

How do I go about designing a testing plan for a bug like this? What kind of use cases do I need to take into account?

Thanks, guys!
snakeling: Statue of the Minoan Snake Goddess (Default)

Re: Testing

[personal profile] snakeling 2011-11-21 05:27 pm (UTC)(link)
Well, you've got 3 fields for each link, so it's a matter of testing how it works depending on what's filled:

- all 3 fields
- text + URL
- title + URL
- text + title
- text only
- title only
- URL only

Also, what happens if you put a URL in the title field? Text in the URL field? What happens if people use the URL to a picture? HTML in the title or text field?

Remember, when testing, you need to test both what you implemented, and what already existed, to make sure you didn't break it ;)

Good luck!
snakeling: Statue of the Minoan Snake Goddess (Default)

[personal profile] snakeling 2011-11-21 05:35 pm (UTC)(link)
Still working on my script to post Pinboard bookmarks to Dreamwidth. (And much thanks to both you and [personal profile] foxfirefey for your answers last time. I completely forgot to get back at you, my bad entirely. I'll try to be better this time :) )

I'm stuck on, I think, a fairly easy question, that I nevertheless can't find an answer to.

To use the Dreamwidth API (and the Pinboard one), I need the user's password. My script is PHP, and I tell people installing it to do so outside of the public folders, to reduce problems, but even though, I'm not particularly happy at having to store the password, not even encrypted, in the script. Everything I can find about storing passwords securely is about sites that ask you to login, but I do the opposite: I send the password outside. (Unless I'm a dunce and there is a totally different solution I didn't think of.)

I need to store the script on a web server, because the point is for it to run automatically without human input.

Anyone has the beginning of a solution for me?
denise: Image: Me, facing away from camera, on top of the Castel Sant'Angelo in Rome (Default)

[staff profile] denise 2011-11-21 06:39 pm (UTC)(link)
also, I should add, we have plans to implement OAuth, which will let you authorize an external service to have access to your account, etc. Someday!

Would it work to store the login cookies, instead of the passwords?
snakeling: Statue of the Minoan Snake Goddess (Default)

[personal profile] snakeling 2011-11-21 07:27 pm (UTC)(link)
Would it work to store the login cookies, instead of the passwords?
I have no idea! XD I'm using the script as a learning process actually, and I'm making it up as I go along, probably reinventing the wheel a couple of times.

I'm going to keep your suggestion in mind for when I have time to tackle the documentation. Thanks!
snakeling: Statue of the Minoan Snake Goddess (Default)

[personal profile] snakeling 2011-11-21 07:29 pm (UTC)(link)
outside the Apache document tree (which may be what you mean by "outside the public folders)
That's indeed what I meant.

you should make sure that the server operator enforces separation between customers
Mine does, and so does the host I recommend, but I'll have to add this to the requirements, then.

Thanks!
denise: Image: Me, facing away from camera, on top of the Castel Sant'Angelo in Rome (Default)

[staff profile] denise 2011-11-21 07:30 pm (UTC)(link)
Reinventing the wheel occasionally leads to advances in wheel technology, so go for it. *g*
exor674: Computer Science is my girlfriend (Default)

[personal profile] exor674 2011-11-21 07:33 pm (UTC)(link)
If you can bribe someone to help me with the user facing bits... >_> ( also uh, there should totally be a bug for OAuth stuffsies )
denise: Image: Me, facing away from camera, on top of the Castel Sant'Angelo in Rome (Default)

[staff profile] denise 2011-11-21 07:39 pm (UTC)(link)
huh, I thought there was a bug for it. if not, open one!

And hey, if you open the bug, make it needs-design and lay out what the user-facing bits need to do/be/say/etc.
sophie: A cartoon-like representation of a girl standing on a hill, with brown hair, blue eyes, a flowery top, and blue skirt. ☀ (Default)

[personal profile] sophie 2011-11-21 08:18 pm (UTC)(link)
I could use a project to work on, and I know something about OAuth - I've interacted with Twitter's OAuth implementation as a dev, and implemented the client-side bits of it from scratch with no library (which I did so that I knew how it worked; for anything other than local tools, I'd obviously use a library), so... I'm willing to help!

[edit: Which is to say, I implemented it without an OAuth-specific library. I used libraries for URI escaping, URI parsing, HMAC-SHA1 encoding and base64 encoding.]
Edited 2011-11-21 20:24 (UTC)
chagrined: Marvel comics: zombie!Spider-Man, holding playing cards, saying "Brains?" (brains?)

[personal profile] chagrined 2011-11-22 02:16 pm (UTC)(link)
I am only newly poking at the DW code and am new to most of this. I don't have enough understanding yet to ask interesting questions. But here is an uninteresting question I have about something!

In cgi-bin/bml/scheme/global.look, this is line 171:
GRIN=>{S}<grin>

Does that actually serve a purpose somewhere? It seems like all <?GRIN?> would do if used in a BML document is cause <grin> to print, which then wouldn't show up to the user, but wouldn't do anything else either. Is this just a silly programming easter egg of some kind, or does this actually do something I'm not seeing? (I also did a rgrep and couldn't find <?GRIN?> occurring anywhere.) eta: Oh, wait. I'm realizing now it'd make &lt;grin&gt; print, not <grin>. So the user would indeed see <grin>, I guess?
Edited 2011-11-22 14:21 (UTC)
chagrined: Marvel comics: zombie!Spider-Man, holding playing cards, saying "Brains?" (brains?)

[personal profile] chagrined 2011-11-22 03:49 pm (UTC)(link)
Hum. Well if it's super old maybe long ago in LJ code it did serve a purpose, but now doesn't? Like idk maybe Brad had <grin> print out on some pages? That seems kind of silly. ;p

Also, it is very useful to know that about the case! I think I first searched for it in all-uppercase and then did a search with that "-i" non-case-sensitive option also just to be sure. :)
alierak: (Default)

[personal profile] alierak 2011-12-02 06:00 pm (UTC)(link)
I would guess it predates LJ and is derived from something like IRC or Usenet slang. It would have been common at one time for people to type <grin> or <G> in a non-HTML chat environment, and they probably tried to do the same thing in early LJ comments. Unfortunately this theory is completely non-Googleable, so you'd probably have to find some ancient crusty netizens to ask about it.
chagrined: Marvel comics: zombie!Spider-Man, holding playing cards, saying "Brains?" (brains?)

[personal profile] chagrined 2011-12-03 08:13 pm (UTC)(link)
Another question! I am poking at MoodThemeChooser.pm (and other things) in an attempt to change out places where tables were used for layout purposes, to use CSS positioning instead. In MoodThemeChooser.pm there is this variable $moodtheme_extra which takes its value somehow from the hook mood_theme_extra_content? And then another variable $show_special which is set based on that? (I am still just trying to figure out Perl, lol.) ANYWAY. I cannot figure out where mood_theme_extra_content comes from or what it is supposed to signify. I read the wiki page on hooks and the old LJ documentation on them but I'm still confused. And I did an rgrep search but couldn't find mood_theme_extra_content anywhere else. It's making me scratch my head, b/c I can't figure out how I should change the CSS version of the layout in relation to this element.

As far as I can tell, with the table, what it changes is that if $moodtheme_extra is false, then all the example "mood theme" images/descriptions (which are contained in <td> elements) are in ONE row. If $moodtheme_extra is true, then after every 2nd image it inserts a new <tr>. But not knowing what the heck mood_theme_extra_content is, I don't know why it's doing that or whether I should also do that. I wasn't sure also if maybe this is related to the width of the table, b/c I just told my CSS positioning to size the width of that element automatically, but ...if mood_theme_extra_content is related to mood themes that are extra super wide or something, maybe that is why it happened? (I'm positioning those elements with float:left so I could just add in a clear:left probably to the same effect.) (eta: or set a maximum width to the containing element to eliminate the need for this workaround?)

Anyway, confusion. I figure also for testing purposes it's important to know what that hook means so I can test the two different cases. On that end, also, I guess I have another question. How do I make a user account in my dreamhack a "paid account" so I can test paid features? Maybe there is an obvious answer to this somewhere but I couldn't find it on the wiki.
Edited 2011-12-03 20:16 (UTC)
chagrined: Marvel comics: zombie!Spider-Man, holding playing cards, saying "Brains?" (brains?)

[personal profile] chagrined 2011-12-03 08:24 pm (UTC)(link)
That makes sense! Hmmm, although I wonder how one could use that from a user's end. Maybe earlier LJ comments didn't parse HTML in entries/comments like they do now? (Heh, I just tested to see if posting or commenting <?GRIN?> now would do anything, but ...nope, alas.) XD
denise: Image: Me, facing away from camera, on top of the Castel Sant'Angelo in Rome (Default)

[staff profile] denise 2011-12-03 10:31 pm (UTC)(link)
For the paid account: go to /admin/priv while logged into the system account or someone with admin:*, give yourself the 'payments' priv, then go to /admin/pay and enter the username of the account you want to upgrade. the subsequent bits should be self-explanatory *G*

meanwhile, without looking into it too closely, i'm going to guess that mood_theme_extra_content is almost certainly some ljcom hook (the non-free lj code), and therefore we don't have it -- most (though not all) of the hooks defined in the code are. To look for where in the code it's referenced, you'd do:

rgrep -i mood_theme_extra_content $LJHOME/cvs/dw-free/* | more
rgrep -i mood_theme_extra_content $LJHOME/cvs/dw-nonfree/* | more

Since neither returns any results except the bit in the widget, it's pretty certain that it was a ljcom-specific hook (and now i'm curious; i looked it up (don't worry, you aren't supposed to know where to find it, I just happened to) and it looks like it has to do with sponsored mood themes, which we don't have. (There are a lot of hooks scattered around the code that LJ used to pull in ljcom-specific things like that -- some of them we've repurposed for other dw-nonfree things that are useful, some of them we just ignore.) So you can safely ignore it.
chagrined: Marvel comics: zombie!Spider-Man, holding playing cards, saying "Brains?" (brains?)

[personal profile] chagrined 2011-12-03 10:49 pm (UTC)(link)
Yeah, I did
    rgrep -i mood_theme_extra_content * > whatevertempfilename
while in the parent directory of my dreamhack, and those were the only places where it showed up.

What categorizes "ljcom" things? Are they all related to sponsored things, or are they code bits that are not open source or something? I wasn't really positive why the Mercurial repositories have both the "dw-free" and "dw-nonfree" branches (but the live directory doesn't?).

Since DW has no sponsored mood themes, in working on editing that module to use CSS positioning should I also edit it to not take that hook+corresponding variables into account? Rather than having lines of code that serve no purpose / do nothing? Or comment them out or something?

Also there were some hooks I was unfamiliar with also when I was poking at S2PropGroup.pm (which I've taken a break from to work on others instead). I don't remember them off the top of my head, but, it looks like that thing you linked to might be a good place to look up some of them. If there are some that don't appear to be registered anywhere in the DW build that I have, but I find them on that site, is it usually the case that they are ljcom things that are not in use? Should I double check any time I find one like that before assuming that it doesn't serve a purpose?

P.S. Thanks, it was causing me immense aggravation not being able to find that thing anywhere, ha.
Edited 2011-12-03 22:50 (UTC)
denise: Image: Me, facing away from camera, on top of the Castel Sant'Angelo in Rome (Default)

[staff profile] denise 2011-12-03 11:08 pm (UTC)(link)
It's ... complicated! Basically, any time there's anything that makes assumptions about account structure, or references specific communities on LJ that might not exist on other sites, or assumes things that might not exist elsewhere, it's generally done with a hook. (For a good example of where hooks are used on DW for those reasons, check out htdocs/community/index.bml in dw-free and cgi-bin/DW/Hooks/Community.pm in dw-nonfree: "oh crap! I need to use DW-specific comms in the code!")

In general, if you see a hook being called in the code but you can't find any place where the hook is actually defined, it's almost certainly a ljcom hook. You can check for it in the ljcom code, but you can't copy or use that code.

(ljcom is the LJ equivalent of dw-nonfree: it is source-available (for comparison) but not Open Source and other sites can't use it. livejournal is the LJ equivalent of dw-free, which is freely usable anywhere. When we forked from LJ, we were only legally permitted to use things in the livejournal repository, not livejournal + ljcom the way livejournal.com uses, which is one reason why there are features on livejournal.com that we don't have.)

In this case, yeah, I'd just go ahead and remove that hook call in the mood theme widget if you're working there, since there's no reason to have it other than for something we don't use. If someone needs a hook there again in the future, they can make a new one.
chagrined: Marvel comics: zombie!Spider-Man, holding playing cards, saying "Brains?" (brains?)

[personal profile] chagrined 2011-12-03 11:35 pm (UTC)(link)
Thanks for the explanation! It is especially useful b/c I had read the wiki page on hooks as well as the old LJ documentation on hooks, and I'd looked in places like cgi-bin/DW/Hooks to try to find where some of them were defined and was really frustrated when I couldn't find them anywhere. (lol, I did rgrep first and then when I couldn't find them was like, "BUT THE WIKI SAYS THAT HOOKS ARE DEFINED SOMEWHERE, THEY HAVE TO BE DEFINED SOMEWHERE!!!! AHHHHHHHHHHHHHH" *commence useless manual searching of file structure even tho I already confirmed it wasn't there with my rgrep search*)

I am curious: why is some of the DW code open source but the stuff in dw-nonfree isn't?
denise: Image: Me, facing away from camera, on top of the Castel Sant'Angelo in Rome (Default)

[staff profile] denise 2011-12-04 12:00 am (UTC)(link)
The stuff that's in dw-nonfree is basically the stuff that either a) we cannot legally redistribute (stuff where the licensing says that we can use it, we just can't redistribute it, and putting it in dw-free for other people to use is redistributing) or b) stuff that is part of our unique branding (the Tropospherical Red/Purple site schemes, our logos, etc). There's also some stuff in there that refers to DW-specific setup: the suggestions generator (posts to a specific DW comm that might not exist on other sites), some places on the site where we refer to DW specific comms (like the hook I mentioned earlier), some bits of our account structure (although most of the paid vs premium paid division is very "baked in" to the code, we do make at least a token effort to assume that other sites might have other account structures) -- stuff like that.
chagrined: Marvel comics: zombie!Spider-Man, holding playing cards, saying "Brains?" (brains?)

[personal profile] chagrined 2011-12-04 12:03 am (UTC)(link)
Thanks again for more explanation! :)
denise: Image: Me, facing away from camera, on top of the Castel Sant'Angelo in Rome (Default)

[staff profile] denise 2011-12-04 12:07 am (UTC)(link)
Anytime! No question too big, no question too small.

Page 1 of 3