X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=irc%2Flog;h=034c228240a7f47d8f57e192bb6e8d6fcb056ac0;hb=c931502bda5042411d5757294e3a1ef8df638c44;hp=37447794a347096e0cc4966a4b12380628e16ff1;hpb=b56a581ed4a5c0152192e3086403177e3a771f45;p=matches%2FMCTX3420.git diff --git a/irc/log b/irc/log index 3744779..034c228 100644 --- a/irc/log +++ b/irc/log @@ -4667,3 +4667,264 @@ 18:37 -!- MctxBot [~twang@106-68-47-96.dyn.iinet.net.au] has joined #mctxuwa_softdev 18:45 < jtanx> now to watch this week's lecture... 21:31 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"] +--- Day changed Thu Oct 10 2013 +08:11 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has joined #mctxuwa_softdev +09:40 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"] +13:30 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has joined #mctxuwa_softdev +23:04 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"] +--- Day changed Fri Oct 11 2013 +08:21 -!- Rowan [~Rowan@130.95.129.225] has joined #mctxuwa_softdev +08:42 -!- Rowan [~Rowan@130.95.129.225] has quit [EOF From client] +09:19 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has joined #mctxuwa_softdev +09:59 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"] +15:09 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has joined #mctxuwa_softdev +15:10 < jtanx> urgh +15:10 < jtanx> burning the midnight oil trying to get my cits2232 project done +15:10 < jtanx> but +15:10 < jtanx> it has taught me a lot about django +15:10 < jtanx> which may be of use, especially for the whole admin stuff +15:11 < jtanx> one possibility is that we have two separate 'logins' +15:11 < jtanx> one gains you access to the site +15:11 < jtanx> one gains control over the bbb (eg the server api) +15:12 < jtanx> what you could do is keep the 'bind' functionality for the api, but make it check against the django user database for credentials +15:12 < jtanx> I'll look into it, if not today then probably tomorrow +19:39 < sam_moore> That sounds good +19:48 < sam_moore> Should we do something like this: http://stackoverflow.com/questions/8988855/include-another-html-file-in-a-html-file (The accepted answer) to do with our sidebar/menu stuff +19:48 < sam_moore> Although... +19:48 < jtanx> well +19:48 < jtanx> if we use django it has really cool templating stuff +19:48 < sam_moore> That solution is actually about as much as just copy/pasting the sidebar at the moment +19:48 < jtanx> yeah +19:49 < sam_moore> So Django does parts of our GUI as well as the user management system? +19:49 < jtanx> Well yeah +19:49 < jtanx> so django would be ui mostly +19:49 < jtanx> then tack on to that our api +19:49 < jtanx> which remains exactly the same +19:49 < jtanx> except that it uses the django database for checking authorizaiton +19:50 < jtanx> so right before you commence an experiment, you try to 'gain control' of the bbb, you resupply your login creds +19:50 < sam_moore> Sure, that's a good solution, I thought django would just do user management though (rather than replace the JavaScript GUI) +19:50 < jtanx> well if you do use django +19:50 < jtanx> it's a good idea to change some of it, because of the templating system +19:51 < jtanx> and that it can conditionally show content +19:51 < sam_moore> Ok +19:51 < jtanx> some of the javascript stuff will stay though, definitely +19:51 < jtanx> especially all the live update stuff +19:51 < jtanx> but this is getting ahead of myself, because i'm not even sure if this will work +19:51 < sam_moore> Hahaha +19:52 < sam_moore> You're entering a territory where I can't help much +19:52 < jtanx> yeah, well all of this 'web development' is new area for me too :P +19:52 < jtanx> I'm supposed to be majoring in computation, not web tech... +19:52 < sam_moore> You know more/better jQuery than me +19:52 < jtanx> jquery is pretty easy to learn though +19:53 < jtanx> i picked it up completely from this project +19:53 < sam_moore> Well, that's one reason why we went with it, since I used it briefly for something and it wasn't too hard, and James said he'd used it before too +19:54 < jtanx> Yeah +19:54 < sam_moore> If you want to replace stuff with django, I'm ok with that, if it's simpler +19:55 < jtanx> I'll see how it goes, hopefully it shouldn't be too hard to setup +19:55 < sam_moore> It just seems silly to copy/paste this Navigation Menu into every file +19:55 < jtanx> yep +19:55 < sam_moore> But copy/pasting the code (stack overflow) to automatically make it is also annoying +19:55 < jtanx> We can roll with the jquery soln if I don't get this working +19:56 < sam_moore> Unless you could include that in the "runBeforeLoad()" ? +19:56 < jtanx> can't you just have a placeholder +19:56 < jtanx> and on document load, you load it? +19:56 < sam_moore> Yeah +19:56 < jtanx> It'll look a bit crap because you'll see it before the sidebar loads +19:56 < sam_moore> Actually that's how you're doing other things +19:56 < jtanx> yeah +19:56 < sam_moore> But the navigation menu is hard coded html +19:56 < sam_moore> I'm just reading the existing code :P +19:56 < jtanx> haha +19:57 < jtanx> yeah it's hardcoded - it's the easiest solution +19:57 < jtanx> I've got my case study for 2402 this/next week too +19:57 < sam_moore> Um... I think it's fairly easy to call load from a file +19:57 < sam_moore> I'll look into that +19:57 < jtanx> ok +19:58 < sam_moore> The case study was reasonable, although he wanted a lot more detail from us +19:58 < jtanx> what did you do? +19:58 < sam_moore> Despite struggling to cram it into 4 pages +19:58 < sam_moore> The pencil +19:58 < sam_moore> That's a good one +19:58 < jtanx> ah +19:58 < sam_moore> Lots of youtube videos +19:58 < jtanx> we're doing pet bottles +19:58 < jtanx> there's this megafactories one on the coke plant which was prettyc ool +19:58 < jtanx> but yeah the pencil one also has a lot +19:58 < jtanx> i think i saw the how its made one +19:59 < jtanx> Ha +19:59 < jtanx> http://wiki.nginx.org/HttpSsiModule +19:59 < jtanx> if you want to get server specific +19:59 < jtanx> you can do ssi +19:59 < jtanx> let's not do that if possible :P +20:00 < sam_moore> Wait... +20:00 < sam_moore> It looks like you put html comments and they get sent to the server? +20:00 < sam_moore> How is that a thing? +20:00 < jtanx> +20:00 < jtanx> nah what happens +20:00 < jtanx> is the server reads the html file +20:00 < jtanx> and where there's special placeholders +20:00 < jtanx> it does stuff +20:00 < sam_moore> Ah +20:01 < sam_moore> No, do it client side +20:01 < jtanx> yeah +20:01 < sam_moore> There's like jQuery.load +20:01 < sam_moore> I'd probably keep django for user auth to start with +20:01 < sam_moore> But I think jQuery should be sufficient for the GUI +20:02 < jtanx> I think if you roll with django +20:02 < jtanx> you should use jQuery for all the interactive stuff +20:02 < jtanx> (which you'd have to anyway) +20:02 < jtanx> but you should use the templating system that django's got +20:03 < sam_moore> Ok, what does django give you exactly then, I'm not quite sure what the "template" stuff is, I assume it's nothing like a C++ template +20:03 < jtanx> OK +20:03 < jtanx> hmm +20:03 < jtanx> I'll give you access to my cits2232 repo temporarily +20:03 < jtanx> so you can see +20:03 < sam_moore> If it lets you easily include bits of html that's cool, but jQuery looks to be able to do that easily as well +20:03 < sam_moore> Alright +20:04 < jtanx> actually you know what +20:04 < jtanx> i'll just post it on pastebin or something +20:05 < jtanx> http://privatepaste.com/ec22ba7238 +20:05 < jtanx> That's the base template +20:05 < jtanx> http://privatepaste.com/07499e4a19 +20:05 < jtanx> That's the index +20:05 < jtanx> {{variable_name}} will display a variable name +20:05 < jtanx> sorry, the contents of that variable +20:06 < jtanx> {% %} blocks are for control +20:06 < sam_moore> Hmm +20:07 < jtanx> the base template got a bit out of hand for that project +20:07 < sam_moore> Well, if you want to use something like that I'm ok with it +20:07 < sam_moore> Although I think the thing that I was originally complaining about can be solved in jQuery :P +20:08 < jtanx> yeah +20:08 < sam_moore> But you should probably ask everyone else involved with the GUI for input too +20:08 < jtanx> Yeah, good point +20:09 < sam_moore> ... Really I didn't want to be involved with the GUI, but I kind of need to mess around with at least some basic graph stuff to work out if I need to change the server sensors/actuators api +20:09 < jtanx> well let's just say that i did not envision doing the gui either +20:09 < sam_moore> I'll try and keep what I do consistent with the overall style though +20:09 < sam_moore> Which is how I got sidetracked complaining about copy/pasting things :P +20:10 < sam_moore> I think the GUI we have so far is pretty good +20:10 < jtanx> hehehe +20:10 < jtanx> yeah it's not too bad +20:11 < jtanx> the only thing that I wouldn't know how to do is that admin stuff +20:11 < sam_moore> user admin or experiment admin? +20:11 < jtanx> um +20:11 < jtanx> I dunno, whatever that 'admin' functionality needs to be +20:11 < jtanx> like 'access the full logs' +20:11 < sam_moore> Oh, right +20:12 < jtanx> unless you start implementing permissions in the api +20:12 < sam_moore> Hmm, we might have to +20:13 < sam_moore> It should just be an enum for the user type that gets returned/set by the authentication handler and checked for certain operations +20:13 < sam_moore> But as you mentioned the other day, you don't want someone to be able to login after someone else has started an experiment and cancel it +20:13 < sam_moore> Actually +20:13 < sam_moore> Do you? +20:13 < jtanx> admin only? +20:13 < sam_moore> Exactly +20:14 < jtanx> how difficult is that to do though +20:14 < sam_moore> Store the username of who owns the current experiment +20:14 < sam_moore> Store an enum of the user type of whoever is currently logged in +20:14 < sam_moore> If someone tries to stop the experiment, unless their username matches, or they are an admin, refuse +20:14 < sam_moore> There could be a safety issue there? +20:15 < jtanx> the only thing is +20:15 < sam_moore> If someone needs to stop the experiment but isn't an admin? +20:15 < jtanx> everything's based off the control key +20:15 < sam_moore> Meh... add another cookie +20:15 < sam_moore> ... That escalated quickly +20:15 < jtanx> you've already used the nameless cookie +20:15 < jtanx> if you add another cookie +20:15 < jtanx> you have to do string parsing +20:15 < jtanx> and have named cookies +20:16 < sam_moore> Hmmm +20:16 < sam_moore> "Beyond the scope of the project" ? +20:16 < jtanx> i think the format was +20:16 < jtanx> key=value; key=value2 +20:16 < jtanx> yeah, beyond the scope :P +20:16 < sam_moore> Yeah, that is ever so annoying +20:16 < jtanx> let's leave it for now +20:16 < jtanx> come back to it +20:16 < sam_moore> Because if it were something like "key=value&key=value2" you could potentially reuse the FCGI parser +20:17 < jtanx> yeah +20:17 < jtanx> you could modify it +20:17 < sam_moore> That would be the way to go +20:17 < jtanx> generalise it +20:17 < sam_moore> But it's low priority now +20:17 < jtanx> yep +20:17 < jtanx> wow i'm getting seriously sidetracked +20:18 < jtanx> this mechatronics project is more interesting than any of my other projects though +20:18 < sam_moore> Haha +20:19 < sam_moore> I know what you mean +20:19 < sam_moore> I want to compile a RT linux kernel on my laptop (since they have x86 versions) +20:19 < sam_moore> So that I can look at how much the consistency in sample rate could theoretically improve... +20:20 < sam_moore> If someone managed to port the RT linux kernel to the BeagleBone +20:20 < jtanx> RT linux on your computer +20:20 < jtanx> isn't that generally bad +20:20 < jtanx> because RT screws up other stuff +20:21 < sam_moore> Like what? +20:21 < jtanx> decreased performance to meet the deadlines +20:21 < sam_moore> Also, I don't have to permanently replace my existing kernel, just add another bootloader entry +20:22 < sam_moore> If it screws up nginx that would be annoying though +20:23 < jtanx> while you're at it, try running the bfs scheduler instead of the cfs scheduler :P +20:23 < sam_moore> Maybe +20:42 < sam_moore> Ok, the solution to the copy/paste is just something like $("#sidebar").load("static/sidebar.html") +20:42 < sam_moore> However, whilst running this in the document.ready function on a test page works, running it in index.html appears to have no effect +20:43 < sam_moore> Oh +20:43 < sam_moore> I know why +20:43 < sam_moore> Because runBeforeLoad is failing +20:43 < sam_moore> Presumably you still want to load content like the navigation bar even if the server isn't running +20:44 < sam_moore> So... there is ".done()" and ".fail()" ... is there ".either()"? +20:46 < sam_moore> Ahahaha +20:47 < sam_moore> Of course, there is ".always()" +20:49 < sam_moore> Hmm, I wouldn't want to design any sort of large system with a language like this, but it is an interesting style +20:51 < jtanx> haha +20:52 < sam_moore> So, a lot of the header stuff can be moved into .html files and just jQuery.loaded, which should make things cleaner +20:52 < sam_moore> I will refrain from doing that now though +20:53 < jtanx> don't be too tempted to do a lot of templating with javascript +20:53 < jtanx> because it will load asynchronously, stuff will look weird +20:53 < jtanx> and if the js breaks +20:53 < jtanx> well, your page is more screwed than before +20:54 < sam_moore> Ok... but you could still potentially have at least one html file in the static directory +20:54 < sam_moore> With all the header and navigation stuff +20:55 < sam_moore> Just have a .fail() function! +20:55 < sam_moore> That's what it's for, right :P +20:56 < sam_moore> $("#thing").load("static/thing.html").fail($("#thing").html("

