|
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. |
Thanks for the reply. I have one question about this advice though. What should I practice on?
Try writing programs that make your own life easier. Now I'm in the middle of writing a prog that tracks which series/animes I have watched, provides some additional info and whatsoever.
I know there are sites that do this for you but once you get your own program working, you'll be very proud of yourself ^^
|
Hyrule18968 Posts
One thing you can do to practice is go find some FOSS project, get the code, and try to fix bugs in the bug tracker. Also, you can try to break it. Some companies (Google) will pay you if you find a bug [that nobody else has reported], so not only will you learn but you can make some money.
Before I started taking classes, I learned to program because I wanted to do something. So the very first thing I did was download VB6 and some random bot source (I think it was Feanor's Fyrebot or something, but I don't remember) and I started figuring out what everything did, how, and why. I learned so much.
|
i agree, but a particular internship is looking for unity
|
I wanna learn how to code on the server side. I'm already decent at C++, Java and Python on client side. So I figured I would learn how to code Java Servlets or maybe Python for server.
I'm a complete newbie to client/server, I have no idea what sockets are or how http requests work. I've been reading Google's GWT and App Engine basic tutorials but most of the stuff that mentions server code there are way over my head. When they start talking about configuring Apache I'm like "...wut?" So I spend more time reading the definitions of everything on wikipidia than actually doing the tutorials, it's pretty confusing.
If I google for tutorials most of the stuff I click seem to be way over my head as well. So does anyone have any tips to begin learning client/server communications via http using Java or Python?
|
Hyrule18968 Posts
You should probably just read up on HTTP itself. It's a fairly straightforward protocol, and it's text based so it's easy to understand what's what (unlike something like BNCS, for example).
|
What do you mean by client/server communications?
If you want to setup a communication between a client and a server that you have created, take a look at the Socket class in Java. If you google for sockets in Java you will find a lot of easy to follow tutorials on how to setup a simple distributed system. If you want add fault tolerance it gets a lot nasty and I think you wont be able to set a decent fault tolerant system without taking a course at the University.
If you want to create a (or an?) web service to feed client requests just look for Glassfish tutorials or google for "java web service tutorials". I am also lost when it comes to deploying web services because I've never done it before, but as far as I remember, at least on Netbeans, all you need to create a web service is to add the annotation @webservice to segments of your code and voilá, you have your web service.
I see that you are a countryman fella, so take a look at www.guj.com.br they probably can help you in our native language.
|
I wanna make webapps. I wanna make a website that makes queries to the server then write the server code which would respond to that. Like handling user database and stuff like that. Java web services is probably what I'm looking for, but most tutorials I find by googling are way over my head. All I know is that (or I think I know that) I need something like Apache to make a computer understand http. But I'm not sure how does Java or Python fits into that or how to install it or how to start learning about any of it.
I have a paid host computer with apache which says it supports Python but not Java. And I have no idea why. So right now I'm trying to install apache with java on a virtual machine with ubuntu on my home computer. Just to see how stuff works. But I'm kinda lost here.
Anyway I'll take a look at that website. Thanks a lot 
Edit: btw to run Java Servlets on the server. Do I need to install Apache Web Server, Apache Tomcat, or both, or neither?
|
I am a second year electrical engineer with knowledge in C and java. Although I can offer general programming help as well.
|
I am a second year Computer Science major and i'd like to ask for some help on checking on my homework, my professor on Data Structures asked us to make an algorithm on how you can insert data at the end of a given list, middle of the list and at the beginning. Here's my algo: + Show Spoiler + End of the list: while (list[i] is not null) do i++ end do list[i] = data
Beginning of the list: while (list[i] is not null) do i++ end do while (i is not zero) do list[i+1] = list[i] i-- end do list[i] = data
Middle of the list: while (list[i] is not null) do i++ end do while (i is not i/2) do list[i+1] = list[i] i-- end do list[i] = data
Is this correct? I'd like to improve on it as well but that's all i've got. Thanks a lot
|
On November 11 2010 20:40 icystorage wrote:+ Show Spoiler + End of the list: while (list[i] is not null) do i++ end do list[i] = data
Beginning of the list: while (list[i] is not null) do i++ end do while (i is not zero) do list[i+1] = list[i] i-- end do list[i] = data
Middle of the list: while (list[i] is not null) do i++ end do while (i is not i/2) do list[i+1] = list[i] i-- end do list[i] = data
Is this correct? I'd like to improve on it as well but that's all i've got. Thanks a lot 
For your beginning algorithm:
Assuming kinda pseudo code, allowed arrays of undefined length (so undefined length javascript arrays possibly), in this array there is no such thing as the terminating element \0 and cannot use an STL a better beginning algorithm is:
var prev = list[0]; var current; var i=1; //so we skip the first item. do while(list[i] is not null) current = list[i]; list[i] = prev; prev = current; i++; end do list[i]=current list[0] = newdata.
note: I also assume the array will at least have 2 elements (cbf error checking).
this will complete in 1 iteration of the array (while yours did 2 iterations forward, then backwards), so it is better performance wise, but not memory wise (as I use 2 temp variables which you wouldn't of). but the use of 2 more variables will be moot compared to the performance savings when you get to larger arrays.
Your middle of the array will not work either because of these 2 lines: while (i is not i/2) i-- your i variable would be changing constantly... so if you started at lets say 20 it would be like... 20 /2 = 10 i is at 20 is its fine... by the time it got to 10 it would be 10/2 = 5 i is at 10 so were fine. etc etc.
to make yours work you would need to do while (list[i] is not null) do i++ end do n = i/2 while (i > n) do list[i+1] = list[i] i-- end do list[i] = data
I changed your 2nd while to > because if you had a odd number array (lets say 11) and did n/2 you would get 5.5 (unless it went to all full numbers then it wouldn't matter) the loop would go on forever.
Hope this helps.
|
i have taken note on your corrections especially on my 'middle' algorithm, i/2 shouldve been n/2 where n is the number of elements on the array and also on the 2nd while,and also on my beginning algo, i never thought of it that way, thank you very much
|
Bisutopia19152 Posts
Hoping to be Helpful. PM me if u ever need my help or if u want me to address your code on this forum. I"m a C++ programmer.
|
On November 11 2010 20:40 icystorage wrote: I am a second year Computer Science major and i'd like to ask for some help on checking on my homework, my professor on Data Structures asked us to make an algorithm on how you can insert data at the end of a given list, middle of the list and at the beginning. Here's my algo:
Tip on clarity -- it looks like you're using an automatically-resizing array with efficient random access; the term of art for that is "vector." When you say "list" that might imply multiple things, a linked list foremost among them.
|
On November 11 2010 20:40 icystorage wrote:I am a second year Computer Science major and i'd like to ask for some help on checking on my homework, my professor on Data Structures asked us to make an algorithm on how you can insert data at the end of a given list, middle of the list and at the beginning. Here's my algo: + Show Spoiler + End of the list: while (list[i] is not null) do i++ end do list[i] = data
Beginning of the list: while (list[i] is not null) do i++ end do while (i is not zero) do list[i+1] = list[i] i-- end do list[i] = data
Middle of the list: while (list[i] is not null) do i++ end do while (i is not i/2) do list[i+1] = list[i] i-- end do list[i] = data
Is this correct? I'd like to improve on it as well but that's all i've got. Thanks a lot 
Well do you have to implement the list as array ? If not you can use more memory intensive structure where each element has the value and a pointer to the next element. You just need to keep pointers to first and last element of the list in 2 variables. In this case adding to the beginning of the list and at the end of the list are "atomic" operations that do not require traversing the array, and only inserting in the middle requires that(you will need 3rd variable to keep the length of the list to do that easily).
Pseudocode will be something like : + Show Spoiler + var beginning; var end; var len;
//adding in the beginning var temp = new node(data); temp.next = beginning; beginning = temp; len++; if (temp.next == null) end=beginning; //it was the first element on the list
//adding at the end var temp = new node(data); if (end != null) end.next = temp; end = temp; len++; if (beginning == null) beginning =end; //it was the first element on the list
//adding in the middle (just a structure, needs to be polished to actually work) var iter = beginning; for (i = 0; i < len/2; i++) { iter = iter.next; } var temp = new node(data); var nnode = iter.next; iter.next = temp; temp.next = nnode;
|
Actually now that I think about it, you don't need len variable , just add new variable that points to the middle of the list and all your operations will be O(1), total win )
|
the term in my uni is just starting so i think we're just on the basics of data structures but i really appreciate the help you guys give!
|
On November 11 2010 23:45 mcc wrote:Actually now that I think about it, you don't need len variable , just add new variable that points to the middle of the list and all your operations will be O(1), total win  )
Inserting into the middle of a linked list isn't constant time. You need to traverse it one node at a time until you get to the position in the middle at which you want to insert.
|
Yeah, newbie!
+ Show Spoiler +One of these days I'll actually learn myself the time thingys. :-P
|
On November 12 2010 03:20 catamorphist wrote:Show nested quote +On November 11 2010 23:45 mcc wrote:Actually now that I think about it, you don't need len variable , just add new variable that points to the middle of the list and all your operations will be O(1), total win  ) Inserting into the middle of a linked list isn't constant time. You need to traverse it one node at a time until you get to the position in the middle at which you want to insert. If you are adding always exactly in the middle I do not think you really need to traverse. If you keep a pointer to the middle node and after it is done move that pointer to the new node or keep it at the same node depending if the length of the list is even or not. But I was wrong about not needing a length variable, you need it to determine if you need to move the middle pointer or not. You do not really need a length, a bit flag for even/not even would suffice.
You need to traverse only if you search for values, or you want sorted list and staff like that. Inserting at a fixed given position is I think O(1).
|
On November 12 2010 05:17 mcc wrote:Show nested quote +On November 12 2010 03:20 catamorphist wrote:On November 11 2010 23:45 mcc wrote:Actually now that I think about it, you don't need len variable , just add new variable that points to the middle of the list and all your operations will be O(1), total win  ) Inserting into the middle of a linked list isn't constant time. You need to traverse it one node at a time until you get to the position in the middle at which you want to insert. If you are adding always exactly in the middle I do not think you really need to traverse. If you keep a pointer to the middle node and after it is done move that pointer to the new node or keep it at the same node depending if the length of the list is even or not. But I was wrong about not needing a length variable, you need it to determine if you need to move the middle pointer or not. You do not really need a length, a bit flag for even/not even would suffice. You need to traverse only if you search for values, or you want sorted list and staff like that. Inserting at a fixed given position is I think O(1).
OK, yeah, it would be constant time if you decided to keep track of the middle. Sorry for misreading.
|
|
|
|