Jump to content

madknight3

Member
  • Posts

    1,786
  • Joined

  • Last visited

Everything posted by madknight3

  1. Tutorials, both beginner and advanced, are great because they give you a path to follow for a specific topic and don't leave you piecing together your own curriculum, but they are only meant to get you started. So much is learned by trying to apply what you know to real projects. When you work on your own projects you'll usually run into many things you don't know how to do. You learn a lot by trying to figure out these problems. You only get a taste of that in most tutorials because they tend to walk you through everything. Not only that, but repeatedly using what you learn helps you remember what you're learning. That's why everyone recommends practice outside of tutorials. No problem. And I checked to make sure I mentioned that it is free to read online. It's certainly great to buy it and support the author, but you don't have to wait to get started if you don't want to. The author also created a Udemy course for the book. I'm not sure if there's anything there that isn't already free on his YouTube channel but feel free to check it out.
  2. I've never used Code.org or Sololearn, and I've also never seen them recommended by anyone before. That doesn't necessarily mean they aren't good, but I can't speak to their quality. Codecademy works for some people and it's probably one of the easiest beginner tutorials I've seen for Python. It also has a low barrier to entry because everything is done in the browser and you don't have to worry about downloading/installing anything. I've found the free version to be a little lacking though. It does go over the basics of Python, but it doesn't really get you to practice what you're learning. The pro version seems to give you quizzes and projects to do and also offers live chat help, so maybe that greatly improves the quality of the lessons as a whole, but I've never used it so I can't say for sure. I'm not against paying for lessons if you think it'll work for you but there are a lot of great free resources out there too so it's not required. Also, because everything is done in the browser, you don't get used to working with the Python command line and tools that most developers use. Maybe they show you how to use them with the pro version or with the external resources they link to, but again I'm not sure. Personally I don't recommend it based on the free version because I think other resources like Automate the Boring Stuff are better, but not everyone learns the same so you may develop a different opinion after trying them.
  3. It's not interactive, but Automate the Boring Stuff is a good option for learning Python 3. It's a free online book, with included youtube videos, covering Python 3 and giving you some real application examples of Python along the way.
  4. Yes, you can download and use Visual Studio Community for free. If I recall correctly, you will need to sign up for a visual studio account to continue using it after the 30 day trial but it wont cost you anything. As a bonus, you also get to join the Visual Studio Dev Essentials program which gives you access to a bunch of resources for free, although I'm not sure how many of them offer any benefit to a C programmer. For example, the program gives you 3 months free to Pluralsight but it looks like it only has one course on C. Visual Studio uses it's own C and C++ compiler (often referred to as MSVC compiler). The compiler that comes with Visual Studio 2015 supports some (most?) of C99 but doesn't support C11. Microsoft is much more invested in the C++ community than the C community but you can still do a lot of C development with Visual Studio. Many other IDEs (CLion, Code::Blocks, etc) use GCC (or whatever you tell it to use) which seems to be the most popular option for C development. I believe GCC supports most (all?) of C99 and C11. Ultimately it's up to you what you use. Personally, I use GCC and CLion whenever I feel like playing around with C and it's what I would use if I was going to learn more C. That said, I'm by no means a C developer. I learned the basics of C back in university but stopped there and haven't ever used it professionally. I find Rust to be a more interesting language choice so that's what I plan to focus on over C (if I ever get the time).
  5. Actually it's not that simple. Local variables aren't automatically initialized with a default value. So int x; will give you a compilation error if you try to use it before it's assigned a value. // This doesn't work. It gives you a compilation error static void Main(string[] args) { int i; bool b = (i == 0); } // This works static void Main(string[] args) { int i = 0; bool b = (i == 0); } // This works too static void Main(string[] args) { int i; i = 0; bool b = (i == 0); } Fields/properties are automatically initialized with a default value when the class is instantiated. // This works public class Test { private int i; // defaults to zero private double d { get; set; } // also defaults to zero public Test() { bool b = (i == 0); } }
  6. I'm not a ruby developer but here are a few general things that come to mind Jetbrains RubyMine (or your IDE of choice) and your text editor of choice (Sublime, Atom, Vim, Emacs, etc) Jetbrains Datagrip (or your database tooling of choice) Git (or your version control tool of choice) Anything you might use for communication (Slack, HipChat, IRC Client, Skype, Discord, etc). Quick screenshot tools can be handy (Puush, Greenshot, etc). Cloud storage (Dropbox, Google Drive, etc) can be useful for sharing files
  7. It probably has to do with this j.Candidate_ID = 2 vs j.Candidate_ID = '2' Use the correct data type for the column Candidate_ID
  8. "Job_tittle" looks like a typo to me.
  9. This could mean that programming just isn't for you or perhaps you just haven't found the right stuff to be working on. Something to keep in mind. Programming isn't for everyone, so there's no harm in finding a different career/hobby. If you are already familiar with some programming, you may be able to jump right into what you want to do without learning the basics of the language first (assuming it involves a new language). You may be able to pick it up as you go. If you have an interest in raspberry pi and arduino stuff, and you think you can handle it, then just jump right into working with them. Dive in while the interest is there. There should be plenty of tutorials online that show you how to work with these things. Supplement your learning with language specific resources as necessary. Once you've already got some programming experience, learning the syntax of a new language can be a much simpler task since many languages share similarities and many programming concepts apply regardless of the language being used. Knowing the syntax doesn't necessarily mean you will automatically write good code in that language, but you can often understand/be able to figure out what's going on with pieces of code you look up. You may pick up some of the commonly used functions/libraries while learning the syntax, otherwise you can look them up. Just keep in mind that not all code is easy to understand, even when you are familiar with a language. Some code can be naturally complex, poorly written, etc. So you aren't always able to understand everything right away without additional work.
  10. For anyone who likes these and didn't do them last year, you can also go to http://adventofcode.com/2015
  11. Use their 7 day free trial. If you like their lessons and can afford it, keep using them. If not, find something else. There are plenty of other paid/free resources out there. If you tell us what kind of development you're looking to learn, we might be able to provide you with some alternative resources.
  12. This is also a feature you get with some editors.
  13. Look into meetup groups (meetup.com is commonly used for this in my area) and events in your area. Be social when you're there. Attend every event possible in your faculty. Be a part of the CS student group if you have one. Get to know your peers and professors. Competitions, hackathons, presentations, etc are all great ways to improve your own skills while meeting new people.
  14. You can use a variety of programming languages to build desktop applications. Most, if not all, popular languages have more than one GUI framework you can use to create desktop applications but you don't need to learn them all. For example C# with WPF Java with JavaFX Python with Kivy C++ with Qt Swift with Cocoa JavaScript with Electron etc Bottom line, you have a lot of choice. For learning, pretty much anything will work. You could jump right into desktop development, however if you've never done any programming before it can be easier to focus on learning a bit of the language first. Many beginner tutorials will start you off on the command line because it greatly simplifies what you need to know for basic user input/output and allows you to focus mainly on learning the language syntax and libraries first. Basically, there's just less to learn all at once. For professional/commercial projects, like those you mentioned, you would want to be more selective based on the project requirements (or use whatever the company/team requires you to use).
  15. What skills does the other person in your group have in regards to this project?
  16. You could enroll in online courses. The deadlines for assignments and such could help keep you on a more consistent schedule. Here's two links with a list of courses OSS University Here's a list of 540+ free online programming/CS courses ...
  17. Without knowing what the code is doing I can only guess, but it sounds to me like the function is running for a while and that's and keeping the UI thread busy so you can't do other things. This could be because of an infinite loop, or something else that's just taking a long time to execute. If it's not supposed to run for a long time, then it could be due to a bug. Fixing that could stop the infinite loop/long running task and make everything work properly. Otherwise, you probably need to run the function asynchronously or in another thread. If you can't post the code publicly, perhaps you can send it to me in a private message so I can take a look.
  18. Step through the code one statement at a time. Write it out on paper or whatever works best for you. // example 1 for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (j > i) continue; System.out.println("Java"); } } /* i = 0 j = 0 j > i == false print "Java" j = 1 j > i == true continue ... i = 1 j = 0 j > i == false print "Java" j = 1 j > i == false print "Java" j = 2 j > i == true continue ... ... */
  19. It is better, but there's still a lot that can be improved. Using the ASCII table/strings like mariushm mentioned is one way to improve it. Aside from the special characters, which can be a little more scattered depending on what is allowed, uppercase, lowercase, and numbers are all in neat groups on the ASCII table. // Just an example. Clean it up as you see fit. string specialCharacters = "#$%&+=~"; var rng = new Random(); var lowercase = (char) rng.Next(97, 123); // ASCII a - z var uppercase = (char) rng.Next(65, 91); // ASCII A - Z var numbers = (char) rng.Next(48, 58); // ASCII 0 - 9 var special = specialCharacters[rng.Next(specialCharacters.Length)]; How you want to combine them into a string is up to you. Normally StringBuilder is recommended when you're dealing with string concatenation in a loop. // Again, just an example to show how to combine characters with StringBuilder. var sb = new StringBuilder(); sb.Append(lowercase); sb.Append(uppercase); sb.Append(numbers); sb.Append(special); var password = sb.ToString(); Of course this still leaves the issue that Random shouldn't be used for anything that is meant to be secure. That's what System.Security.Cryptography.RNGCryptoServiceProvider is for. It makes the code a bit more complicated, as you have to work in byte arrays, but it's a secure random number generator. var bytes = new byte[length]; using (var crng = new RNGCryptoServiceProvider()) { crng.GetBytes(bytes); // fill bytes array with random byte values } // Do something with bytes // Some options include // - Converting to a Base64 string (characters include, A-Za-z0-9+/ and = for padding when the length isn't a multiple of 3) // - Converting byte groupings into integers and then using them (Int16 = 2 bytes, Int32 = 4 bytes, Int64 = 8 bytes) // - Convert each byte to an ASCII value // - etc // Note: You can always ignore generated values and continue to generate more bytes if you aren't getting what you want. Here is an example of it being used to create a secure Random class.
  20. Ultimately you can't know how each company will progress into the future. You also don't know what it will be like to work at this new company. It could be better or it could be worse. There's always risk and uncertainty with any new job. With the information you put forth, it seems like the new job is better in every way. So I definitely think you should go with it. It's not like you couldn't get back with a C# company later, and your improved knowledge of JavaScript and web development will probably help if the company does any ASP.NET development. Both C# and JavaScript/Node aren't going anywhere anytime soon. Both are widely used.
  21. Do you know if they are using WebForms, MVC 5, or Core MVC (aka MVC 6)? They are all ASP.NET options and what you learn kind of depends on the answer. If you do know, or can find out, what they are using then focus on that. However, if you don't know what they use then I would say the safest option is to focus on MVC 5 as it's probably the most common ASP.NET option in use right now. WebForms isn't as common these days, but a lot of companies still use it so there's a chance that's what they want. If you have time, it wouldn't hurt to at least look at the basics of WebForms as well to give you an idea of how it works, just in case, but MVC 5 is the safer bet. WebForms is quite different from MVC 5 (and Core MVC), so MVC 5 skills won't really transfer to WebForms skills but they may still hire you on and have you learn WebForms on the job. It's not an uncommon practice for companies. It's unlikely they use MVC Core exclusively because it's only recently been released, but even if they did it I would expect they'd still hire someone for the position with MVC 5 experience. By learning MVC 5 you'll get familiar with a lot of the same concepts that Core MVC uses, so while there will still be a lot of new things to learn, the transition shouldn't be too bad. Also, take some time to go over ASP.NET WebAPI as that's also commonly used. In terms of learning resources, I would recommend Pluralsight, a video course website, as a place to start. It's $29 USD a month (or $299 USD a year) but you can get 3 months free through the Visual Studio Dev Essentials program. They have multiple courses on each ASP.NET option.
  22. Both functional programming and object oriented programming have their place. It's good to be familiar with each of them and then you get to choose the techniques that you think best fits a given situation. Many popular languages, like C# and Scala, are multi-paradigm and include both functional and object oriented features (just not always to the same extent).
  23. If you're comfortable learning the syntax and libraries as you go then perhaps you'll want to focus more on learning the functional paradigm. If you're new to functional programming, it has it's own way of doing things when compared to the Object Oriented paradigm and it can take a while to adjust to the new way of thinking. I don't know if "Scala for the Impatient" covers functional programming well or not as I haven't read it. Based on the table of contents, it seems like it certainly covers a lot of things, including some functional aspects of Scala, so it might but I can't confirm. I've heard that "Functional Programming in Scala" is a really good book for learning functional programming although again I haven't read it myself so I can't confirm. I'm not aware of any "build x in scala" type tutorials, I'm sure they are out there if you search around enough but there's no guarantee they will be good. You might be better off picking out your own projects to build and then asking Scala devs for advice on improvements. In terms of coding style, you can google for things like "Scala best practices" and see what people have to say. A couple examples are Twitter's Best Practices doc Another Open Source Best Practices list
  24. You forgot to list tabs as an option. Some people like to use tabs because many editors can be customized to display tabs how you want without effecting the plain text. So if someone on your team likes 2 spaces, you like 4, and another likes 8, you can all view it the way you want with tabs. That seems pretty appealing although I've never really given it a chance. I've been using 4 spaces for as long as I can remember.
  25. Like the above recommendations, I also recommend the following This is where I would probably start as it's free and you can save your free trial to Pluralsight for a little more interesting material. I'm not familiar with the other Bob Tabor courses but they may be good as well. Note that normally this is about $30 a month, or $300 a year, but you can get 3 free months if you sign up for the Visual Studio Dev Essentials program, which is free and you need it for Visual Studio Community anyway. If you go with Pluralsight, I recommend you check out the C# Path which gives you a set of courses to go through from beginner to advanced. They aren't the only good C# courses though but it can be nice to have a path to follow. The benefit of a site like Pluralsight is they provide you with a huge library of courses to choose from on many different topics that are useful to you as a software developer.
×