Something fucked up

") +20:56 < sam_moore> Oh dear +20:58 < jtanx> ~.~ +20:58 < jtanx> django here: https://mctx.us.to:8043/databases +20:58 < jtanx> login with testuser:testuser +20:58 < jtanx> ignore that it looks a lot like our gui +20:58 < jtanx> except it doesnt work anymore +21:00 < sam_moore> Well, django's used for UCC for member administration +21:01 < sam_moore> Except it's entirely seperate from LDAP which we use for authentication +21:01 < sam_moore> Except it's not really because it binds to LDAP for authentication :S +21:01 < sam_moore> Wheels within wheels... +21:02 < jtanx> ookay +21:04 < sam_moore> You need LDAP for shell access +21:04 < sam_moore> In fact... +21:04 < sam_moore> We could potentially give pheme users shell access to the BeagleBone +21:04 < sam_moore> But there's not really any point +21:04 < jtanx> is that a good idea +21:05 < sam_moore> No +21:05 < sam_moore> It's an awful idea +21:05 < sam_moore> Just saying it's possible :P +21:06 < sam_moore> Someone could do this: :(){ :|:& };: +21:06 < sam_moore> And break the entire thing +21:08 < jtanx> is that the fork bomb +21:09 < jtanx> ok the site works now +21:09 < jtanx> sort of +21:10 < sam_moore> 400 Bad Request +21:10 < jtanx> hurr +21:10 < sam_moore> I think iceweasel is being dumb and ignoring https:// ? +21:10 < sam_moore> Although it was fine before +21:11 < jtanx> nah probably screwed up the nginx config +21:11 < sam_moore> No, it works, I just had to type the https:// instead of copy paste +21:11 < sam_moore> Wierd +21:11 < sam_moore> The test login doesn't work though +21:11 < jtanx> testuser doesn't work for some reason +21:11 < jtanx> yeah just register +21:12 < sam_moore> Will it actually send an email? +21:12 < jtanx> urgh +21:12 < jtanx> no +21:12 < sam_moore> haha +21:12 < jtanx> okay no the config is still broken +21:16 < sam_moore> I'll have to come back to this tomorrow +21:16 < sam_moore> Bye +21:17 < jtanx> ok bye +23:09 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]