Difference between revisions of "OOP344 Student Resources"

From CDOT Wiki
Jump to: navigation, search
(Changed link to SVN setup tutorial)
(Updated index)
 
(20 intermediate revisions by 10 users not shown)
Line 1: Line 1:
{{OOP344 Index | 20113}}
+
{{OOP344 Index Extended | 20141}}
 
===Quick Link===
 
===Quick Link===
 
*[[Tortoise in 5]]
 
*[[Tortoise in 5]]
Line 13: Line 13:
 
== Webpages (Useful links)==
 
== Webpages (Useful links)==
  
*https://cs.senecac.on.ca/~btp300 <-- the degree version of oop344. Good for an indepth look at the material. Includes Workshops and Walkthroughs
+
*https://scs.senecac.on.ca/~btp300 <-- the degree version of oop344. Good for an indepth look at the material. Includes Workshops and Walkthroughs
 
*https://cs.senecac.on.ca/~fardad.soleimanloo/oop344/notes/ <-- Notes only up to Oct 28, 2009. Includes past tests
 
*https://cs.senecac.on.ca/~fardad.soleimanloo/oop344/notes/ <-- Notes only up to Oct 28, 2009. Includes past tests
 
*svn://zenit.senecac.on.ca/oop344 <-- Up to Date Notes shown in all lectures
 
*svn://zenit.senecac.on.ca/oop344 <-- Up to Date Notes shown in all lectures
 
