• Hey, guest user. Hope you're enjoying NeoGAF! Have you considered registering for an account? Come join us and add your take to the daily discourse.

Programming |OT| C is better than C++! No, C++ is better than C

Water

Member
So I did what you said and got the first line printing correctly, but it's not quite jumping out at me how to expand the program. Do I need to have three for loops or can it be done with two?
Well, first you put your line-printing code inside a new loop so that you're printing all the lines. Except initially, all of them are the first line. From there, you fix the line-printing code you had so it adapts to which line you are supposed to be printing at any given time. You'll find that the fixed code for printing a line has two loops, so in total you have three.

If you get stuck, you can always write another piece of code that prints only the second line, or even the third line, and compare those with each other. The difference will show you how to write a single piece of code that can handle any one of the lines. This is not a technique limited to beginners. I often take out pen and paper, write down what I want the first couple of results of something to be and how I can get those results individually, and then try to find the pattern and generalize so I only need a single piece of code.
 

Kansoku

Member
So I did what you said and got the first line printing correctly, but it's not quite jumping out at me how to expand the program. Do I need to have three for loops or can it be done with two?

You can do this, right?
Code:
*
**
***
****
*****
******
*******
********
*********
**********

So you can also do this (It's the same thing, but upside down):
Code:
**********
*********
********
******
******
****
****
***
**
*

This last one, if you replace the '*', with spaces and put that together with how you did the first line, you will see it more clearly.
 

Water

Member
Just started a data structures class, and i'm having problems with some linked list stuff (doubly linked lists).
...
Anyone have any idea what's wrong with the code?
Two questions.
Are you initializing the pointers to null in the Node constructor?
(If you aren't, then all your nodes beyond the first one have one pointer pointing to a random garbage location, and using that pointer will crash your program.)
Is this intended to be a circular doubly linked list (should head and tail point to each other)?
 

iapetus

Scary Euro Man
Ultimately the lesson I took away from it was that you shouldn't believe low level performance claims without micro-benchmarks, and even then you should take them with a large grain of salt.

You raise a good point. So I microbenchmarked it - took the three versions of the code and threw lots of randomly generated arrays at them (the same arrays for each piece of code, naturally).

The result?

My thrown-out-there code and Water's original suggestion that he's sure would be more effective are basically the same. There's a ms in it here and there when processing thousands of arrays containing a thousand elements - sometimes one is faster, sometimes the other. They're basically the same regardless of how dense the arrays are - tried them with 50% nulls, 10% nulls, 90% nulls - within a millisecond of each other every time.

Water's other code that he was sure would be slower? Faster except where array density is very low, in which case the others take over. An example run:

iapetus' attempt - rationalised 5000 arrays of size 5000/10000 in 270ms
Water's attempt - rationalised 5000 arrays of size 5000/10000 in 97ms
Water's other approach - rationalised 5000 arrays of size 5000/10000 in 283ms

An example run with low array density:

iapetus' attempt - rationalised 5000 arrays of size 500/10000 in 60ms
Water's attempt - rationalised 5000 arrays of size 500/10000 in 84ms
Water's other approach - rationalised 5000 arrays of size 500/10000 in 61ms

An example run with high array density:

iapetus' attempt - rationalised 5000 arrays of size 9000/10000 in 147ms
Water's attempt - rationalised 5000 arrays of size 9000/10000 in 101ms
Water's other approach - rationalised 5000 arrays of size 9000/10000 in 133ms

And a couple of edge cases:
iapetus' attempt - rationalised 5000 arrays of size 10000/10000 in 24ms
Water's attempt - rationalised 5000 arrays of size 10000/10000 in 139ms
Water's other approach - rationalised 5000 arrays of size 10000/10000 in 27ms

iapetus' attempt - rationalised 5000 arrays of size 0/10000 in 41ms
Water's attempt - rationalised 5000 arrays of size 0/10000 in 57ms
Water's other approach - rationalised 5000 arrays of size 0/10000 in 44ms

All of which tells us... well, not very much more than we knew before. :p
 

Hylian7

Member
Okay, maybe I'm just stupid, but for some reason I'm not understanding how the Timer class in Java Swing works. I've looked up examples, I simply do not understand. Can someone here explain it? I've made this to try to understand it based on examples I've found via Google.
TimerTest.java
Code:
import javax.swing.Timer;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class TimerTest implements ActionListener {
	private int times;
	
	public TimerTest() {
		times = 0;
	}
	
	public void actionPerformed(ActionEvent evt) {
		times++;
		System.out.println(times);
	}
}

TimerRun.java
Code:
import javax.swing.Timer;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
public class TimerRun {
 
    public static void main(String[] args) {
		Timer t;
		int times;
		times = 0;
		TimerTest tt = new TimerTest();
		t = new Timer(1000, tt);
		t.start();
    }
}

I run it, and get nothing!

What I want this to do (mainly so I understand) is to print out numbers counting up. It prints nothing right now.

What am I missing here? I feel stupid asking this.
 

hateradio

The Most Dangerous Yes Man
is there any scenario where I should do

if(bob.equals("candy")


instead of

if("candy".equals(bob))?
It's useful to use the method on the string you know is not null to check against user input or some kind of unvalidated input that might be null.

Code:
class Exec
{
	private String test = "Test";

	public void userInput(String input)
	{
		if (test.equals(input))
			System.out.println("Strings match");
		else
			System.out.println("Strings do not match");
	}
	
	public void userInput2(String input) // can throw NullPointerException
	{
		if (input.equals(test))
			System.out.println("Strings match");
		else
			System.out.println("Strings do not match");
	}
	
	public static void main(String[] args)
	{
		String valid = "Test";
		String invalid = null;
      
		Exec e = new Exec();
		
		e.userInput(valid);
		e.userInput(invalid);
		
		e.userInput2(valid);
      
		// NullPointerException
		e.userInput2(invalid);
	}

}
 

Korosenai

Member
Two questions.
Are you initializing the pointers to null in the Node constructor?
(If you aren't, then all your nodes beyond the first one have one pointer pointing to a random garbage location, and using that pointer will crash your program.)
Is this intended to be a circular doubly linked list (should head and tail point to each other)?

That's what it was, and I had some other junk in my constructor I didn't need. I fixed it though and its working great now.
 
Success! Thanks everyone for the help!

Though I feel like my code may be more complicated than it needs to be? I think somebody said it could be done with one variable?
Code:
{
	int size, space, ast; 


	for (size = 1;size < 11; size++)
	{
	for (space = size; space < 10; space++)
		printf_s(" ");
	for (ast = 0; ast < size; ast++)
		printf_s("*");
		printf_s("\n");
	}


	return 0;
}
 

Hylian7

Member
Success! Thanks everyone for the help!

Though I feel like my code may be more complicated than it needs to be? I think somebody said it could be done with one variable?
Code:
{
	int size, space, ast; 


	for (size = 1;size < 11; size++)
	{
	for (space = size; space < 10; space++)
		printf_s(" ");
	for (ast = 0; ast < size; ast++)
		printf_s("*");
		printf_s("\n");
	}


	return 0;
}

You only really needed two for loops, but you still got the job done.
 

Granadier

Is currently on Stage 1: Denial regarding the service game future
Success! Thanks everyone for the help!

Though I feel like my code may be more complicated than it needs to be? I think somebody said it could be done with one variable?

Way to go. I'm glad you were able to solve this on your own.

I have a habit of over-complicating things. It goes far beyond schoolwork, lol.

Sometimes it helps when you are just trying to get the problem solved. Then later on you can go back and clean up the solution to be less complicated.
 

Dysun

Member
Hey guys, this is a beginners Java question. I am reading from a text file and wish to have the lines from the file loop endlessly. I have written this but can't seem to get it to start over with mark() or reset() or some kind of boolean expression, and would appreciate any help.

Code:
import java.io.*;
public class Temp
{
    public static void main(String[] args) throws IOException
{
  BufferedReader reader = new BufferedReader(new FileReader("C:\\read.txt"));
  String line = null;
        
while ((line = reader.readLine()) != null) 
 {
    System.out.println(line);
 }

 }
    
 }

EDIT - Nevermind got it, just put another while loop around the initialization lol
 

Exuro

Member
So I'm having a strange issue that I'm not sure how to fix. I'm forking to a child process and depending on a previous flag it'll choose if the parent process waits for the child to finish, in which the child executes the ls command. The code runs great when I issue the wait flag as well as when I don't issue the flag, but after I don't issue it afterwards the parent never waits. Some psuedo code would be

wait yes/no?

rc = fork()

if rc == 0
print "in child"
exec "ls"

if rc > 0
if wait == true
wait
 

Hylian7

Member
Okay, maybe I'm just stupid, but for some reason I'm not understanding how the Timer class in Java Swing works. I've looked up examples, I simply do not understand. Can someone here explain it? I've made this to try to understand it based on examples I've found via Google.
TimerTest.java
Code:
import javax.swing.Timer;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class TimerTest implements ActionListener {
	private int times;
	
	public TimerTest() {
		times = 0;
	}
	
	public void actionPerformed(ActionEvent evt) {
		times++;
		System.out.println(times);
	}
}

TimerRun.java
Code:
import javax.swing.Timer;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
public class TimerRun {
 
    public static void main(String[] args) {
		Timer t;
		int times;
		times = 0;
		TimerTest tt = new TimerTest();
		t = new Timer(1000, tt);
		t.start();
    }
}

I run it, and get nothing!

What I want this to do (mainly so I understand) is to print out numbers counting up. It prints nothing right now.

What am I missing here? I feel stupid asking this.

Anybody?
 
I need help on printing an enclosed quote with my first name in it for C programming.

I only know how to do it as long it was a string of sequences something like this:

printf("\"Hello World!\"");

How do that for this prompt:
printf("%s", firstName); //Also, I'm using scanf to get the user's first name.
 

Exuro

Member
How do I take care of allocated memory in c if my program ends with an exec function and needs said allocated memory to execute?
 

Slavik81

Member
How do I take care of allocated memory in c if my program ends with an exec function and needs said allocated memory to execute?

I'm not sure I entirely understand what you mean by 'an exec function', but if you're using the allocated memory over the entire life of the program anyways, it's not a big deal to exit without freeing. The operating system will reclaim it.

That said, if the 'exec function' is some sort of event loop of a library you're using, then it probably has a callback for cleanup before exit. Other resources like file handles, TCP connections, database connections and other such things might not be reclaimed by operating system so there's usually a way to do some cleanup before exit.

There's also the standard atexit.
 

Exuro

Member
I'm not sure I entirely understand what you mean by 'an exec function', but if you're using the allocated memory over the entire life of the program anyways, it's not a big deal to exit without freeing. The operating system will reclaim it.

That said, if the 'exec function' is some sort of event loop of a library you're using, then it probably has a callback for cleanup before exit. Other resources like file handles, TCP connections, database connections and other such things might not be reclaimed by operating system so there's usually a way to do some cleanup before exit.

There's also the standard atexit.
Sorry, its the unix system call execvp.
 
Is anyone here handy with OpenGL 3.x?

I've done some OpenGL ES...


Anyone here have a lot of OBJ-C/iOS experience?

I'm working on an app and I've realized I've done something incredibly dumb but I don't really know what the solution is.

To whit:

My app has a large number of ViewControllers, every time I transition from one to another I'm basically creating a new instance of the one I'm going to, i.e.

UIViewController* newViewController = [self.storyboard instantiateViewControllerWithIdentifier:mad:"NewViewController"];

[self presentViewController:newViewController animated:YES completion:nil];

My gut reaction is that instead of constantly instantiating them over and over I just create a singleton that instantiates them all once and then reuse them that way but I feel like that's probably the "wrong way" of doing things.

I've been reading about creating ViewController Containers and think that maybe that's what I need to do but I'm a bit unsure on how this works. Or maybe I'm transitioning between ViewControllers improperly? All I know is right now, none of my ViewControllers is every destroyed so after a few minutes the app crashes.

Anyone?

Edit: Maybe this, http://nscookbook.com/2013/08/ios-programming-recipe-28-view-controller-containment-transitioning/ I'll have to read over it in the morning...
 
I've done some OpenGL ES...


Anyone here have a lot of OBJ-C/iOS experience?

I'm working on an app and I've realized I've done something incredibly dumb but I don't really know what the solution is.

To whit:

My app has a large number of ViewControllers, every time I transition from one to another I'm basically creating a new instance of the one I'm going to, i.e.

UIViewController* newViewController = [self.storyboard instantiateViewControllerWithIdentifier:mad:"NewViewController"];

[self presentViewController:newViewController animated:YES completion:nil];

My gut reaction is that instead of constantly instantiating them over and over I just create a singleton that instantiates them all once and then reuse them that way but I feel like that's probably the "wrong way" of doing things.

I've been reading about creating ViewController Containers and think that maybe that's what I need to do but I'm a bit unsure on how this works. Or maybe I'm transitioning between ViewControllers improperly? All I know is right now, none of my ViewControllers is every destroyed so after a few minutes the app crashes.

Anyone?

Edit: Maybe this, http://nscookbook.com/2013/08/ios-programming-recipe-28-view-controller-containment-transitioning/ I'll have to read over it in the morning...

Any reason why you aren't using a storyboard?
 

Exuro

Member
Could someone explain what is wrong about this code? I'm trying to understand the dup2() function better and our professor gave us this example but it doesn't work. When it runs and finishes i try to open the file but it says permission denied.

Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>

int main () {

int fd;
char* s;

fd = open("output.txt", O_WRONLY | O_CREAT | O_TRUNC);
dup2(fd, STDOUT_FILENO);
printf("Standard output now goes to file\n");
close(fd);
printf("... even after we close fd: %d\n", fd);
return 1;
}
 

Rapstah

Member
I've never used the dup2() syscall so I don't know what happens to the file after your application finishes running, but you've pretty explicitly created a write only file.
 
Could someone explain what is wrong about this code? I'm trying to understand the dup2() function better and our professor gave us this example but it doesn't work. When it runs and finishes i try to open the file but it says permission denied.

Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>

int main () {

int fd;
char* s;

fd = open("output.txt", O_WRONLY | O_CREAT | O_TRUNC);
dup2(fd, STDOUT_FILENO);
printf("Standard output now goes to file\n");
close(fd);
printf("... even after we close fd: %d\n", fd);
return 1;
}

If you're getting a permission denied error when trying to open the file, it just means you don't have read permissions on the file it's outputing to. I'm assuming O_WRONLY creates a file without read permissions or something (although I could be wrong). Regardless, just run "chmod 755 output.txt" on the file and then you should be able to read it.
 

Exuro

Member
I've never used the dup2() syscall so I don't know what happens to the file after your application finishes running, but you've pretty explicitly created a write only file.
Isn't that only for the duration that it's open in the program? I'm trying to open it with vim after the program has finished. I set to option to read/write and it still gives me permission denied.

Here's what the man page says on the options.

The parameter flags must include one of the following access modes:
O_RDONLY, O_WRONLY, or O_RDWR. These request opening the file read-
only, write-only, or read/write, respectively.
So wouldn't this just be opening the file and then only being able to read, write or both while the file descriptor stay put?

If you're getting a permission denied error when trying to open the file, it just means you don't have read permissions on the file it's outputing to. I'm assuming O_WRONLY creates a file without read permissions or something (although I could be wrong). Regardless, just run "chmod 755 output.txt" on the file and then you should be able to read it.

Okay so at the very least I can see that the printfs are getting redirected to the file. I don't know why using O_RDWR would also give me permission denied.
 

Rapstah

Member
Isn't that only for the duration that it's open in the program? I'm trying to open it with vim after the program has finished. I set to option to read/write and it still gives me permission denied.

There's two versions of the open syscall:

int open (const char *pathname, int flags)
int open (const char *pathname, int flags, mode_t mode)

If your open syscall actually creates a file, which O_CREAT tells it to do if it doesn't exist, then it's supposed to look at the flags from the mode argument to see what kinds of permissions the file is created with. There's a possibility that omitting the argument and using the shorter variant ends up creating a file with mode 0, which means no user group has permissions to read, write or execute the file. This would only affect what happens after your code finishes running.
 

Exuro

Member
There's two versions of the open syscall:

int open (const char *pathname, int flags)
int open (const char *pathname, int flags, mode_t mode)

If your open syscall actually creates a file, which O_CREAT tells it to do if it doesn't exist, then it's supposed to look at the flags from the mode argument to see what kinds of permissions the file is created with. There's a possibility that omitting the argument and using the shorter variant ends up creating a file with mode 0, which means no user group has permissions to read, write or execute the file. This would only affect what happens after your code finishes running.
Okay yeah this looks like the problem. I just tried without it and it works. Now I just need to figure out what the modes are and I should be good.

edit:Got it working. yay
 

Harpuia

Member
Been a long time since I came to this thread for help, but I have another non-math programming course this semester! Anyway, I have a couple of questions about this method I've implemented for my class.

Basically, it's a square matrix class. In other words, the class is for nxn matrices. Here's the overloaded + operator I made to add two matrices:

Code:
Square_Matrix Square_Matrix::operator+(const Square_Matrix& Matrix_Two)//Adds two matrices
{
    Square_Matrix temp;//A temporary object is created
    temp.Set_Size(size_N);//The object is set to the size of the calling object.

    for(int i = 0; i < size_N; i++)
    {
        for(int j = 0; j < size_N; j++)
        {
            temp.Matrix[i][j] = Matrix[i][j] + Matrix_Two.Matrix[i][j];//The temp matrix's values are calling object + parameter object.
        }
    }

    return temp;//Temp is returned, whose elements are the sum of the two objects
    //What happens to temp??? Does it get deleted?
}

I have a couple of concerns:

Is there a more efficient way to add the two matrices? Can I actually avoid using a temp?

Another thing of note, is that the matrices are dynamic 2D arrays. As far as I know, the deconstructors are correctly coded, and should not pose a problem. Given that the deconstructor is implemented correctly, what happens to the object that is returned?

I know that temp itself will be deleted once the member function finishes, but what about the "anonymous variable" (what my text book calls it) that the function returns? Is that properly dealt with soon as the function the value was returned to ends?

Thanks in advance for the help GAF!
 

Water

Member
I have a couple of concerns:

Is there a more efficient way to add the two matrices? Can I actually avoid using a temp?
You can't, since the result has to go somewhere.

Another thing of note, is that the matrices are dynamic 2D arrays. As far as I know, the deconstructors are correctly coded, and should not pose a problem. Given that the deconstructor is implemented correctly, what happens to the object that is returned?

I know that temp itself will be deleted once the member function finishes, but what about the "anonymous variable" (what my text book calls it) that the function returns? Is that properly dealt with soon as the function the value was returned to ends?
What exactly happens to the return value is not simple. The compiler may decide to perform named return value optimization (NRVO) to the thing you are returning, and then what the caller gets may be the same object as inside the function, so a needless copy is avoided.

But what you actually want to do is define a move constructor for your matrix class. If it has one, it's guaranteed to be used when you return a local value, and that's very efficient. This is why you can efficiently return huge std::vectors from functions, for instance.

In the calling function, the object returned from the function (whether it's actually a new one or the same one...) gets destroyed as soon as the statement containing the function call is over. That is, unless you assign the return value into a local variable or a reference in the calling function. If you do, its life is prolonged until that local variable or reference goes out of scope.

If you want efficiency and don't actually need to decide matrix size at runtime, you should have a template for creating matrices of different sizes. This is also safer code since you can't then accidentally mix different size matrices, and easy to write.

For hardcore efficiency, someone sufficiently nuts could try writing a set of templates which automatically collapse all constants in matrix code at compile time so that only the individual operations that actually need to be done at runtime will remain. The other optimizations available are not basic C++ language stuff (think SIMD and larger-scale parallelization).
 
I sort of am but I have a custom uicontrol that I couldn't figure out how to make work with the storyboard. I'm a bit new to this type of programming.

It's a little bit difficult to give any advice without knowing exactly how you want to transition, but just so we are clear; you know that in the storyboard you can create the transitions between the view controllers by using segues, right? By doing this, you don't have to create instances of your view controllers programmatically. Of course, sometimes you might want to do this, but usually there is no need to, at least in my experience.

Here is the basics of how to do it: https://developer.apple.com/library...lder/articles-storyboard/StoryboardSegue.html
 
But what you actually want to do is define a move constructor for your matrix class. If it has one, it's guaranteed to be used when you return a local value, and that's very efficient. This is why you can efficiently return huge std::vectors from functions, for instance.

I remember hearing about the move semantics stuff related to C++11, is that feature C++11 exclusive?
 
It's a little bit difficult to give any advice without knowing exactly how you want to transition, but just so we are clear; you know that in the storyboard you can create the transitions between the view controllers by using segues, right? By doing this, you don't have to create instances of your view controllers programmatically. Of course, sometimes you might want to do this, but usually there is no need to, at least in my experience.

Here is the basics of how to do it: https://developer.apple.com/library...lder/articles-storyboard/StoryboardSegue.html

Right, I know about segues but I have this modal wheel with buttons that determine which view controller to show next. Can I still use segues with something like this?
 
Right, I know about segues but I have this modal wheel with buttons that determine which view controller to show next. Can I still use segues with something like this?

Okay, I looked into segues. It looks like I can use them programmatically but it also looks like I'll have to connect every ViewController in the storyboard to every other ViewController. Yuck.
 

heytred

Neo Member
I just wanted to let you guys (everyone in here that contributes and even those just asking questions) know that you are awesome and I'm very appreciative of you all. I've learned a ton, even from just lurking.
 

Seanbob11

Member
Are there any good websites out there for Android Development? I'm doing a class at University on it and the lecturer just hands out word documents that we have to copy and paste with little to no explanation.
 

Granadier

Is currently on Stage 1: Denial regarding the service game future
Are there any good websites out there for Android Development? I'm doing a class at University on it and the lecturer just hands out word documents that we have to copy and paste with little to no explanation.

Check out Android's developer pages. They are quite detailed and step by step.
If you are using Android Studio beta though you will need to interpret some of the code/steps by yourself because it is written for people using Eclipse+ADK.

Also Kilobolt has a couple fairly decent tutorials that deal with building games in Java/Android.
They talk through the requirements for activities and graphics painting etc. The code isn't perfect, so it teaches you some debugging skills too haha.

I just wanted to let you guys (everyone in here that contributes and even those just asking questions) know that you are awesome and I'm very appreciative of you all. I've learned a ton, even from just lurking.
youre_awesome_carl_sagan.gif
 

Osiris

I permanently banned my 6 year old daughter from using the PS4 for mistakenly sending grief reports as it's too hard to watch or talk to her
Are there any good websites out there for Android Development? I'm doing a class at University on it and the lecturer just hands out word documents that we have to copy and paste with little to no explanation.

I'd love to say yes, but in all honesty there really isn't, certainly not up to the standard of sites concentrating on Java, C#, C or C++ etc.

The various Android Development communities on Google+ are OKish, /r/Androiddev/ on Reddit is awful, some good stuff over at XDA-developers, however you'll have to look hard to find it among the random ROM / root issue posts.

The Android Dev web presence is sooo bad I've thought of trying to start a site, and man, if it's left to me, it'll be awful, hope springs eternal that someone else soon starts a worthwhile Android developer site. :p
 

Granadier

Is currently on Stage 1: Denial regarding the service game future
I'd love to say yes, but in all honesty there really isn't, certainly not up to the standard of sites concentrating on Java, C#, C or C++ etc.

The various Android Development communities on Google+ are OKish, /r/Androiddev/ on Reddit is awful, some good stuff over at XDA-developers, however you'll have to look hard to find it among the random ROM / root issue posts.

The Android Dev web presence is sooo bad I've thought of trying to start a site, and man, if it's left to me, it'll be awful, hope springs eternal that someone else soon starts a worthwhile Android developer site. :p

How so?
Maybe I'm missing something, but I thought it was pretty decently laid out the requirements for Android apps and how you should be developing them.
Keep in mind I think Seanbob11 was looking for something in the beginner difficulty since he mentioned he was taking the class in university.
 

Harpuia

Member
Hey guys! A follow up to my previous post, but where should friend functions be written out? If I try to insert it in the header file of my class, the compiler brings up an error, but in my implementation cpp file, it seems to compile correctly. What's the general practice when dealing with friend functions?
 

Osiris

I permanently banned my 6 year old daughter from using the PS4 for mistakenly sending grief reports as it's too hard to watch or talk to her
How so?
Maybe I'm missing something, but I thought it was pretty decently laid out the requirements for Android apps and how you should be developing them.
Keep in mind I think Seanbob11 was looking for something in the beginner difficulty since he mentioned he was taking the class in university.

The actual official developer documentation / getting started stuff is fine, I meant it's lacking in the wider context of the web as a whole.

There are lots of blogs with great snippets and tutorials dotted around too, but as they tend to either be personal, or app-based the useful stuff is often bookended with random, less android-focused blog posts.

But as for sites dedicated to android development on the whole, that's where I feel it lacks presence.
 

Linkhero1

Member
Hi Programming-GAF,

I want to build a better programming portfolio than just school projects that I have from college and the first thing that came to my mind was MP3 player. I don't know where to begin and what language would be best for a MP3 player. Preferably, I would want to work with Java. I also don't have any experience with GUI other than working with front-end HTML/CSS so it will be entirely new to me. Can someone point in the right direction to get started on such a project?

Thanks :)
 
Top Bottom