|
Thread Rules 1. This is not a "do my homework for me" thread. If you have specific questions, ask, but don't post an assignment or homework problem and expect an exact solution. 2. No recruiting for your cockamamie projects (you won't replace facebook with 3 dudes you found on the internet and $20) 3. If you can't articulate why a language is bad, don't start slinging shit about it. Just remember that nothing is worse than making CSS IE6 compatible. 4. Use [code] tags to format code blocks. |
On January 06 2016 10:29 aksfjh wrote:Show nested quote +On January 06 2016 05:19 Morfildur wrote:On January 06 2016 03:24 Manit0u wrote: $response = json_decode(json_encode($this->curl->response), true);
Why?! T_T It's actually not too uncommon. It's a quick way to turn an object tree into an array. It's not exceptionally fast and it really should be in some properly named function somewhere, but the code in itself isn't bad. Depends on your definition of "bad." It works, but I know some devs that would skewer you for that.
Holy crap. You guys just enlightened me. When I first saw it I was like "why would you encode stuff that you're about to decode instead of just leaving it as it is". Then you two answered and it dawned on me.
I have to agree that even if it works it's still really bad because it's not obvious/explicit enough to tell a person who hasn't seen it before what's actually going on.
Edit: I guess that's one of the places where actual comments would help a lot...
|
On January 06 2016 10:42 Manit0u wrote:Show nested quote +On January 06 2016 10:29 aksfjh wrote:On January 06 2016 05:19 Morfildur wrote:On January 06 2016 03:24 Manit0u wrote: $response = json_decode(json_encode($this->curl->response), true);
Why?! T_T It's actually not too uncommon. It's a quick way to turn an object tree into an array. It's not exceptionally fast and it really should be in some properly named function somewhere, but the code in itself isn't bad. Depends on your definition of "bad." It works, but I know some devs that would skewer you for that. Holy crap. You guys just enlightened me. When I first saw it I was like "why would you encode stuff that you're about to decode instead of just leaving it as it is". Then you two answered and it dawned on me. I have to agree that even if it works it's still really bad because it's not obvious/explicit enough to tell a person who hasn't seen it before what's actually going on. Edit: I guess that's one of the places where actual comments would help a lot... Don't know about PHP but I've seen this done in Javascript to implement a deep copy function as well. It's incredibly straightforward, and I honestly really like it. There are a few pitfalls but it works pretty well for a large number of situations. http://stackoverflow.com/questions/122102/what-is-the-most-efficient-way-to-clone-an-object
|
On January 06 2016 10:42 Manit0u wrote:Show nested quote +On January 06 2016 10:29 aksfjh wrote:On January 06 2016 05:19 Morfildur wrote:On January 06 2016 03:24 Manit0u wrote: $response = json_decode(json_encode($this->curl->response), true);
Why?! T_T It's actually not too uncommon. It's a quick way to turn an object tree into an array. It's not exceptionally fast and it really should be in some properly named function somewhere, but the code in itself isn't bad. Depends on your definition of "bad." It works, but I know some devs that would skewer you for that. Holy crap. You guys just enlightened me. When I first saw it I was like "why would you encode stuff that you're about to decode instead of just leaving it as it is". Then you two answered and it dawned on me. I have to agree that even if it works it's still really bad because it's not obvious/explicit enough to tell a person who hasn't seen it before what's actually going on. Edit: I guess that's one of the places where actual comments would help a lot... It definitely should be wrapped into a function. That way you can use it without needing to understand. When it's encapsulated properly, it doesn't look so bad (unless there is an obvious equivalent, shorter and more straightforward implementation).
|
|
Didn't know that. I only read paper books. I need this tactile feeling and e-books somehow don't work for me (my Kindle lies on the shelf not being used for several years). Also, by buying the book I support the author and I don't mind buying good books
|
|
Has anyone used matlab? I'm currently translating some code from matlab and I find it very hard to understand what is what because data types aren't declared. That, and the language is new to me. I'm used to C style syntax. Any advice?
|
Hyrule18969 Posts
you have 2 options with matlab: 1. be an expert 2. flounder blindly until you get the results you want
I've never met anyone who was "ok" or "decent" at matlab
|
okay, I have a legit question about this TDD book I was recommended.
I am in a section where I am running this test:
def test_home_page_returns_correct_html(self): request = HttpRequest() request.method = 'POST' request.POST['item_text'] = 'A new list item' response = home_page(request) self.assertIn('A new list item', response.content.decode()) expected_html = render_to_string( 'home.html', {'new_item_text': 'A new list item'} ) print(expected_html) print(response.content.decode()) self.assertEqual(response.content.decode(), expected_html)
I added the two print statements to see why I was getting a different error than what is in the book.
The error that he gets in the book is:
ERROR: test_home_page_returns_correct_html (lists.tests.HomePageTest) [...] 'new_item_text': request.POST['item_text'], KeyError: 'item_text'
I get a much different error, basically saying that the actual html and the decoded content don't match
and after printing them, the reason is because the actual html has
<input type='hidden' name='csrfmiddlewaretoken' value='dZrKJSMg5KzxomI3LCeFArGXoW991SgX' />
in it. because of the {% csrf_token %}
But we are using POST, which means afaik I *have* to have the csrf token in order to use my view at all. Furthermore, he specifically had me write the csrf token in.
But then that leads me to the question - why isn't he having this problem?? Or more importantly, what can I do to make my expected_html match the actual html when there is a csrf token that, if my understanding is correct, will change every time i run it? lol
edit: it looks like its because im using django 1.9 and he uses 1.8. found a workaround. couldn't figure out how to do it myself lol
|
On January 07 2016 05:23 tofucake wrote: you have 2 options with matlab: 1. be an expert 2. flounder blindly until you get the results you want
I've never met anyone who was "ok" or "decent" at matlab I do the latter. I flounder similarly in R. Due to this, I do most of my data analysis in python, which requires far less floundering, and although its libraries are less powerful, it has most of the tools I need.
|
On January 07 2016 04:07 darkness wrote:Has anyone used matlab? I'm currently translating some code from matlab and I find it very hard to understand what is what because data types aren't declared. That, and the language is new to me. I'm used to C style syntax.  Any advice? Im pretty sure matlab has just one datatype, matrices.
|
Instead of addition they actually add 2 1x1 matrices. Honestly, I never could handle that language. It's always hard to switch over to another language where you don't even know how to do the most basic functions. It's not fun becoming a beginner again.
|
On January 07 2016 10:28 travis wrote:okay, I have a legit question about this TDD book I was recommended. I am in a section where I am running this test: def test_home_page_returns_correct_html(self): request = HttpRequest() request.method = 'POST' request.POST['item_text'] = 'A new list item' response = home_page(request) self.assertIn('A new list item', response.content.decode()) expected_html = render_to_string( 'home.html', {'new_item_text': 'A new list item'} ) print(expected_html) print(response.content.decode()) self.assertEqual(response.content.decode(), expected_html)
I added the two print statements to see why I was getting a different error than what is in the book. The error that he gets in the book is: Show nested quote + ERROR: test_home_page_returns_correct_html (lists.tests.HomePageTest) [...] 'new_item_text': request.POST['item_text'], KeyError: 'item_text'
I get a much different error, basically saying that the actual html and the decoded content don't match and after printing them, the reason is because the actual html has Show nested quote + <input type='hidden' name='csrfmiddlewaretoken' value='dZrKJSMg5KzxomI3LCeFArGXoW991SgX' />
in it. because of the {% csrf_token %} But we are using POST, which means afaik I *have* to have the csrf token in order to use my view at all. Furthermore, he specifically had me write the csrf token in. But then that leads me to the question - why isn't he having this problem?? Or more importantly, what can I do to make my expected_html match the actual html when there is a csrf token that, if my understanding is correct, will change every time i run it? lol edit: it looks like its because im using django 1.9 and he uses 1.8. found a workaround. couldn't figure out how to do it myself lol
You should be using the latest LTS version of the framework (and that's 1.8 for Django).
|
Edit: Nevermind. Stupid me. There were some values < 0 so floor returned seemingly higher numbers (they were converted to absolute values AFTER flooring).
|
I have a couple questions about the commonly seen "self" parameter in python
It seems to have the same purpose as "this" in java. except from what I read, self isn't actually a keyword, so it can be anything
so a couple questions I have - is this parameter required in all methods you write in python? is this parameter basically just saying "from now on this is how this method can refer to itself" and finally - why? why not just use "this" like in java?
|
On January 08 2016 05:50 travis wrote: I have a couple questions about the commonly seen "self" parameter in python
It seems to have the same purpose as "this" in java. except from what I read, self isn't actually a keyword, so it can be anything
so a couple questions I have - is this parameter required in all methods you write in python? is this parameter basically just saying "from now on this is how this method can refer to itself" and finally - why? why not just use "this" like in java?
http://stackoverflow.com/questions/2709821/what-is-the-purpose-of-self-in-python
|
I already read that. I think I get a grasp of how it works, for the most part. And why, for the most part. I just don't see the advantage of doing it this way instead of just having a keyword. It actually seems like it's making it more complicated instead of less, which is something I haven't seen in python so far.
Maybe this is a question I will need to ask myself in 6 months.
|
On January 08 2016 06:36 travis wrote: I already read that. I think I get a grasp of how it works, for the most part. And why, for the most part. I just don't see the advantage of doing it this way instead of just having a keyword. It actually seems like it's making it more complicated instead of less, which is something I haven't seen in python so far.
Maybe this is a question I will need to ask myself in 6 months. I think that the most important point is that it makes it explicit, so that methods are just normal functions attached to a class. Consider the example by Guido van Rossum (the creator of Python).
class C: def meth(self, arg): self.val = arg return self.val An equivalent way of writing the above is
# Define an empty class: class C: pass
# Define a global function: def meth(myself, arg): myself.val = arg return myself.val
# Poke the method into the class: C.meth = meth Source: http://neopythonic.blogspot.se/2008/10/why-explicit-self-has-to-stay.html
Then we have decorators, which modify functions. Because of the explicit self parameter, they work the same on methods.
# Decorator that prints all arguments passed to the wrapped function def printer(f): def wrapper(*args, **kwargs): print(args, kwargs) return f(*args, **kwargs) return wrapper
class A: @printer def method(self, x): self.y = x
@printer def function(x, y): return x + y
Which results in >>> a = A() >>> a.method(1) (<__main__.A object at 0x769d3dd0>, 1) {} >>> function(1, 2) (1, 2) {} 3
|
On January 08 2016 06:36 travis wrote: I already read that. I think I get a grasp of how it works, for the most part. And why, for the most part. I just don't see the advantage of doing it this way instead of just having a keyword. It actually seems like it's making it more complicated instead of less, which is something I haven't seen in python so far.
Maybe this is a question I will need to ask myself in 6 months.
You think this is complicated? PHP has both self and this. And in JavaScript you often see stuff like that:
var self = this;
Try figuring those out 
Edit: Not for the faint of heart: http://alistapart.com/article/getoutbindingsituations
|
On January 07 2016 04:07 darkness wrote:Has anyone used matlab? I'm currently translating some code from matlab and I find it very hard to understand what is what because data types aren't declared. That, and the language is new to me. I'm used to C style syntax.  Any advice?
Anything in particular you need to know about? Matlab is pretty frustrating to work with sometimes, but it's easy to get results quickly and everything is built in. It really depends on the scope of your project, but you should probably make functions for most things in separate files even if it's small. I've gotten burned pretty bad in the past with thinking "oh this is just going to be a small program, I don't need any functions..." then you end up adding and adding and adding... >_< It's really annoying that you can't have functions within the main file, but anyhow.
A couple pointers: - matrices are (row, column), there is no 0 index - Try to make the most use of the indexing A(:,:) (all rows and columns of A), or A(2:end, 3:end-1), ect. - Try to replace loops with indexing, much faster and easier, loops should be the last option imo, built in functions or index are the way to go - You can concatenate matrices B = [A(:,[1,2]), C(:,:)], (assuming similar dimensions of A and C) - concatenate by row B = [A([1,2],:) ; C] - "push-back": a = [a, b] - make use of google to find out functions, there are a ton of them
On January 07 2016 16:32 solidbebe wrote: Im pretty sure matlab has just one datatype, matrices.
Pretty much, and cells, which are the most annoying thing ever to work with.
|
|
|
|