*[http://zenit.senecac.on.ca/wiki/index.php/How_to_set_up_tab_spaces Changing Tab Key Behaviour in Certain IDEs]
 
*[http://zenit.senecac.on.ca/wiki/index.php/How_to_set_up_tab_spaces Changing Tab Key Behaviour in Certain IDEs]
 +
*[http://www.projecteuler.net Project Euler] - great site to test your skills and keep them sharp!
  
== SVN ==
+
== GIT ==
<p>[[Development and submission steps using SVN - OOP344 20121]] This is a quick way to get everyone familiar with SVN in a brain friendly manner without the need to sift through pages of unnecessary documentation.</p>
+
[[GIT for OOP344 Projects]]
<p>
 
[http://lmgtfy.com/?q=what+is+svn What is SVN?] Subversion or SVN is a control system where it allows you to properly organize and manage files and directories and the changes to them over time. SVN allows you to recover      older versions of your data, or examine the history of how your      data changed.  In this regard, many people think of a version      control system as a sort of “time machine”. [http://svnbook.red-bean.com/en/1.4/svn.intro.whatis.html]
 
</p>
 
 
 
 
 
=== SVN Clients ===
 
* [[Tortoise in 5]] - This page is dedicated to those poor souls that have to use SVN but don't have time to read through chapter upon chapter about it just to be able to participate in assignment 2.
 
* [[RabbitVCS]] - RabbitVCS is a Linux alternative to TortoiseSVN. This page will help describe how to install and use RabbitVCS.
 
* [http://rapidsvn.tigris.org/ RapidSVN] - Another SVN client for Linux - a very simple and straight-forward SVN client.
 
* [http://www.lachoseinteractive.net/en/community/subversion/svnx/features/?sid=337041a90a9f11841f9f77fda5224723 svnX] - A very competent SVN client for Mac OS X.
 
 
 
=== SVN Hosts ===
 
<p>The best way to learn SVN is to experiment it, we programmers, love to explore. Though Seneca already provides us SVN hosting, there are other free SVN hosting out there that you can use and experiment around (since you might not want to mess around with your team's account if you don't know what you're doing). One of the best SVN hosts out there is probably [http://code.google.com/hosting/ Google Code Hosting] because it has many cool features such as web presentation of [http://code.google.com/p/rainulf/source/browse/trunk/core.php syntax highlighted sources], [http://code.google.com/p/rainulf/source/diff?path=/trunk/core.php&format=side&r=4&old_path=/trunk/core.php&old=3 diff], [http://code.google.com/p/rainulf/w/list wiki] and more (which you can do also within a client program) of sources and it does show what SVNs are truly for: ease.</p>
 
<p>Here's a few SVN hosts:</p>
 
* Google Code Hosting - create account [http://code.google.com/hosting/createProject here]
 
* [http://sourceforge.net/ SourceForge]
 
* [https://www.bountysource.com/ Bounty Source]
 
* And [http://lmgtfy.com/?q=svn+hosts more], ranging from free to paid hosting.
 
NOTE: Seneca already provides us SVN hosting (SVN login and pass), all of our work academic work should be all there.
 
 
 
=== Doing a task in SVN ===
 
Below is a quick guide to follow to complete a task under SVN.
 
 
 
 
 
1. Create subdirectories in "branches" under your Seneca email ID. This is your ROOT.
 
  Repo
 
    |__ Branches
 
          |__ SenecaEmailID
 
 
 
 
 
2. Create a subdirectory under your brach under the task name. (ex. BkSpcBug)
 
  Repo
 
    |__ Branches
 
          |__ SenecaEmailID
 
                      |____ BkSpcBug
 
 
 
 
 
  
3. Update your branch to set the files in (BkSpcBug)
 
  Repo
 
    |__ Branches
 
          |__ SenecaEmailID
 
                      |____ BkSpcBug
 
                              |_____file1.cpp
 
                              |_____file2.cpp
 
  
4. Start working on (BkSpcBug).
+
* This is by far the best tutorial for Github, actually the best tutorial ever! Check it out. (http://pcottle.github.com/learnGitBranching/) -Mohammed Al Zubair
 
 
5. When complete (Bug Fixed).
 
 
 
5.1 Set the trunk status on the team page to: COMITTING by your Seneca ID.
 
 
 
5.2 Merge the branch (BkSpcBug) to Trunk.
 
 
 
5.2.1 Edit possible conflicts.
 
 
 
5.2.2 Set conflicts to resolved.
 
 
 
5.3. Recompile the trunk.
 
 
 
5.4 Set the trunk status on the team page to: COMITTED by your Seneca ID.
 
  
 
== Creating Projects in Visual Studio for Console Applications ==
 
== Creating Projects in Visual Studio for Console Applications ==
Line 95: Line 38:
 
In "Solution Explorer", add new item to Header Files or Source Files.
 
In "Solution Explorer", add new item to Header Files or Source Files.
  
== The Basics of IRC ==
+
==IRC==
  
IRC is also known as Internet Relay Chat. The principal of it is essentially to provide accessible chat rooms for people over the internet over multiple operating systems.
+
=== The Basics of IRC ===
 +
IRC is also known as Internet Relay Chat. The principal of it is essentially to provide accessible chat rooms for people over the internet over multiple operating systems. To be able to connect and interact with IRC, one must first have an IRC client of some sort.
  
To be able to connect and interact with IRC, one must first have an IRC client of some sort. There is a wide variety of different IRC clients on all platforms. Here is a list of just a few:
+
===IRC Clients===
 +
There is a wide variety of different IRC clients on all platforms. Here is a list of just a few:
 
* [https://addons.mozilla.org/en-US/firefox/addon/16 Chatzilla] (Add-on for Firefox)
 
* [https://addons.mozilla.org/en-US/firefox/addon/16 Chatzilla] (Add-on for Firefox)
 
* [http://www.mirc.com/ mIRC] (Windows)
 
* [http://www.mirc.com/ mIRC] (Windows)
Line 109: Line 54:
 
* [http://www.irssi.org/ irssi] (Windows/MacOS/Linux)
 
* [http://www.irssi.org/ irssi] (Windows/MacOS/Linux)
 
* [http://webchat.freenode.net/ Freenode] (Windows/MacOS/Linux (Web Based IRC)
 
* [http://webchat.freenode.net/ Freenode] (Windows/MacOS/Linux (Web Based IRC)
 +
* [http://www.hexchat.org/ HexChat] (Windows)
  
 
Once installed and running, you will have such options as connecting to various servers. We're particularly interested in the one which the seneca chatroom is located.
 
Once installed and running, you will have such options as connecting to various servers. We're particularly interested in the one which the seneca chatroom is located.
Line 208: Line 154:
 
If you are using linux, the best IRC client I can find is xchat, but identiy and join every time you log in became a hassle, here is the fix:
 
If you are using linux, the best IRC client I can find is xchat, but identiy and join every time you log in became a hassle, here is the fix:
  
#. Click on the xchat option on the menu bar > Server list (ctrl+s)
+
# Click on the xchat option on the menu bar > Server list (ctrl+s)
#. Type in your nickname, registered ID and information on freenode
+
# Type in your nickname, registered ID and information on freenode
#. In Networks, scroll down and select freenode
+
# In Networks, scroll down and select freenode
#. On the right side, click on "edit"
+
# On the right side, click on "edit"
#. Under connecting, check the option "auto connect to this network at startup"
+
# Under connecting, check the option "auto connect to this network at startup"
#. Type your password in "Nickserv password"
+
# Type your password in "Nickserv password"
#. close the window and click "connect"
+
# close the window and click "connect"
 +
 
 +
=== Some IRC short cuts for xchat  ===
 +
If you use xchat these short cuts will save you from having to type a lot.
 +
 
 +
# /ns identify "password" = /msg nickserv identify "password"
 +
# /id "password"          = /msg nickserv identify "password"
 +
# /j "channel name"      = /join "channel name"
 +
# /cs                    = /msg chanserv
  
 
=== Hiding or Cloaking your IP Address ===
 
=== Hiding or Cloaking your IP Address ===
Line 220: Line 174:
 
One of the ways is to simply send an email to support@freenode.net with a request to hide your IP Address. Make sure to provide your registered nickname on the freenode IRC server. Your will get a reply in couple of days, so be patient.
 
One of the ways is to simply send an email to support@freenode.net with a request to hide your IP Address. Make sure to provide your registered nickname on the freenode IRC server. Your will get a reply in couple of days, so be patient.
 
Another way, is to join #freenode chat and try to contact a chat moderator there.
 
Another way, is to join #freenode chat and try to contact a chat moderator there.
 +
 +
=== Useful Links ===
 +
* [http://freenode.net/faq.shtml  Freenode FAQ]
  
 
== Online C++ tutorials  ==  
 
== Online C++ tutorials  ==  
Line 227: Line 184:
 
[http://www.learncpp.com/ C++ tutorial site3]<br />
 
[http://www.learncpp.com/ C++ tutorial site3]<br />
 
[http://www.cprogramming.com/tutorial.html C/C++ tutorial site]<br />
 
[http://www.cprogramming.com/tutorial.html C/C++ tutorial site]<br />
 +
 +
*[http://www.eskimo.com/~scs/cclass/int/sx11c.html Variadic Function help]
 +
*[http://www.programr.com/zone/cpp C++ Tutorials and Exercises]
  
 
== Linked List Explained ==
 
== Linked List Explained ==
Line 279: Line 239:
 
*  #define ''' F11_KEY''' 280
 
*  #define ''' F11_KEY''' 280
 
*  #define ''' F12_KEY''' 281
 
*  #define ''' F12_KEY''' 281
 +
== Obsolete Stuff ==
 +
=== SVN ===
 +
<p>[[Development and submission steps using SVN - OOP344 20121]] This is a quick way to get everyone familiar with SVN in a brain friendly manner without the need to sift through pages of unnecessary documentation.</p>
 +
<p>
 +
[http://lmgtfy.com/?q=what+is+svn What is SVN?] Subversion or SVN is a control system where it allows you to properly organize and manage files and directories and the changes to them over time. SVN allows you to recover      older versions of your data, or examine the history of how your      data changed.  In this regard, many people think of a version      control system as a sort of “time machine”. [http://svnbook.red-bean.com/en/1.4/svn.intro.whatis.html]
 +
</p>
 +
=== SVN Clients ===
 +
* [[Tortoise in 5]] - This page is dedicated to those poor souls that have to use SVN but don't have time to read through chapter upon chapter about it just to be able to participate in assignment 2.
 +
* [[RabbitVCS]] - RabbitVCS is a Linux alternative to TortoiseSVN. This page will help describe how to install and use RabbitVCS.
 +
* [http://rapidsvn.tigris.org/ RapidSVN] - Another SVN client for Linux - a very simple and straight-forward SVN client.
 +
* [http://www.lachoseinteractive.net/en/community/subversion/svnx/features/?sid=337041a90a9f11841f9f77fda5224723 svnX] - A very competent SVN client for Mac OS X.
 +
 +
=== SVN Hosts ===
 +
<p>The best way to learn SVN is to experiment it, we programmers, love to explore. Though Seneca already provides us SVN hosting, there are other free SVN hosting out there that you can use and experiment around (since you might not want to mess around with your team's account if you don't know what you're doing). One of the best SVN hosts out there is probably [http://code.google.com/hosting/ Google Code Hosting] because it has many cool features such as web presentation of [http://code.google.com/p/rainulf/source/browse/trunk/core.php syntax highlighted sources], [http://code.google.com/p/rainulf/source/diff?path=/trunk/core.php&format=side&r=4&old_path=/trunk/core.php&old=3 diff], [http://code.google.com/p/rainulf/w/list wiki] and more (which you can do also within a client program) of sources and it does show what SVNs are truly for: ease.</p>
 +
<p>Here's a few SVN hosts:</p>
 +
* Google Code Hosting - create account [http://code.google.com/hosting/createProject here]
 +
* [http://sourceforge.net/ SourceForge]
 +
* [https://www.bountysource.com/ Bounty Source]
 +
* And [http://lmgtfy.com/?q=svn+hosts more], ranging from free to paid hosting.
 +
NOTE: Seneca already provides us SVN hosting (SVN login and pass), all of our work academic work should be all there.
 +
 +
=== Doing a task in SVN ===
 +
Below is a quick guide to follow to complete a task under SVN.
 +
 +
 +
1. Create subdirectories in "branches" under your Seneca email ID. This is your ROOT.
 +
  Repo
 +
    |__ Branches
 +
          |__ SenecaEmailID
 +
 +
 +
2. Create a subdirectory under your brach under the task name. (ex. BkSpcBug)
 +
  Repo
 +
    |__ Branches
 +
          |__ SenecaEmailID
 +
                      |____ BkSpcBug
 +
 
 +
 +
 +
3. Update your branch to set the files in (BkSpcBug)
 +
  Repo
 +
    |__ Branches
 +
          |__ SenecaEmailID
 +
                      |____ BkSpcBug
 +
                              |_____file1.cpp
 +
                              |_____file2.cpp
 +
 +
4. Start working on (BkSpcBug).
 +
 +
5. When complete (Bug Fixed).
 +
 +
5.1 Set the trunk status on the team page to: COMITTING by your Seneca ID.
 +
 +
5.2 Merge the branch (BkSpcBug) to Trunk.
 +
 +
5.2.1 Edit possible conflicts.
 +
 +
5.2.2 Set conflicts to resolved.
 +
 +
5.3. Recompile the trunk.
 +
 +
5.4 Set the trunk status on the team page to: COMITTED by your Seneca ID.

Latest revision as of 14:53, 7 March 2014


OOP344 | Weekly Schedule | Student List | Teams | Project | A1 | A2 | A3 | Student Resources

Quick Link


This page will serve as a hub for all OOP344 students to create wiki pages related to the course for the purpose of aiding their fellow students. Got a handy trick that makes programming easier? Feel free to build a page about it and link it here for all your classmates to use!

Standards

To add a new page, simply put a link at the top of the page and a section below with a link and short description of what the page is about. Simple enough?


Webpages (Useful links)

GIT

GIT for OOP344 Projects


Creating Projects in Visual Studio for Console Applications

Visual Studio is available for download from ACS

To create a new project for console applications:

  • From the File menu, select New > Project
  • Select Project Type as Visual C++ > Win32
  • Select template Win32 Console Application
  • Assign project name and choose local directory
  • Uncheck the box Create directory for solution
  • In the wizard, click on Application Settings
  • Application type of Console application should be selected
  • Check the box beside Empty project

In "Solution Explorer", add new item to Header Files or Source Files.

IRC

The Basics of IRC

IRC is also known as Internet Relay Chat. The principal of it is essentially to provide accessible chat rooms for people over the internet over multiple operating systems. To be able to connect and interact with IRC, one must first have an IRC client of some sort.

IRC Clients

There is a wide variety of different IRC clients on all platforms. Here is a list of just a few:

Once installed and running, you will have such options as connecting to various servers. We're particularly interested in the one which the seneca chatroom is located.

Basic Commands

Command Description
/server irc.freenode.net Connects your client to an IRC server. In this case, it is the freenode server
/join #seneca Join #seneca channel
/nick YOURNEWNICKNAME Change your nickname
/leave #seneca Leave #seneca channel
/part #seneca Another fancy (more elegant) way of leaving
/query NICKNAME Open a private chat with someone

See this for more advanced (and fun) IRC commands that works at Freenode.


Protecting your Nickname

Once connected to the server, it is a good idea to register your nick, otherwise someone can impersonate you and steal your nick -- Forcing you to change your name again.

To register, one uses the following command: /msg nickserv REGISTER foo foo@bar.com

This will associate your account with the e-mail foo@bar.com, as well as have your password be foo. To identify yourself, you do a similar command: /msg nickserv IDENTIFY foo

If someone has taken your registered nick, or you have a zombie in the channel (Where you drop connection but you still appear in the channel), there is a command to fix that.

Command Description
/msg NickServ RECOVER [nick] [personal password] RECOVER Kill another user who has taken your nick (leave out the brackets [])
/msg NickServ GHOST [nick] [personal password] GHOST Kills the nickname (NOTE: Please use the Ghost command instead for now and leave out the brackets [])

NOTE: Stick with GHOST for now, as RECOVER is becoming more obsolete.


Seneca @ Freenode

Freenode is an IRC server/network. It is the largest free and open source software-focused IRC network.

Seneca's official IRC channels such as #seneca, #seneca-social, #seneca-oop344 and more are all at Freenode.

To connect to Freenode, one has to have an IRC client. If you are too lazy to download and install an IRC client, Freenode has an alternate way to connect to their network called freenode Web IRC. It is an IRC webapp client written in javascript. You will not need to install anything, just visit http://webchat.freenode.net/ and follow instructions. Everything will work in your browser as if it's magic.


How To Log IRC Conversations on mIRC

To log conversations on mIRC, you need to :

  1. Right click on the channel on the Switchbar (The bar with the channel names on it)
  2. Select Logging
  3. Select On


To view a logged conversation:

  1. Click on Tools
  2. Click on Log Files...
  3. Find you log file and double click it


How To Identify on IRC Automatically via mIRC (and Join #Seneca-OOP344 Channel)

If you are using mIRC to connect to IRC and wish to automatically identify your nickname after its been registered so you do not have to type it out every time you connect to Freenode do the following:

  1. . In the mIRC GUI, go to Tools > Script Editor
  2. . Click on the Remote tab
  3. . Add the following code to the page and click OK. (Remember to replace your PASSWORD with your password you set when you registered)


ON 1:NOTICE:*registered*identify*:?:{
  /msg nickserv identify PASSWORD
  /join #seneca-oop344
}

How To Identify on IRC Automatically via XChat (linux) and Join #Seneca-OOP344 Channel)

If you are using linux, the best IRC client I can find is xchat, but identiy and join every time you log in became a hassle, here is the fix:

  1. Click on the xchat option on the menu bar > Server list (ctrl+s)
  2. Type in your nickname, registered ID and information on freenode
  3. In Networks, scroll down and select freenode
  4. On the right side, click on "edit"
  5. Under connecting, check the option "auto connect to this network at startup"
  6. Type your password in "Nickserv password"
  7. close the window and click "connect"

Some IRC short cuts for xchat

If you use xchat these short cuts will save you from having to type a lot.

  1. /ns identify "password" = /msg nickserv identify "password"
  2. /id "password" = /msg nickserv identify "password"
  3. /j "channel name" = /join "channel name"
  4. /cs = /msg chanserv

Hiding or Cloaking your IP Address

One of the ways is to simply send an email to support@freenode.net with a request to hide your IP Address. Make sure to provide your registered nickname on the freenode IRC server. Your will get a reply in couple of days, so be patient. Another way, is to join #freenode chat and try to contact a chat moderator there.

Useful Links

Online C++ tutorials

FAQs (Really great site)
C++ tutorial site1
C++ tutorial site2
C++ tutorial site3
C/C++ tutorial site

Linked List Explained

Linked List
If you don't really understand how linked lists work or why we should even use them then this page is made for you!
Another Linked List Tutorial
This is another tutorial for linked lists that will walk you through how to program one.

Practice Questions/Solutions

C++ Casts Explained By Fardad 14/04/2011

For those that did not attend Thursday's class the week before the exam, Fardad explained how to use C++ casting
that can also be found in OOP244's notes by C++ Wizard Chris Szalwinski.

[https://cs.senecac.on.ca/~oop244/pages/content/ansis.html Chris Szalwinski's OOP244 Notes


OS Key-Codes

Mac OS X

  • #define UP_KEY 259
  • #define DOWN_KEY 258
  • #define LEFT_KEY 260
  • #define RIGHT_KEY 261
  • #define PGUP_KEY 6 /* Control + f */
  • #define PGDN_KEY 2 /* Control + b */
  • #define ENTER_KEY 10
  • #define TAB_KEY 9
  • #define BACKSPACE_KEY 127
  • #define DEL_KEY 330 /* FN + Delete */
  • #define HOME_KEY 1 /* Control + a */
  • #define END_KEY 5 /* Control + e */
  • #define ESCAPE_KEY 27
  • #define INSERT_KEY 16 /* Control + p */
  • #define SPACE_KEY 32

FN + ALT + Function Keys with Mac Special Function Key Setup

ALT + Function Keys as Standard Function Keys Setup

  • #define F1_KEY 270
  • #define F2_KEY 271
  • #define F3_KEY 272
  • #define F4_KEY 273
  • #define F5_KEY 274
  • #define F6_KEY 275
  • #define F7_KEY 276
  • #define F8_KEY 277
  • #define F9_KEY 278
  • #define F10_KEY 279
  • #define F11_KEY 280
  • #define F12_KEY 281

Obsolete Stuff

SVN

Development and submission steps using SVN - OOP344 20121 This is a quick way to get everyone familiar with SVN in a brain friendly manner without the need to sift through pages of unnecessary documentation.

What is SVN? Subversion or SVN is a control system where it allows you to properly organize and manage files and directories and the changes to them over time. SVN allows you to recover older versions of your data, or examine the history of how your data changed. In this regard, many people think of a version control system as a sort of “time machine”. [1]

SVN Clients

  • Tortoise in 5 - This page is dedicated to those poor souls that have to use SVN but don't have time to read through chapter upon chapter about it just to be able to participate in assignment 2.
  • RabbitVCS - RabbitVCS is a Linux alternative to TortoiseSVN. This page will help describe how to install and use RabbitVCS.
  • RapidSVN - Another SVN client for Linux - a very simple and straight-forward SVN client.
  • svnX - A very competent SVN client for Mac OS X.

SVN Hosts

The best way to learn SVN is to experiment it, we programmers, love to explore. Though Seneca already provides us SVN hosting, there are other free SVN hosting out there that you can use and experiment around (since you might not want to mess around with your team's account if you don't know what you're doing). One of the best SVN hosts out there is probably Google Code Hosting because it has many cool features such as web presentation of syntax highlighted sources, diff, wiki and more (which you can do also within a client program) of sources and it does show what SVNs are truly for: ease.

Here's a few SVN hosts:

NOTE: Seneca already provides us SVN hosting (SVN login and pass), all of our work academic work should be all there.

Doing a task in SVN

Below is a quick guide to follow to complete a task under SVN.


1. Create subdirectories in "branches" under your Seneca email ID. This is your ROOT.

  Repo
   |__ Branches
         |__ SenecaEmailID


2. Create a subdirectory under your brach under the task name. (ex. BkSpcBug)

  Repo
   |__ Branches
         |__ SenecaEmailID
                     |____ BkSpcBug
  


3. Update your branch to set the files in (BkSpcBug)

  Repo
   |__ Branches
         |__ SenecaEmailID
                     |____ BkSpcBug
                              |_____file1.cpp
                              |_____file2.cpp

4. Start working on (BkSpcBug).

5. When complete (Bug Fixed).

5.1 Set the trunk status on the team page to: COMITTING by your Seneca ID.

5.2 Merge the branch (BkSpcBug) to Trunk.

5.2.1 Edit possible conflicts.

5.2.2 Set conflicts to resolved.

5.3. Recompile the trunk.

5.4 Set the trunk status on the team page to: COMITTED by your Seneca ID.