diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..162a568
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,6 @@
+.idea/.name
+.idea/compiler.xml
+.idea/dictionaries/Bucky.xml
+*.iml
+.idea/misc.xml
+*.xml
\ No newline at end of file
diff --git a/Android_Beginners/010_States of an Activity/MainActivity.java b/Android_Beginners/010_States of an Activity/MainActivity.java
new file mode 100644
index 0000000..9885431
--- /dev/null
+++ b/Android_Beginners/010_States of an Activity/MainActivity.java
@@ -0,0 +1,97 @@
+package com.apps.gabothekiller.myapplication;
+
+import android.support.v7.app.ActionBarActivity;
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.util.Log;
+
+public class MainActivity extends ActionBarActivity {
+
+ private static final String TAG = "buckysMessage";
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ Log.i(TAG, "onCreate");
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ Log.i(TAG, "onStart");
+ }
+
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ Log.i(TAG, "onResume");
+ }
+
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ Log.i(TAG, "onPause");
+ }
+
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+ Log.i(TAG, "onStop");
+ }
+
+
+ @Override
+ protected void onRestart() {
+ super.onRestart();
+ Log.i(TAG, "onRestart");
+ }
+
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ Log.i(TAG, "onDestroy");
+ }
+
+
+ @Override
+ protected void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ Log.i(TAG, "onSaveInstanceState");
+ }
+
+
+ @Override
+ protected void onRestoreInstanceState(Bundle savedInstanceState) {
+ super.onRestoreInstanceState(savedInstanceState);
+ Log.i(TAG, "onRestoreInstanceState");
+ }
+
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.menu_main, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ // Handle action bar item clicks here. The action bar will
+ // automatically handle clicks on the Home/Up button, so long
+ // as you specify a parent activity in AndroidManifest.xml.
+ int id = item.getItemId();
+
+ //noinspection SimplifiableIfStatement
+ if (id == R.id.action_settings) {
+ return true;
+ }
+
+ return super.onOptionsItemSelected(item);
+ }
+}
diff --git a/Android_Beginners/010_States of an Activity/activity_main.xml b/Android_Beginners/010_States of an Activity/activity_main.xml
new file mode 100644
index 0000000..2b1db79
--- /dev/null
+++ b/Android_Beginners/010_States of an Activity/activity_main.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
diff --git a/Android_Beginners/021-022_Gestures App/MainActivity.java b/Android_Beginners/021-022_Gestures App/MainActivity.java
new file mode 100644
index 0000000..7d6f7ae
--- /dev/null
+++ b/Android_Beginners/021-022_Gestures App/MainActivity.java
@@ -0,0 +1,113 @@
+package com.thenewboston.swiperdiaper;
+
+import android.support.v7.app.ActionBarActivity;
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.widget.TextView;
+import android.view.MotionEvent;
+import android.view.GestureDetector;
+import android.support.v4.view.GestureDetectorCompat;
+
+
+public class MainActivity extends ActionBarActivity implements GestureDetector.OnGestureListener,
+GestureDetector.OnDoubleTapListener {
+ private TextView buckysMessage;
+ private GestureDetectorCompat gestureDetector;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+ buckysMessage = (TextView) findViewById(R.id.buckysMessage);
+ this.gestureDetector = new GestureDetectorCompat(this, this);
+ gestureDetector.setOnDoubleTapListener(this);
+ }
+
+ ///////// GESTURE METHODS //////////
+ @Override
+ public boolean onSingleTapConfirmed(MotionEvent e) {
+ buckysMessage.setText("onSingleTapConfirmed");
+ return true;
+ }
+
+ @Override
+ public boolean onDoubleTap(MotionEvent e) {
+ buckysMessage.setText("onDoubleTap");
+ return true;
+ }
+
+ @Override
+ public boolean onDoubleTapEvent(MotionEvent e) {
+ buckysMessage.setText("onDoubleTapEvent");
+ return true;
+ }
+
+ @Override
+ public boolean onDown(MotionEvent e) {
+ buckysMessage.setText("onDown");
+ return true;
+ }
+
+ @Override
+ public void onShowPress(MotionEvent e) {
+ buckysMessage.setText("onShowPress");
+
+ }
+
+ @Override
+ public boolean onSingleTapUp(MotionEvent e) {
+ buckysMessage.setText("onSingleTapUp");
+ return true;
+ }
+
+ @Override
+ public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
+ buckysMessage.setText("onScroll");
+ return true;
+ }
+
+ @Override
+ public void onLongPress(MotionEvent e) {
+ buckysMessage.setText("onLongPress");
+
+ }
+
+ @Override
+ public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
+ buckysMessage.setText("onFling");
+ return true;
+ }
+
+ ///////// GESTURE METHODS //////////
+
+
+ @Override
+ public boolean onTouchEvent(MotionEvent event) {
+ this.gestureDetector.onTouchEvent(event);
+ return super.onTouchEvent(event);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.menu_main, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ // Handle action bar item clicks here. The action bar will
+ // automatically handle clicks on the Home/Up button, so long
+ // as you specify a parent activity in AndroidManifest.xml.
+ int id = item.getItemId();
+
+ //noinspection SimplifiableIfStatement
+ if (id == R.id.action_settings) {
+ return true;
+ }
+
+ return super.onOptionsItemSelected(item);
+ }
+}
diff --git a/Android_Beginners/021-022_Gestures App/activity_main.xml b/Android_Beginners/021-022_Gestures App/activity_main.xml
new file mode 100644
index 0000000..7da4044
--- /dev/null
+++ b/Android_Beginners/021-022_Gestures App/activity_main.xml
@@ -0,0 +1,16 @@
+
+
+
+
diff --git a/Android_Beginners/023-030_DankMeme/java/BottomPictureFragment.java b/Android_Beginners/023-030_DankMeme/java/BottomPictureFragment.java
new file mode 100644
index 0000000..ad9ce47
--- /dev/null
+++ b/Android_Beginners/023-030_DankMeme/java/BottomPictureFragment.java
@@ -0,0 +1,30 @@
+package aybars.arslan.fragments;
+
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+
+public class BottomPictureFragment extends Fragment {
+
+ private static TextView txtTop;
+ private static TextView txtBottom;
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+ View view = inflater.inflate(R.layout.bottom_picture_fragment, container, false);
+ txtTop = (TextView)view.findViewById(R.id.txtTop);
+ txtBottom = (TextView)view.findViewById(R.id.txtBottom);
+ return view;
+ }
+
+ public void setClickedText(String top, String bottom){
+ txtTop.setText(top);
+ txtBottom.setText(bottom);
+ }
+
+}
diff --git a/Android_Beginners/023-030_DankMeme/java/MainActivity.java b/Android_Beginners/023-030_DankMeme/java/MainActivity.java
new file mode 100644
index 0000000..34d0fad
--- /dev/null
+++ b/Android_Beginners/023-030_DankMeme/java/MainActivity.java
@@ -0,0 +1,47 @@
+package aybars.arslan.fragments;
+
+import android.support.v7.app.ActionBarActivity;
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.MenuItem;
+
+
+
+public class MainActivity extends ActionBarActivity implements TopSectionFragment.TopSectionListener {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ }
+
+ //This code called by the Top Fragment called when the user clicked the button
+ @Override
+ public void createClick(String top, String bottom) {
+ BottomPictureFragment bottomFragment = (BottomPictureFragment)getSupportFragmentManager().findFragmentById(R.id.fragment2);
+ bottomFragment.setClickedText(top, bottom);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.menu_main, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ // Handle action bar item clicks here. The action bar will
+ // automatically handle clicks on the Home/Up button, so long
+ // as you specify a parent activity in AndroidManifest.xml.
+ int id = item.getItemId();
+
+ //noinspection SimplifiableIfStatement
+ if (id == R.id.action_settings) {
+ return true;
+ }
+
+ return super.onOptionsItemSelected(item);
+ }
+
+}
diff --git a/Android_Beginners/023-030_DankMeme/java/TopSectionFragment.java b/Android_Beginners/023-030_DankMeme/java/TopSectionFragment.java
new file mode 100644
index 0000000..59cabae
--- /dev/null
+++ b/Android_Beginners/023-030_DankMeme/java/TopSectionFragment.java
@@ -0,0 +1,60 @@
+package aybars.arslan.fragments;
+
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.app.Activity;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class TopSectionFragment extends Fragment {
+
+ private static EditText etTopTextInput;
+ private static EditText etBottomTextInput;
+
+ TopSectionListener activityCommander;
+
+ public interface TopSectionListener{
+ public void createClick(String top, String bottom);
+ }
+
+ @Override
+ public void onAttach(Activity activity) {
+ super.onAttach(activity);
+ try{
+ activityCommander = (TopSectionListener) activity;
+ }catch (ClassCastException e){
+ throw new ClassCastException(activity.toString());
+ }
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+ View view = inflater.inflate(R.layout.top_section_fragment, container, false);
+
+ etTopTextInput = (EditText)view. findViewById(R.id.etTopTextInput);
+ etBottomTextInput = (EditText)view.findViewById(R.id.etBottomTextInput);
+
+ final Button button = (Button)view.findViewById(R.id.btn);
+
+ button.setOnClickListener(
+ new View.OnClickListener(){
+
+ @Override
+ public void onClick(View v) {
+ buttonClicked(v);
+ }
+ }
+ );
+
+ return view;
+ }
+
+ //Calls this when button clicked
+ public void buttonClicked(View view){
+ activityCommander.createClick(etTopTextInput.getText().toString(), etBottomTextInput.getText().toString());
+ }
+}
diff --git a/Android_Beginners/023-030_DankMeme/res/activity_main.xml b/Android_Beginners/023-030_DankMeme/res/activity_main.xml
new file mode 100644
index 0000000..f425ba4
--- /dev/null
+++ b/Android_Beginners/023-030_DankMeme/res/activity_main.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
diff --git a/Android_Beginners/023-030_DankMeme/res/bottom_picture_fragment.xml b/Android_Beginners/023-030_DankMeme/res/bottom_picture_fragment.xml
new file mode 100644
index 0000000..bf21d65
--- /dev/null
+++ b/Android_Beginners/023-030_DankMeme/res/bottom_picture_fragment.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android_Beginners/023-030_DankMeme/res/top_section_fragment.xml b/Android_Beginners/023-030_DankMeme/res/top_section_fragment.xml
new file mode 100644
index 0000000..046d2d0
--- /dev/null
+++ b/Android_Beginners/023-030_DankMeme/res/top_section_fragment.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android_Beginners/037_SendingBroadcastIntents/MainActivity.java b/Android_Beginners/037_SendingBroadcastIntents/MainActivity.java
new file mode 100644
index 0000000..72b66e6
--- /dev/null
+++ b/Android_Beginners/037_SendingBroadcastIntents/MainActivity.java
@@ -0,0 +1,48 @@
+package com.thenewboston.sendbroadcast;
+
+import android.support.v7.app.ActionBarActivity;
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.content.Intent;
+import android.view.View;
+
+
+public class MainActivity extends ActionBarActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ }
+
+ public void sendBroadcast(View view){
+ Intent i = new Intent();
+ i.setAction("com.thenewboston.sendbroadcast");
+ i.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
+ sendBroadcast(i);
+ }
+
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.menu_main, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ // Handle action bar item clicks here. The action bar will
+ // automatically handle clicks on the Home/Up button, so long
+ // as you specify a parent activity in AndroidManifest.xml.
+ int id = item.getItemId();
+
+ //noinspection SimplifiableIfStatement
+ if (id == R.id.action_settings) {
+ return true;
+ }
+
+ return super.onOptionsItemSelected(item);
+ }
+}
diff --git a/Android_Beginners/037_SendingBroadcastIntents/activity_main.xml b/Android_Beginners/037_SendingBroadcastIntents/activity_main.xml
new file mode 100644
index 0000000..b6dbb84
--- /dev/null
+++ b/Android_Beginners/037_SendingBroadcastIntents/activity_main.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
diff --git a/Bootstrap/001_template.html b/Bootstrap/001_template.html
new file mode 100644
index 0000000..2d1f280
--- /dev/null
+++ b/Bootstrap/001_template.html
@@ -0,0 +1,16 @@
+
+
+
+ thenewboston
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Bootstrap/002_gridSystem.html b/Bootstrap/002_gridSystem.html
new file mode 100644
index 0000000..ef51bc0
--- /dev/null
+++ b/Bootstrap/002_gridSystem.html
@@ -0,0 +1,25 @@
+
+
+
+ thenewboston
+
+
+
+
+
+
+
+
+
+
+
3 column layout
+
+
Left
+
Middle
+
Right
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Bootstrap/003_textStyles.html b/Bootstrap/003_textStyles.html
new file mode 100644
index 0000000..0908f17
--- /dev/null
+++ b/Bootstrap/003_textStyles.html
@@ -0,0 +1,85 @@
+
+
+
+ thenewboston
+
+
+
+
+
+
+
+
+
+
+
+
+
You can highlight text with the
+ mark tags
+ if you want.
+
+
+
+
+ Sometimes I wet the bed. On purpose.
+
+
+
+
+
Things to do when you're bored
+
+ Indoors
+ - take a nap
+ - watch Netflix for 8 hours
+ Outdoors
+ - go back inside
+
+
+
+
To set the users weight use setUserWeight(374);
with an integer
+
+
+
For multiple lines of code, use the pre element:
+
+for n in range(101):
+ if(n % 4 is 0):
+ print(n)
+
+
+
+
This is supposed to define keyboard input Ctrl+Alt+Del
+
+
+
Provides build in text color classes for different events
+
This text is muted.
+
This text indicates success.
+
This text represents danger.
+
+
+
This text indicates success.
+
This text represents danger.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Bootstrap/004_tables.html b/Bootstrap/004_tables.html
new file mode 100644
index 0000000..b0ad3b3
--- /dev/null
+++ b/Bootstrap/004_tables.html
@@ -0,0 +1,102 @@
+
+
+
+ thenewboston
+
+
+
+
+
+
+
+
+
+
+
Simple Table
+
+
+
+ Name
+ Age
+ Points
+
+
+
+
+ Bucky Roberts
+ 74
+ 8,760
+
+
+ Turd McGurd
+ 13
+ 5
+
+
+ Chchchch Idunno
+ 18
+ 32
+
+
+
+
+
Condensed Table
+
+
+
+ Name
+ Age
+ Points
+
+
+
+
+ Bucky Roberts
+ 74
+ 8,760
+
+
+ Turd McGurd
+ 13
+ 5
+
+
+ Chchchch Idunno
+ 18
+ 32
+
+
+
+
+
Striped Table
+
+
+
+ Name
+ Age
+ Points
+
+
+
+
+ Bucky Roberts
+ 74
+ 8,760
+
+
+ Turd McGurd
+ 13
+ 5
+
+
+ Chchchch Idunno
+ 18
+ 32
+
+
+
+
+
+
+
+
diff --git a/Bootstrap/005_imagesAndVideo.html b/Bootstrap/005_imagesAndVideo.html
new file mode 100644
index 0000000..4c7478b
--- /dev/null
+++ b/Bootstrap/005_imagesAndVideo.html
@@ -0,0 +1,33 @@
+
+
+
+ thenewboston
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ VIDEO
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Bootstrap/006_navbar.html b/Bootstrap/006_navbar.html
new file mode 100644
index 0000000..1d8a40f
--- /dev/null
+++ b/Bootstrap/006_navbar.html
@@ -0,0 +1,34 @@
+
+
+
+ thenewboston
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Bootstrap/007_dropDownMenu.html b/Bootstrap/007_dropDownMenu.html
new file mode 100644
index 0000000..bceacad
--- /dev/null
+++ b/Bootstrap/007_dropDownMenu.html
@@ -0,0 +1,50 @@
+
+
+
+ thenewboston
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Bootstrap/008_navbarToggleButton.html b/Bootstrap/008_navbarToggleButton.html
new file mode 100644
index 0000000..6128292
--- /dev/null
+++ b/Bootstrap/008_navbarToggleButton.html
@@ -0,0 +1,38 @@
+
+
+
+ thenewboston
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Bootstrap/009_wells.html b/Bootstrap/009_wells.html
new file mode 100644
index 0000000..f578e8d
--- /dev/null
+++ b/Bootstrap/009_wells.html
@@ -0,0 +1,39 @@
+
+
+
+ thenewboston
+
+
+
+
+
+
+
+
+
+
+
Wells are sections with border and grey background
+
+
Basic Well
+
Small Well
+
+
+ Congratulations, you just won the game!
+
+
+
+
+
×
+ Don't forget Kelly's birthday is today!
+
+
+
+
+
×
+ Are you sure you want to delete your account?
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Bootstrap/012_differentDeviceLayouts.html b/Bootstrap/012_differentDeviceLayouts.html
new file mode 100644
index 0000000..9de2a47
--- /dev/null
+++ b/Bootstrap/012_differentDeviceLayouts.html
@@ -0,0 +1,66 @@
+
+
+
+ thenewboston
+
+
+
+
+
+
+
+
+
+
+
+
Entire with on larger devices, 1/2 on small ones
+
+
+
Curabitur tellus diam, pharetra quis libero sit amet, finibus suscipit diam. Etiam felis dui, fermentum in est congue, tempus efficitur enim. Donec vitae venenatis neque, vel commodo ipsum. Etiam quis tellus tortor. Morbi porttitor tempor mauris in facilisis. Aliquam eget sapien consequat, finibus lectus nec, pulvinar justo. Mauris in consectetur lacus, in luctus turpis. Aenean eget velit ipsum. Sed elit enim, ullamcorper ac orci ac, fringilla interdum est. Praesent nec nisi ultrices lorem ullamcorper congue. Vivamus sed gravida metus, ut auctor nisl. Aliquam sollicitudin fringilla justo id facilisis.
+
+
+
+
+
Columns start at 50% wide on mobile and bump up to 33.3% wide on desktop
+
+
+
1/3 desktop, 1/2 mobile
+
1/3 desktop, 1/2 mobile
+
1/3 desktop, 1/2 mobile
+
+
+
+
+
Offsetting Columns
+
+
+
+
+
Nested Rows
+
+
+
+ I am the main parent
+
+
+
+
+ child 1
+
+
+ child 2
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Bootstrap/013_pushAndPull.html b/Bootstrap/013_pushAndPull.html
new file mode 100644
index 0000000..2834142
--- /dev/null
+++ b/Bootstrap/013_pushAndPull.html
@@ -0,0 +1,40 @@
+
+
+
+ thenewboston
+
+
+
+
+
+
+
+
+
+
+
Push and pull
+
+
+
+
+
+ Content A - MAIN BANNER
+
+
+
+
+ Content B
+
+
+
+ Content C
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Bootstrap/014_loginModal.html b/Bootstrap/014_loginModal.html
new file mode 100644
index 0000000..ec53018
--- /dev/null
+++ b/Bootstrap/014_loginModal.html
@@ -0,0 +1,54 @@
+
+
+
+ thenewboston
+
+
+
+
+
+
+
+
+
+
+
Log In Demo
+
+
+ Open Modal
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Bootstrap/landing/index.html b/Bootstrap/landing/index.html
new file mode 100644
index 0000000..2e979f7
--- /dev/null
+++ b/Bootstrap/landing/index.html
@@ -0,0 +1,144 @@
+
+
+
+ thenewboston
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Welcome to thenewboston
+
Social Network for Programmers
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Write and Drink Tea with Sweaters
+
+ A special thanks to Death to the Stock Photo for providing the photographs that
+ you see in this template. Visit their website to become a member.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This Girl is Hot
+
+ A special thanks to Death to the Stock Photo for providing the photographs that
+ you see in this template. Visit their website to become a member.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Bootstrap/landing/landing.css b/Bootstrap/landing/landing.css
new file mode 100644
index 0000000..ca8e102
--- /dev/null
+++ b/Bootstrap/landing/landing.css
@@ -0,0 +1,110 @@
+body,
+html {
+ width: 100%;
+ height: 100%;
+}
+
+body,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-family: 'Droid Sans', sans-serif;
+ font-weight: bold;
+}
+
+.topnav {
+ font-size: 14px;
+}
+
+/* Have padding top so banner image doesn't overlap top nav */
+.intro-banner {
+ padding-top: 50px;
+ padding-bottom: 50px;
+ text-align: center;
+ color: #f2f2f2;
+ background: url("wood.jpg") no-repeat center center;
+ background-size: cover;
+}
+
+.intro-inner {
+ position: relative;
+ padding-top: 20%;
+ padding-bottom: 20%;
+}
+
+.intro-inner > h1 {
+ margin: 0;
+ text-shadow: 2px 2px 3px rgba(0, 0, 0, 0.6);
+ font-size: 5em;
+}
+
+.intro-divider {
+ width: 400px;
+ border-top: 1px solid #f2f2f2;
+ border-bottom: 1px solid rgba(0, 0, 0, 0.2);
+}
+
+.intro-inner > h3 {
+ text-shadow: 2px 2px 3px rgba(0, 0, 0, 0.6);
+}
+
+/* Special paragraphs that stand out */
+.lead {
+ font-size: 20px;
+}
+
+/* For smaller devices */
+@media (max-width: 767px) {
+ .intro-inner {
+ padding-bottom: 15%;
+ }
+
+ .intro-inner > h1 {
+ font-size: 3em;
+ }
+
+ ul.intro-social-buttons > li {
+ display: block;
+ margin-bottom: 20px;
+ padding: 0;
+ }
+
+ ul.intro-social-buttons > li:last-child {
+ margin-bottom: 0;
+ }
+
+ .intro-divider {
+ width: 100%;
+ }
+}
+
+.button-title {
+ font-family: 'Architects Daughter', cursive;
+ font-size: 18px;
+}
+
+.content-section-a {
+ padding: 50px 0;
+ background-color: #f2f2f2;
+}
+
+.content-section-b {
+ padding: 50px 0;
+ border-top: 1px solid #e3e3e3;
+ border-bottom: 1px solid #e3e3e3;
+}
+
+/* hr */
+.section-heading-spacer {
+ float: left;
+ width: 200px;
+ border-top: 3px solid #e3e3e3;
+}
+
+/* Little paragraph snippet sections */
+.section-heading {
+ margin-bottom: 30px;
+}
diff --git a/Bootstrap/landing/wood.jpg b/Bootstrap/landing/wood.jpg
new file mode 100644
index 0000000..43a4f94
Binary files /dev/null and b/Bootstrap/landing/wood.jpg differ
diff --git a/Bootstrap/sidebar/index.html b/Bootstrap/sidebar/index.html
new file mode 100644
index 0000000..5a0c1ea
--- /dev/null
+++ b/Bootstrap/sidebar/index.html
@@ -0,0 +1,74 @@
+
+
+
+ thenewboston
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sidebar Layouts are Cool
+
I love apple pie. I love apple pie. I love apple pie. I love apple pie. I love apple pie.
+ I love apple pie. I love apple pie. I love apple pie. I love apple pie. I love apple pie.
+ I love apple pie. I love apple pie. I love apple pie. I love apple pie. I love apple pie.
+ I love apple pie. I love apple pie. I love apple pie. I love apple pie. I love apple pie.
+ I love apple pie. I love apple pie. I love apple pie. I love apple pie. I love apple pie.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Bootstrap/sidebar/sidebar.css b/Bootstrap/sidebar/sidebar.css
new file mode 100644
index 0000000..405f906
--- /dev/null
+++ b/Bootstrap/sidebar/sidebar.css
@@ -0,0 +1,52 @@
+/* Sidebar */
+#sidebar-wrapper {
+ z-index: 1;
+ position: absolute;
+ width: 0;
+ height: 100%;
+ overflow-y: hidden;
+ background: #2C3E50;
+ border: 2px solid red;
+ opacity: 0.9;
+}
+
+/* Always take up entire screen */
+#page-content-wrapper {
+ width: 100%;
+ position: absolute;
+ padding: 15px;
+ border: 5px solid blue;
+}
+
+
+/* Change with of sidebar from 0 to 250px */
+#wrapper.menuDisplayed #sidebar-wrapper {
+ width: 250px;
+}
+
+/* Since we added left padding, we need to shrink the width by 250px */
+#wrapper.menuDisplayed #page-content-wrapper {
+ padding-left: 250px;
+}
+
+
+/* Sidebar styling - the entire ul list */
+.sidebar-nav {
+ padding: 0;
+ list-style: none;
+}
+
+.sidebar-nav li {
+ text-indent: 20px;
+ line-height: 40px;
+}
+
+.sidebar-nav li a {
+ display: block;
+ text-decoration: none;
+ color: #ddd;
+}
+
+.sidebar-nav li a:hover {
+ background: #16A085;
+}
diff --git a/C++/42_cppBeginners.cpp b/C++/42_cppBeginners.cpp
new file mode 100644
index 0000000..043548e
--- /dev/null
+++ b/C++/42_cppBeginners.cpp
@@ -0,0 +1,38 @@
+//This is Sally.h file
+#ifndef SALLY_H
+#define SALLY_H
+
+class Sally
+{
+ public:
+ Sally();
+ void printCrap();
+ protected:
+ private:
+};
+#endif // SALLY_H
+
+//This is Sally.cpp file
+#include "Sally.h"
+#include
+using namespace std;
+
+Sally::Sally()
+{
+}
+void Sally::printCrap(){
+ cout<< "did someone say steak?"<
+#include "Sally.h"
+using namespace std;
+
+int main(){
+ Sally sallyObject;
+ Sally *sallyPointer = &sallyObject;
+
+ sallyObject.printCrap();
+ sallyPointer->printCrap();
+}
\ No newline at end of file
diff --git a/C++/43_cppBeginners.cpp b/C++/43_cppBeginners.cpp
new file mode 100644
index 0000000..f2f8c4b
--- /dev/null
+++ b/C++/43_cppBeginners.cpp
@@ -0,0 +1,39 @@
+//This is Sally.h file
+#ifndef SALLY_H
+#define SALLY_H
+
+class Sally
+{
+ public:
+ Sally();
+ ~Sally();
+ protected:
+ private:
+};
+#endif // SALLY_H
+
+//This is Sally.cpp file
+#include "Sally.h"
+#include
+using namespace std;
+
+Sally::Sally()
+{
+ cout<< "i am the constructor" << endl;
+}
+
+Sally::~Sally()
+{
+ cout<< "i am the deconstructor" << endl;
+}
+
+//This is main.cpp file
+#include
+#include "Sally.h"
+using namespace std;
+
+int main(){
+
+ Sally so;
+ cout << "omg wtf is this on my shoe? "<
+using namespace std;
+
+Sally::Sally()
+{
+}
+
+void Sally::printShiz()
+{
+ cout << "i am a regular function"<
+#include "Sally.h"
+using namespace std;
+
+int main(){
+ Sally salObj;
+ salObj.printShiz();
+
+ const Sally constObj;
+ constObj.printShiz2();
+}
\ No newline at end of file
diff --git a/C++/45_cppBeginners.cpp b/C++/45_cppBeginners.cpp
new file mode 100644
index 0000000..fe95650
--- /dev/null
+++ b/C++/45_cppBeginners.cpp
@@ -0,0 +1,40 @@
+//This is Sally.h file
+#ifndef SALLY_H
+#define SALLY_H
+
+class Sally
+{
+ public:
+ Sally(int a,int b);
+ void print();
+ private:
+ int regVar;
+ const int constVar;
+};
+
+#endif //SALLY_H
+
+//This is Sally.cpp file
+#include "Sally.h"
+#include
+using namespace std;
+
+Sally::Sally(int a,int b)
+:regVar(a),
+constVar(b)
+{
+}
+
+void Sally::print(){
+ cout << "regular var is: " << regVar << "const varible is :" << constVar <
+#include "Sally.h"
+using namespace std;
+
+int main()
+{
+ Sally so(3,87);
+ so.print();
+}
\ No newline at end of file
diff --git a/C++/46_&47_cppBeginners.cpp b/C++/46_&47_cppBeginners.cpp
new file mode 100644
index 0000000..88c2839
--- /dev/null
+++ b/C++/46_&47_cppBeginners.cpp
@@ -0,0 +1,82 @@
+//This is Birthday.h file
+#ifndef BIRTHDAY_H
+#define BIRTHDAY_H
+
+class Birthday
+{
+ public:
+ Birthday(int m, int d,int y);
+ void printDate();
+ private:
+ int month;
+ int day;
+ int year;
+};
+
+#endif // BIRTHDAY_H
+
+//This is Birthday.cpp file
+#include "Birthday.h"
+#include
+using namespace std;
+
+Birthday::Birthday(int m, int d, int y)
+{
+ month = m;
+ day = d;
+ year = y;
+}
+
+void Birthday::printDate(){
+ cout << month << "/" << day << "/" << year <
+#include "Birthday.h"
+using namespace std;
+
+class People
+{
+ public:
+ People(string x,Birthday bo);
+ void printInfo();
+ private:
+ string name;
+ Birthday dataOfBirth;
+};
+
+#endif // PEOPLE_H
+
+//This is People.cpp file
+#include "People.h"
+#include "Birthday.h"
+#include
+using namespace std;
+
+People::People(String x,Birthday bo)
+: name(x), dataOfBirth(bo)
+{
+}
+
+void People::printInfo(){
+ cout << name << "was born on";
+ dataOfBirth.printDate();
+}
+//This is main.cpp file
+#include
+#include "Birthday.h"
+#include "People.h"
+using namespace std;
+
+int main()
+{
+ Birthday birthObj(12,28,1986);
+
+ People buckyRoberts("Bucky the King",birthObj);
+ buckyRoberts.printInfo();
+
+}
\ No newline at end of file
diff --git a/C++/48_cppBeginners.cpp b/C++/48_cppBeginners.cpp
new file mode 100644
index 0000000..fc7a5e5
--- /dev/null
+++ b/C++/48_cppBeginners.cpp
@@ -0,0 +1,25 @@
+//This is main.cpp file
+#include
+using namespace std;
+
+class StankFist{
+ public:
+ StankFist()(stinkyVar=0;)
+ private:
+ int stinkyVar;
+
+ friend void stinkysFriend(StankFist &sfo);
+};
+
+void stinkysFriend(StankFist &sfo)
+{
+ sfo.stinkyVar=99;
+ cout << sfo.stinkyVar <
+#include "Hannah.h"
+using namespace std;
+
+Hannah::Hannah(int num)
+:h(num)
+{
+}
+
+void Hannah::printCrap(){
+ cout << "h=" << h <h=" << this->h <
+#include "Hannah.h"
+using namespace std;
+
+int main(){
+ Hannah ho(23);
+ ho.printCrap();
+}
\ No newline at end of file
diff --git a/C++/50_51_cppBeginners.h b/C++/50_51_cppBeginners.h
new file mode 100644
index 0000000..79e8e83
--- /dev/null
+++ b/C++/50_51_cppBeginners.h
@@ -0,0 +1,43 @@
+//This is Sally.h file
+#ifndef SALLY_H
+#define SALLY_H
+
+class Sally
+{
+ public:
+ int num;
+ Sally();
+ Sally(int);
+ Sally operator+(Sally);
+}
+//This is Sally.cpp file
+#include
+#include "Sally.h"
+using namespace std;
+
+Sally::Sally()
+{
+}
+
+Sally::Sally(int a){
+ num = a;
+}
+Sally Sally::operator+(Sally aso){
+ Sally brandNew;
+ brandNew.num = num + aso.num;
+ return(brandNew);
+}
+//This is main.cpp file
+#include
+#include "Sally.h"
+using namespace std;
+
+int main()
+{
+ Sally a(34);
+ Sally b(21);
+ Sally c;
+ c=a+b;
+ cout << c.num << endl;
+
+}
diff --git a/C++/52_cppBeginners.cpp b/C++/52_cppBeginners.cpp
new file mode 100644
index 0000000..607d974
--- /dev/null
+++ b/C++/52_cppBeginners.cpp
@@ -0,0 +1,59 @@
+//This is Mother.h file
+#ifndef MOTHER_H
+#define MOTHER_H
+
+class Mother
+{
+ public:
+ Mother();
+ void sayName();
+};
+
+#endif // MOTHER_H
+
+//This is Mother.cpp file
+#include
+#include "Mother.h"
+#include "Daughter.h"
+using namespace std;
+
+Mother::Mother()
+{
+}
+
+void Mother::sayName(){
+ cout << "I am a RobnertsQ" << endl;
+}
+
+//This is Daughter.h file
+#ifndef DAUGHTER_H
+#define DAUGHTER_H
+
+class Daughter: public Mother
+{
+ public:
+ Daughter();
+};
+
+#endif // DAUGHTER_H
+
+//This is Daughter.cpp file
+#include
+#include "Mother.h"
+#include "Daughter.h"
+using namespace std;
+
+Daughter::Daughter()
+{
+}
+//This is main.cpp file
+#include
+#include "Mother.h"
+#include "Daughter.h"
+using namespace std;
+
+int main(){
+
+ Daughter tina;
+ tina.sayName();
+}
diff --git a/C++/53_cppBeginners.cpp b/C++/53_cppBeginners.cpp
new file mode 100644
index 0000000..73a0401
--- /dev/null
+++ b/C++/53_cppBeginners.cpp
@@ -0,0 +1,57 @@
+//This is Mother.h file
+#ifndef MOTHER_H
+#define MOTHER_H
+
+class Mother
+{
+ public:
+ int publicv;
+ protected:
+ int protectedv;
+ private:
+ int privatev;
+};
+
+#endif // MOTHER_H
+
+//This is Mother.cpp file
+#include
+#include "Mother.h"
+#include "Daughter.h"
+using namespace std;
+
+//This is Daughter.h file
+#ifndef DAUGHTER_H
+#define DAUGHTER_H
+
+class Daughter: public Mother
+{
+ public:
+ void dosomething();
+};
+
+#endif // DAUGHTER_H
+
+//This is Daughter.cpp file
+#include
+#include "Mother.h"
+#include "Daughter.h"
+using namespace std;
+
+void Daughter::dosomething()
+{
+ publicv = 1;
+ protected = 2;
+}
+//This is main.cpp file
+#include
+#include "Mother.h"
+#include "Daughter.h"
+using namespace std;
+
+int main(){
+
+ Daughter tina;
+ tina.dosomething();
+}
+
\ No newline at end of file
diff --git a/C++/54_cppBeginners.cpp b/C++/54_cppBeginners.cpp
new file mode 100644
index 0000000..e6d825f
--- /dev/null
+++ b/C++/54_cppBeginners.cpp
@@ -0,0 +1,62 @@
+//This is Mother.h file
+#ifndef MOTHER_H
+#define MOTHER_H
+
+class Mother
+{
+ public:
+ Mother();
+ ~Mother();
+};
+
+#endif // MOTHER_H
+
+//This is Mother.cpp file
+#include
+#include "Mother.h"
+#include "Daughter.h"
+using namespace std;
+
+Mother::Mother(){
+ cout<< "I am the mother constructor!" << endl;
+}
+
+Mother::~Mother(){
+ cout<< "mother deconstructor!" << endl;
+}
+//This is Daughter.h file
+#ifndef DAUGHTER_H
+#define DAUGHTER_H
+
+class Daughter: public Mother
+{
+ public:
+ Daughter();
+ ~Daughter();
+};
+
+#endif // DAUGHTER_H
+
+//This is Daughter.cpp file
+#include
+#include "Mother.h"
+#include "Daughter.h"
+using namespace std;
+
+void Daughter::dosomething()
+{
+ publicv = 1;
+ protected = 2;
+}
+//This is main.cpp file
+#include
+#include "Mother.h"
+#include "Daughter.h"
+using namespace std;
+
+int main(){
+
+ Daughter tina;
+
+}
+
\ No newline at end of file
diff --git a/C++/55_cppBeginners.cpp b/C++/55_cppBeginners.cpp
new file mode 100644
index 0000000..768f059
--- /dev/null
+++ b/C++/55_cppBeginners.cpp
@@ -0,0 +1,33 @@
+#include
+using namespace std;
+
+class Enemy{
+ protected:
+ int attackPower;
+ public:
+ void setAttackPower(int a){
+ attackPower=a;
+ }
+};
+class Ninja: public Enemy{
+ public:
+ void attack()
+ {cout << "i am a ninja, ninja chop! -" << attackPower <setAttackPower(29);
+ enemy2->setAttackPower(99);
+ n.attack();
+ m.attack();
+}
diff --git a/C++/56_cppBeginners.cpp b/C++/56_cppBeginners.cpp
new file mode 100644
index 0000000..be5d70d
--- /dev/null
+++ b/C++/56_cppBeginners.cpp
@@ -0,0 +1,29 @@
+#include
+using namespace std;
+
+class Enemy{
+ public:
+ virtual void attack(){}
+
+};
+class Ninja: public Enemy{
+ public:
+ void attack()
+ {cout << "ninja attack!" <attack();
+ enemy2->attack();
+
+}
diff --git a/C++/57_cppBeginners.cpp b/C++/57_cppBeginners.cpp
new file mode 100644
index 0000000..53a3423
--- /dev/null
+++ b/C++/57_cppBeginners.cpp
@@ -0,0 +1,29 @@
+#include
+using namespace std;
+
+class Enemy{
+ public:
+ virtual void attack()=0;
+
+};
+class Ninja: public Enemy{
+ public:
+ void attack()
+ {cout << "ninja attack!" <attack();
+ enemy2->attack();
+
+}
diff --git a/C++/58_cppBeginners.cpp b/C++/58_cppBeginners.cpp
new file mode 100644
index 0000000..56c30e8
--- /dev/null
+++ b/C++/58_cppBeginners.cpp
@@ -0,0 +1,15 @@
+#include
+using namespace std;
+
+template
+bucky addCrap(bucky a, bucky b)
+{
+return a+b;
+}
+
+int main()
+{
+ int x=7, y=43,z;
+ z=addCrap(x,y);
+ cout << z <
+using namespace std;
+
+template
+
+FIRST smaller(FIRST a, SECOND b)
+{
+return (a
+using namespace std;
+
+template
+class Bucky{
+ T first, second;
+ public:
+ Bucky(T a, T b)
+ {
+ first=a;
+ second=b;
+ }
+ T bigger();
+};
+template
+T Bucky::bigger()
+{
+return (first>second?first:second);
+}
+
+int main()
+{
+ Bucky bo(258, 105);
+ cout << bo.bigger();
+}
\ No newline at end of file
diff --git a/C++/61_cppBeginners.cpp b/C++/61_cppBeginners.cpp
new file mode 100644
index 0000000..c7e8b46
--- /dev/null
+++ b/C++/61_cppBeginners.cpp
@@ -0,0 +1,26 @@
+#include
+using namespace std;
+
+template
+class Spunky{
+ public:
+ Spunky(T x)
+ {
+ cout << x << " is not a character!" << endl;
+ }
+};
+template <>
+class Spunky{
+ public:
+ Spunky(char x)
+ {
+ cout << x << " is needed character!" << endl;
+ }
+};
+int main()
+{
+ Spunky obj1(7;
+ Spunky obj2(3.154);
+ Spunky obj3('q');
+
+}
\ No newline at end of file
diff --git a/C++/62_cppBeginners.cpp b/C++/62_cppBeginners.cpp
new file mode 100644
index 0000000..5e9c928
--- /dev/null
+++ b/C++/62_cppBeginners.cpp
@@ -0,0 +1,18 @@
+#include
+using namespace std;
+
+int main()
+{
+ try{
+ int momsAge = 30;
+ int sonsAge = 34;
+
+ if(sonsAge > momsAge)
+ {
+ throw 99;
+ }
+ }catch(int x);
+ cout << "son can not be older than mom ERROR NUMBER :" << x << endl;
+ }
+
+}
diff --git a/C++/63_cppBeginners.cpp b/C++/63_cppBeginners.cpp
new file mode 100644
index 0000000..179045a
--- /dev/null
+++ b/C++/63_cppBeginners.cpp
@@ -0,0 +1,25 @@
+#include
+using namespace std;
+
+int main()
+{
+ try {
+
+ int num1;
+ cout << "Enter first number :" << endl;
+ cin>> num1;
+
+ int num2;
+ cout << "Enter second number :" << endl;
+ cin>> num2;
+
+ if(num2 == 0){
+ throw 0;
+
+ }
+
+ cout << num1/num2 << endl;
+ }catch(int x){
+ cout << "you cant divide by 0" << x << endl;
+ }
+}
\ No newline at end of file
diff --git a/C++/64_cppBeginners.cpp b/C++/64_cppBeginners.cpp
new file mode 100644
index 0000000..f392790
--- /dev/null
+++ b/C++/64_cppBeginners.cpp
@@ -0,0 +1,12 @@
+#include
+#include
+using namespace std;
+
+int main()
+{
+ ofstream buckyFile;
+ buckyFile.open("tuna.txt");
+
+ buckyFile << "I love tuna and tuna loves me!\n";
+ buckyFile.close();
+}
\ No newline at end of file
diff --git a/C++/65_cppBeginners.cpp b/C++/65_cppBeginners.cpp
new file mode 100644
index 0000000..c3fef9f
--- /dev/null
+++ b/C++/65_cppBeginners.cpp
@@ -0,0 +1,17 @@
+#include
+#include
+using namespace std;
+
+int main()
+{
+ ofstream buckysFile("beefjerky.txt");
+
+ if(buckysFile.is_open()){
+ cout << "okt he file is open" <
+#include
+using namespace std;
+
+int main()
+{
+ ofstream theFile("players.txt");
+
+ cout << "Enter palyers ID, Name, and Money" << endl;
+ cout << "press Ctrl+Z to quit\n" <> idNumber >> name >> money)
+ {
+ theFile <
+#include
+using namespace std;
+
+int main()
+{
+ ifstream theFile("players.txt");
+
+ int idNumber;
+ string name;
+ double money;
+
+ while(theFile >> idNumber >> name >> money)
+ {
+ cout <
+#include
+using namespace std;
+
+int getWhatTheyWant();
+
+//main function
+
+int main(){
+
+ int whatTheyWant;
+
+ whatTheyWant = getWhatTheyWant();
+
+ while(whatTheyWant != 4){
+
+ whatTheyWant = getWhatTheyWant();
+ }
+}
+
+//getWhatTheyWant function
+int getWhatTheyWant(){
+ int choice;
+
+ cout << "1 - just plain items" <> choice;
+ return choice;
+
+}
\ No newline at end of file
diff --git a/C++/69_cppBeginners.cpp b/C++/69_cppBeginners.cpp
new file mode 100644
index 0000000..1926b37
--- /dev/null
+++ b/C++/69_cppBeginners.cpp
@@ -0,0 +1,76 @@
+#include
+#include
+using namespace std;
+
+int getWhatTheyWant();
+void displayItems(int x);
+
+//main function
+int main(){
+
+ int whatTheyWant;
+
+ whatTheyWant = getWhatTheyWant();
+
+ while(whatTheyWant != 4){
+ switch(whatTheyWant){
+ case 1:
+ displayItems(1);
+ break;
+ case 2:
+ displayItems(2);
+ break;
+ case 3:
+ displayItems(3);
+ break;
+ }
+
+ whatTheyWant = getWhatTheyWant();
+ }
+}
+
+//getWhatTheyWant function
+int getWhatTheyWant(){
+ int choice;
+
+ cout << "1 - just plain items" <> choice;
+ return choice;
+
+}
+
+//display items function
+void displayItems(int x){
+
+ ifstream objectFile("objects.txt");
+ string name;
+ double power;
+
+ if(x==1){
+ while(objectFile >> name >> power){
+ if(power==0){
+ cout << name << ' ' << power << endl;
+ }
+ }
+}
+ if(x==2){
+ while(objectFile >> name >> power){
+ if(power>0){
+ cout << name << ' ' << power << endl;
+ }
+ }
+}
+
+ if(x==3){
+ while(objectFile >> name >> power){
+ if(power<0){
+ cout << name << ' ' << power << endl;
+ }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/C++/70_cppBeginners.cpp b/C++/70_cppBeginners.cpp
new file mode 100644
index 0000000..4582e34
--- /dev/null
+++ b/C++/70_cppBeginners.cpp
@@ -0,0 +1,76 @@
+#include
+#include
+using namespace std;
+
+int getWhatTheyWant();
+void displayItems(int x);
+
+//main function
+int main(){
+
+ int whatTheyWant;
+
+ whatTheyWant = getWhatTheyWant();
+
+ while(whatTheyWant != 4){
+ switch(whatTheyWant){
+ case 1:
+ displayItems(1);
+ break;
+ case 2:
+ displayItems(2);
+ break;
+ case 3:
+ displayItems(3);
+ break;
+ }
+
+ whatTheyWant = getWhatTheyWant();
+ }
+}
+
+//getWhatTheyWant function
+int getWhatTheyWant(){
+ int choice;
+
+ cout << "\n1 - just plain items" <> choice;
+ return choice;
+
+}
+
+//display items function
+void displayItems(int x){
+
+ ifstream objectFile("objects.txt");
+ string name;
+ double power;
+
+ if(x==1){
+ while(objectFile >> name >> power){
+ if(power==0){
+ cout << name << ' ' << power << endl;
+ }
+ }
+}
+ if(x==2){
+ while(objectFile >> name >> power){
+ if(power>0){
+ cout << name << ' ' << power << endl;
+ }
+ }
+}
+
+ if(x==3){
+ while(objectFile >> name >> power){
+ if(power<0){
+ cout << name << ' ' << power << endl;
+ }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Foundation/001_template.html b/Foundation/001_template.html
new file mode 100644
index 0000000..6aaca74
--- /dev/null
+++ b/Foundation/001_template.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+ thenewboston
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Foundation/002_gridSystem.html b/Foundation/002_gridSystem.html
new file mode 100644
index 0000000..2709243
--- /dev/null
+++ b/Foundation/002_gridSystem.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+ thenewboston
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Foundation/003_dynamicLayouts.html b/Foundation/003_dynamicLayouts.html
new file mode 100644
index 0000000..86127ee
--- /dev/null
+++ b/Foundation/003_dynamicLayouts.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+ thenewboston
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Foundation/004_blockGrid.html b/Foundation/004_blockGrid.html
new file mode 100644
index 0000000..7149e2d
--- /dev/null
+++ b/Foundation/004_blockGrid.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+ thenewboston
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Foundation/005_typography.html b/Foundation/005_typography.html
new file mode 100644
index 0000000..8951345
--- /dev/null
+++ b/Foundation/005_typography.html
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+ thenewboston
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This is how you make quotes.
+ Bucky Roberts
+
+
+
Labels
+
Hey can you go to the store and pickup cream cheese?
+
+
Keystrokes
+
To make your browser faster type Alt + F4
+
+
+
+
+
+
+
+
+
diff --git a/Foundation/006_offCanvasSideMenu.html b/Foundation/006_offCanvasSideMenu.html
new file mode 100644
index 0000000..9cf9785
--- /dev/null
+++ b/Foundation/006_offCanvasSideMenu.html
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+ thenewboston
+
+
+
+
+
+
+
+
+
+
+
+
+
Toggle Menu
+
+
+
+
+
+
+
Hey now dude
+
This is some sample content
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Foundation/007_dualToggleMenuLayout.html b/Foundation/007_dualToggleMenuLayout.html
new file mode 100644
index 0000000..390839c
--- /dev/null
+++ b/Foundation/007_dualToggleMenuLayout.html
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+ thenewboston
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Bacon ipsum dolor amet pancetta prosciutto ball tip tri-tip tail salami. Tenderloin tongue ham leberkas. Filet mignon boudin doner kielbasa turducken flank ground round ham porchetta brisket t-bone alcatra venison jowl pastrami. Jerky prosciutto drumstick, ham hock beef hamburger brisket fatback alcatra pork belly rump. Shoulder frankfurter t-bone meatball, pork loin rump picanha.
+ Bacon ipsum dolor amet pancetta prosciutto ball tip tri-tip tail salami. Tenderloin tongue ham leberkas. Filet mignon boudin doner kielbasa turducken flank ground round ham porchetta brisket t-bone alcatra venison jowl pastrami. Jerky prosciutto drumstick, ham hock beef hamburger brisket fatback alcatra pork belly rump. Shoulder frankfurter t-bone meatball, pork loin rump picanha.
+ Bacon ipsum dolor amet pancetta prosciutto ball tip tri-tip tail salami. Tenderloin tongue ham leberkas. Filet mignon boudin doner kielbasa turducken flank ground round ham porchetta brisket t-bone alcatra venison jowl pastrami. Jerky prosciutto drumstick, ham hock beef hamburger brisket fatback alcatra pork belly rump. Shoulder frankfurter t-bone meatball, pork loin rump picanha.
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Foundation/008_topNavigationBar.html b/Foundation/008_topNavigationBar.html
new file mode 100644
index 0000000..542830a
--- /dev/null
+++ b/Foundation/008_topNavigationBar.html
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+ thenewboston
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Foundation/009_topNavSearchAndLeftMenu.html b/Foundation/009_topNavSearchAndLeftMenu.html
new file mode 100644
index 0000000..7cb5513
--- /dev/null
+++ b/Foundation/009_topNavSearchAndLeftMenu.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+ thenewboston
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Foundation/010_breadcrumbsAndAlerts.html b/Foundation/010_breadcrumbsAndAlerts.html
new file mode 100644
index 0000000..3f2847c
--- /dev/null
+++ b/Foundation/010_breadcrumbsAndAlerts.html
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+ thenewboston
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Your message has been sent!
+
×
+
+
+
+
+
+
+
+ Don't send nude pics to you ex!
+
×
+
+
+
+
+
+
+
+
+
+
diff --git a/Grunt/Gruntfile.js b/Grunt/Gruntfile.js
new file mode 100644
index 0000000..825d730
--- /dev/null
+++ b/Grunt/Gruntfile.js
@@ -0,0 +1,29 @@
+module.exports = function(grunt) {
+
+ grunt.initConfig({
+
+ pkg: grunt.file.readJSON('package.json'),
+ cssmin: {
+ combine: {
+ files: {
+ 'html/css/main.css': ['html/css/content.css', 'html/css/sidebar.css']
+ }
+ }
+ },
+ uglify: {
+ dist: {
+ files: {
+ 'html/js/toggle.min.js': ['html/js/toggle.js']
+ }
+ }
+ }
+ });
+
+ // Load the plugins
+ grunt.loadNpmTasks('grunt-contrib-cssmin');
+ grunt.loadNpmTasks('grunt-contrib-uglify');
+
+ // Do the tasks
+ grunt.registerTask('default', ['cssmin', 'uglify']);
+
+};
\ No newline at end of file
diff --git a/Grunt/html/css/content.css b/Grunt/html/css/content.css
new file mode 100644
index 0000000..eebd888
--- /dev/null
+++ b/Grunt/html/css/content.css
@@ -0,0 +1,9 @@
+h1{
+ color: lightseagreen;
+ font-size: 36px;
+}
+
+p{
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 20px;
+}
\ No newline at end of file
diff --git a/Grunt/html/css/sidebar.css b/Grunt/html/css/sidebar.css
new file mode 100644
index 0000000..318696e
--- /dev/null
+++ b/Grunt/html/css/sidebar.css
@@ -0,0 +1,47 @@
+/* Sidebar */
+#sidebar-wrapper{
+ z-index: 1;
+ position: absolute;
+ width: 0;
+ height: 100%;
+ overflow-y: hidden;
+ background: #2C3E50;
+}
+
+/* Always take up entire screen */
+#page-content-wrapper{
+ width: 100%;
+ position: absolute;
+ padding: 15px;
+}
+
+/* Change with of sidebar from 0 to 250px */
+#wrapper.menuDisplayed #sidebar-wrapper{
+ width: 250px;
+}
+
+/* Since we added left padding, we need to shrink the width by 250px */
+#wrapper.menuDisplayed #page-content-wrapper{
+ padding-left: 250px;
+}
+
+/* Sidebar styling - the entire ul list */
+.sidebar-nav{
+ padding: 0;
+ list-style: none;
+}
+
+.sidebar-nav li{
+ text-indent: 20px;
+ line-height: 40px;
+}
+
+.sidebar-nav li a{
+ display: block;
+ text-decoration: none;
+ color: #ddd;
+}
+
+.sidebar-nav li a:hover{
+ background: #16A085;
+}
\ No newline at end of file
diff --git a/Grunt/html/index.html b/Grunt/html/index.html
new file mode 100644
index 0000000..8f1cc65
--- /dev/null
+++ b/Grunt/html/index.html
@@ -0,0 +1,48 @@
+
+
+
+ thenewboston
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Welcome to thenewboston
+
I love apple pie. I love apple pie. I love apple pie. I love apple pie. I love apple pie.
+ I love apple pie. I love apple pie. I love apple pie. I love apple pie. I love apple pie.
+ I love apple pie. I love apple pie. I love apple pie. I love apple pie. I love apple pie.
+ I love apple pie. I love apple pie. I love apple pie. I love apple pie. I love apple pie.
+ I love apple pie. I love apple pie. I love apple pie. I love apple pie. I love apple pie.
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Grunt/html/js/toggle.js b/Grunt/html/js/toggle.js
new file mode 100644
index 0000000..5d2cae4
--- /dev/null
+++ b/Grunt/html/js/toggle.js
@@ -0,0 +1,12 @@
+$("#menu-toggle").click( function (e){
+ e.preventDefault();
+ $("#wrapper").toggleClass("menuDisplayed");
+});
+
+
+// This is just worthless JavaScript for demo purposes
+var x = myFunction(4, 3);
+
+function myFunction(a, b) {
+ return a * b;
+}
\ No newline at end of file
diff --git a/Grunt/package.json b/Grunt/package.json
new file mode 100644
index 0000000..1742a91
--- /dev/null
+++ b/Grunt/package.json
@@ -0,0 +1,14 @@
+{
+ "name": "bacon",
+ "version": "1.0.0",
+ "description": "Website about bacon",
+ "main": "index.html",
+ "author": "Bucky Roberts",
+ "devDependencies": {
+ "grunt": "^0.4.5",
+ "grunt-contrib-cssmin": "^0.12.3",
+ "grunt-contrib-less": "^1.0.1",
+ "grunt-contrib-uglify": "^0.9.1",
+ "grunt-contrib-watch": "^0.6.1"
+ }
+}
diff --git a/JavaFX/000_template/Main.java b/JavaFX/000_template/Main.java
index d1dbbb2..1a2661c 100644
--- a/JavaFX/000_template/Main.java
+++ b/JavaFX/000_template/Main.java
@@ -16,10 +16,8 @@ public static void main(String[] args) {
@Override
public void start(Stage primaryStage) throws Exception {
window = primaryStage;
- window.setTitle("Title of the Window");
-
- button = new Button();
- button.setText("Click me");
+ window.setTitle("thenewboston - JavaFX");
+ button = new Button("Click me");
StackPane layout = new StackPane();
layout.getChildren().add(button);
diff --git a/JavaFX/009_gridPane/Main.java b/JavaFX/009_gridPane/Main.java
new file mode 100644
index 0000000..c3a77aa
--- /dev/null
+++ b/JavaFX/009_gridPane/Main.java
@@ -0,0 +1,59 @@
+import javafx.application.Application;
+import javafx.geometry.Insets;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.control.Label;
+import javafx.scene.control.TextField;
+import javafx.scene.layout.GridPane;
+import javafx.stage.Stage;
+
+public class Main extends Application {
+
+ Stage window;
+
+ public static void main(String[] args) {
+ launch(args);
+ }
+
+ @Override
+ public void start(Stage primaryStage) throws Exception {
+ window = primaryStage;
+ window.setTitle("thenewboston - JavaFX");
+
+ //GridPane with 10px padding around edge
+ GridPane grid = new GridPane();
+ grid.setPadding(new Insets(10, 10, 10, 10));
+ grid.setVgap(8);
+ grid.setHgap(10);
+
+ //Name Label - constrains use (child, column, row)
+ Label nameLabel = new Label("Username:");
+ GridPane.setConstraints(nameLabel, 0, 0);
+
+ //Name Input
+ TextField nameInput = new TextField("Bucky");
+ GridPane.setConstraints(nameInput, 1, 0);
+
+ //Password Label
+ Label passLabel = new Label("Password:");
+ GridPane.setConstraints(passLabel, 0, 1);
+
+ //Password Input
+ TextField passInput = new TextField();
+ passInput.setPromptText("password");
+ GridPane.setConstraints(passInput, 1, 1);
+
+ //Login
+ Button loginButton = new Button("Log In");
+ GridPane.setConstraints(loginButton, 1, 2);
+
+ //Add everything to grid
+ grid.getChildren().addAll(nameLabel, nameInput, passLabel, passInput, loginButton);
+
+ Scene scene = new Scene(grid, 300, 200);
+ window.setScene(scene);
+ window.show();
+ }
+
+
+}
\ No newline at end of file
diff --git a/JavaFX/010_extractAndValidateInput/Main.java b/JavaFX/010_extractAndValidateInput/Main.java
new file mode 100644
index 0000000..01e5712
--- /dev/null
+++ b/JavaFX/010_extractAndValidateInput/Main.java
@@ -0,0 +1,53 @@
+import javafx.application.Application;
+import javafx.geometry.Insets;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.control.TextField;
+import javafx.scene.layout.VBox;
+import javafx.stage.Stage;
+
+public class Main extends Application {
+
+ Stage window;
+ Scene scene;
+ Button button;
+
+ public static void main(String[] args) {
+ launch(args);
+ }
+
+ @Override
+ public void start(Stage primaryStage) throws Exception {
+ window = primaryStage;
+ window.setTitle("thenewboston");
+
+ //Form
+ TextField ageInput = new TextField();
+
+ button = new Button("Click me");
+ button.setOnAction( e -> isInt(ageInput, ageInput.getText()) );
+
+ //Layout
+ VBox layout = new VBox(10);
+ layout.setPadding(new Insets(20, 20, 20, 20));
+ layout.getChildren().addAll(ageInput, button);
+
+ scene = new Scene(layout, 300, 250);
+ window.setScene(scene);
+ window.show();
+ }
+
+ //Validate age
+ private boolean isInt(TextField input, String message){
+ try{
+ int age = Integer.parseInt(input.getText());
+ System.out.println("User is: " + age);
+ return true;
+ }catch(NumberFormatException e){
+ System.out.println("Error: " + message + " is not a number");
+ return false;
+ }
+ }
+
+
+}
\ No newline at end of file
diff --git a/JavaFX/011_checkBoxes/Main.java b/JavaFX/011_checkBoxes/Main.java
new file mode 100644
index 0000000..c299fa1
--- /dev/null
+++ b/JavaFX/011_checkBoxes/Main.java
@@ -0,0 +1,57 @@
+import javafx.application.Application;
+import javafx.geometry.Insets;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.control.CheckBox;
+import javafx.scene.layout.VBox;
+import javafx.stage.Stage;
+
+public class Main extends Application {
+
+ Stage window;
+ Scene scene;
+ Button button;
+
+ public static void main(String[] args) {
+ launch(args);
+ }
+
+ @Override
+ public void start(Stage primaryStage) throws Exception {
+ window = primaryStage;
+ window.setTitle("Bucky's Meat Subs");
+
+ //Checkboxes
+ CheckBox box1 = new CheckBox();
+ CheckBox box2 = new CheckBox("Tuna");
+ box2.setSelected(true);
+
+ //Button
+ button = new Button("Order Now!");
+ button.setOnAction(e -> handleOptions(box1, box2));
+
+ //Layout
+ VBox layout = new VBox(10);
+ layout.setPadding(new Insets(20, 20, 20, 20));
+ layout.getChildren().addAll(box1, box2, button);
+
+ scene = new Scene(layout, 300, 250);
+ window.setScene(scene);
+ window.show();
+ }
+
+ //Handle checkbox options
+ private void handleOptions(CheckBox box1, CheckBox box2){
+ String message = "Users order:\n";
+
+ if(box1.isSelected())
+ message += "Bacon\n";
+
+ if(box2.isSelected())
+ message += "Tuna\n";
+
+ System.out.println(message);
+ }
+
+
+}
\ No newline at end of file
diff --git a/JavaFX/012_choiceBoxDropDownList/Main.java b/JavaFX/012_choiceBoxDropDownList/Main.java
new file mode 100644
index 0000000..98d701d
--- /dev/null
+++ b/JavaFX/012_choiceBoxDropDownList/Main.java
@@ -0,0 +1,53 @@
+import javafx.application.Application;
+import javafx.geometry.Insets;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.control.ChoiceBox;
+import javafx.scene.layout.VBox;
+import javafx.stage.Stage;
+
+public class Main extends Application {
+
+ Stage window;
+ Scene scene;
+ Button button;
+
+ public static void main(String[] args) {
+ launch(args);
+ }
+
+ @Override
+ public void start(Stage primaryStage) throws Exception {
+ window = primaryStage;
+ window.setTitle("ChoiceBox Demo");
+ button = new Button("Click me");
+
+ ChoiceBox choiceBox = new ChoiceBox<>();
+
+ //getItems returns the ObservableList object which you can add items to
+ choiceBox.getItems().add("Apples");
+ choiceBox.getItems().add("Bananas");
+ choiceBox.getItems().addAll("Bacon", "Ham", "Meatballs");
+
+ //Set a default value
+ choiceBox.setValue("Apples");
+
+ button.setOnAction(e -> getChoice(choiceBox));
+
+ VBox layout = new VBox(10);
+ layout.setPadding(new Insets(20, 20, 20, 20));
+ layout.getChildren().addAll(choiceBox, button);
+
+ scene = new Scene(layout, 300, 250);
+ window.setScene(scene);
+ window.show();
+ }
+
+ //To get the value of the selected item
+ private void getChoice(ChoiceBox choiceBox){
+ String food = choiceBox.getValue();
+ System.out.println(food);
+ }
+
+
+}
\ No newline at end of file
diff --git a/JavaFX/013_comboBox/Main.java b/JavaFX/013_comboBox/Main.java
new file mode 100644
index 0000000..edf43cc
--- /dev/null
+++ b/JavaFX/013_comboBox/Main.java
@@ -0,0 +1,53 @@
+import javafx.application.Application;
+import javafx.geometry.Insets;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.control.ComboBox;
+import javafx.scene.layout.VBox;
+import javafx.stage.Stage;
+
+public class Main extends Application {
+
+ Stage window;
+ Scene scene;
+ Button button;
+ ComboBox comboBox;
+
+ public static void main(String[] args) {
+ launch(args);
+ }
+
+ @Override
+ public void start(Stage primaryStage) throws Exception {
+ window = primaryStage;
+ window.setTitle("ComboBox Demo");
+ button = new Button("Submit");
+
+ comboBox = new ComboBox<>();
+ comboBox.getItems().addAll(
+ "Good Will Hunting",
+ "St. Vincent",
+ "Blackhat"
+ );
+
+ comboBox.setPromptText("What is your favorite movie?");
+ button.setOnAction(e -> printMovie());
+
+ //ComboBoxes also generate actions if you need to get value instantly
+ comboBox.setOnAction( e -> System.out.println("User selected " + comboBox.getValue()) );
+
+ VBox layout = new VBox(10);
+ layout.setPadding(new Insets(20, 20, 20, 20));
+ layout.getChildren().addAll(comboBox, button);
+
+ scene = new Scene(layout, 300, 250);
+ window.setScene(scene);
+ window.show();
+ }
+
+ private void printMovie(){
+ System.out.println(comboBox.getValue());
+ }
+
+
+}
\ No newline at end of file
diff --git a/JavaFX/015_listViews/Main.java b/JavaFX/015_listViews/Main.java
new file mode 100644
index 0000000..20d3643
--- /dev/null
+++ b/JavaFX/015_listViews/Main.java
@@ -0,0 +1,55 @@
+import javafx.application.Application;
+import javafx.collections.ObservableList;
+import javafx.geometry.Insets;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.control.SelectionMode;
+import javafx.scene.layout.VBox;
+import javafx.stage.Stage;
+import javafx.scene.control.ListView;
+
+public class Main extends Application {
+
+ Stage window;
+ Scene scene;
+ Button button;
+ ListView listView;
+
+ public static void main(String[] args) {
+ launch(args);
+ }
+
+ @Override
+ public void start(Stage primaryStage) throws Exception {
+ window = primaryStage;
+ window.setTitle("ListView Demo");
+ button = new Button("Submit");
+
+ listView = new ListView<>();
+ listView.getItems().addAll("Iron Man", "Titanic", "Contact", "Surrogates");
+ listView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
+
+ button.setOnAction(e -> buttonClicked());
+
+ VBox layout = new VBox(10);
+ layout.setPadding(new Insets(20, 20, 20, 20));
+ layout.getChildren().addAll(listView, button);
+
+ scene = new Scene(layout, 300, 250);
+ window.setScene(scene);
+ window.show();
+ }
+
+ private void buttonClicked(){
+ String message = "";
+ ObservableList movies;
+ movies = listView.getSelectionModel().getSelectedItems();
+
+ for(String m: movies)
+ message += m + "\n";
+
+ System.out.println(message);
+ }
+
+
+}
\ No newline at end of file
diff --git a/JavaFX/016_treeView/Main.java b/JavaFX/016_treeView/Main.java
new file mode 100644
index 0000000..cf414e3
--- /dev/null
+++ b/JavaFX/016_treeView/Main.java
@@ -0,0 +1,65 @@
+import javafx.application.Application;
+import javafx.scene.Scene;
+import javafx.scene.control.TreeItem;
+import javafx.scene.control.TreeView;
+import javafx.scene.layout.StackPane;
+import javafx.stage.Stage;
+
+public class Main extends Application {
+
+ Stage window;
+ TreeView tree;
+
+ public static void main(String[] args) {
+ launch(args);
+ }
+
+ @Override
+ public void start(Stage primaryStage) {
+ window = primaryStage;
+ window.setTitle("JavaFX - thenewboston");
+
+ TreeItem root, bucky, megan;
+
+ //Root
+ root = new TreeItem<>();
+ root.setExpanded(true);
+
+ //Bucky
+ bucky = makeBranch("Bucky", root);
+ makeBranch("thenewboston", bucky);
+ makeBranch("YouTube", bucky);
+ makeBranch("Chicken", bucky);
+
+ //Megan
+ megan = makeBranch("Megan", root);
+ makeBranch("Glitter", megan);
+ makeBranch("Makeup", megan);
+
+ //Create the tree and hide the main Root
+ tree = new TreeView<>(root);
+ tree.setShowRoot(false);
+ tree.getSelectionModel().selectedItemProperty()
+ .addListener((v, oldValue, newValue) -> {
+ if (newValue != null)
+ System.out.println(newValue.getValue());
+ });
+
+ //Layout
+ StackPane layout = new StackPane();
+ layout.getChildren().add(tree);
+ Scene scene = new Scene(layout, 300, 250);
+ window.setScene(scene);
+ window.show();
+ }
+
+ //Create branches
+ public TreeItem makeBranch(String title, TreeItem parent) {
+ TreeItem item = new TreeItem<>(title);
+ item.setExpanded(true);
+ parent.getChildren().add(item);
+ return item;
+ }
+
+
+}
\ No newline at end of file
diff --git a/JavaFX/018_tableView/Main.java b/JavaFX/018_tableView/Main.java
new file mode 100644
index 0000000..2b25235
--- /dev/null
+++ b/JavaFX/018_tableView/Main.java
@@ -0,0 +1,68 @@
+import javafx.application.Application;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.geometry.Insets;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.TableView;
+import javafx.scene.control.TextField;
+import javafx.scene.control.cell.PropertyValueFactory;
+import javafx.scene.layout.HBox;
+import javafx.scene.layout.VBox;
+import javafx.stage.Stage;
+
+public class Main extends Application {
+
+ Stage window;
+ TableView table;
+
+ public static void main(String[] args) {
+ launch(args);
+ }
+
+ @Override
+ public void start(Stage primaryStage) throws Exception {
+ window = primaryStage;
+ window.setTitle("thenewboston - JavaFX");
+
+ //Name column
+ TableColumn nameColumn = new TableColumn<>("Name");
+ nameColumn.setMinWidth(200);
+ nameColumn.setCellValueFactory(new PropertyValueFactory<>("name"));
+
+ //Price column
+ TableColumn priceColumn = new TableColumn<>("Price");
+ priceColumn.setMinWidth(100);
+ priceColumn.setCellValueFactory(new PropertyValueFactory<>("price"));
+
+ //Quantity column
+ TableColumn quantityColumn = new TableColumn<>("Quantity");
+ quantityColumn.setMinWidth(100);
+ quantityColumn.setCellValueFactory(new PropertyValueFactory<>("quantity"));
+
+ table = new TableView<>();
+ table.setItems(getProduct());
+ table.getColumns().addAll(nameColumn, priceColumn, quantityColumn);
+
+ VBox vBox = new VBox();
+ vBox.getChildren().addAll(table);
+
+ Scene scene = new Scene(vBox);
+ window.setScene(scene);
+ window.show();
+ }
+
+ //Get all of the products
+ public ObservableList getProduct(){
+ ObservableList products = FXCollections.observableArrayList();
+ products.add(new Product("Laptop", 859.00, 20));
+ products.add(new Product("Bouncy Ball", 2.49, 198));
+ products.add(new Product("Toilet", 99.00, 74));
+ products.add(new Product("The Notebook DVD", 19.99, 12));
+ products.add(new Product("Corn", 1.49, 856));
+ return products;
+ }
+
+
+}
\ No newline at end of file
diff --git a/JavaFX/018_tableView/Product.java b/JavaFX/018_tableView/Product.java
new file mode 100644
index 0000000..4c1be5d
--- /dev/null
+++ b/JavaFX/018_tableView/Product.java
@@ -0,0 +1,43 @@
+public class Product {
+
+ private String name;
+ private double price;
+ private int quantity;
+
+ public Product(){
+ this.name = "";
+ this.price = 0;
+ this.quantity = 0;
+ }
+
+ public Product(String name, double price, int quantity){
+ this.name = name;
+ this.price = price;
+ this.quantity = quantity;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public double getPrice() {
+ return price;
+ }
+
+ public void setPrice(double price) {
+ this.price = price;
+ }
+
+ public int getQuantity() {
+ return quantity;
+ }
+
+ public void setQuantity(int quantity) {
+ this.quantity = quantity;
+ }
+
+}
\ No newline at end of file
diff --git a/JavaFX/020_tableViewAddingAndDeleting/Main.java b/JavaFX/020_tableViewAddingAndDeleting/Main.java
new file mode 100644
index 0000000..b33dc8e
--- /dev/null
+++ b/JavaFX/020_tableViewAddingAndDeleting/Main.java
@@ -0,0 +1,114 @@
+import javafx.application.Application;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.geometry.Insets;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.TableView;
+import javafx.scene.control.TextField;
+import javafx.scene.control.cell.PropertyValueFactory;
+import javafx.scene.layout.HBox;
+import javafx.scene.layout.VBox;
+import javafx.stage.Stage;
+
+public class Main extends Application {
+
+ Stage window;
+ TableView table;
+ TextField nameInput, priceInput, quantityInput;
+
+ public static void main(String[] args) {
+ launch(args);
+ }
+
+ @Override
+ public void start(Stage primaryStage) throws Exception {
+ window = primaryStage;
+ window.setTitle("thenewboston - JavaFX");
+
+ //Name column
+ TableColumn nameColumn = new TableColumn<>("Name");
+ nameColumn.setMinWidth(200);
+ nameColumn.setCellValueFactory(new PropertyValueFactory<>("name"));
+
+ //Price column
+ TableColumn priceColumn = new TableColumn<>("Price");
+ priceColumn.setMinWidth(100);
+ priceColumn.setCellValueFactory(new PropertyValueFactory<>("price"));
+
+ //Quantity column
+ TableColumn quantityColumn = new TableColumn<>("Quantity");
+ quantityColumn.setMinWidth(100);
+ quantityColumn.setCellValueFactory(new PropertyValueFactory<>("quantity"));
+
+ //Name input
+ nameInput = new TextField();
+ nameInput.setPromptText("Name");
+ nameInput.setMinWidth(100);
+
+ //Price input
+ priceInput = new TextField();
+ priceInput.setPromptText("Price");
+
+ //Quantity input
+ quantityInput = new TextField();
+ quantityInput.setPromptText("Quantity");
+
+ //Button
+ Button addButton = new Button("Add");
+ addButton.setOnAction(e -> addButtonClicked());
+ Button deleteButton = new Button("Delete");
+ deleteButton.setOnAction(e -> deleteButtonClicked());
+
+ HBox hBox = new HBox();
+ hBox.setPadding(new Insets(10,10,10,10));
+ hBox.setSpacing(10);
+ hBox.getChildren().addAll(nameInput, priceInput, quantityInput, addButton, deleteButton);
+
+ table = new TableView<>();
+ table.setItems(getProduct());
+ table.getColumns().addAll(nameColumn, priceColumn, quantityColumn);
+
+ VBox vBox = new VBox();
+ vBox.getChildren().addAll(table, hBox);
+
+ Scene scene = new Scene(vBox);
+ window.setScene(scene);
+ window.show();
+ }
+
+ //Add button clicked
+ public void addButtonClicked(){
+ Product product = new Product();
+ product.setName(nameInput.getText());
+ product.setPrice(Double.parseDouble(priceInput.getText()));
+ product.setQuantity(Integer.parseInt(quantityInput.getText()));
+ table.getItems().add(product);
+ nameInput.clear();
+ priceInput.clear();
+ quantityInput.clear();
+ }
+
+ //Delete button clicked
+ public void deleteButtonClicked(){
+ ObservableList productSelected, allProducts;
+ allProducts = table.getItems();
+ productSelected = table.getSelectionModel().getSelectedItems();
+
+ productSelected.forEach(allProducts::remove);
+ }
+
+ //Get all of the products
+ public ObservableList getProduct(){
+ ObservableList products = FXCollections.observableArrayList();
+ products.add(new Product("Laptop", 859.00, 20));
+ products.add(new Product("Bouncy Ball", 2.49, 198));
+ products.add(new Product("Toilet", 99.00, 74));
+ products.add(new Product("The Notebook DVD", 19.99, 12));
+ products.add(new Product("Corn", 1.49, 856));
+ return products;
+ }
+
+
+}
\ No newline at end of file
diff --git a/JavaFX/020_tableViewAddingAndDeleting/Product.java b/JavaFX/020_tableViewAddingAndDeleting/Product.java
new file mode 100644
index 0000000..4c1be5d
--- /dev/null
+++ b/JavaFX/020_tableViewAddingAndDeleting/Product.java
@@ -0,0 +1,43 @@
+public class Product {
+
+ private String name;
+ private double price;
+ private int quantity;
+
+ public Product(){
+ this.name = "";
+ this.price = 0;
+ this.quantity = 0;
+ }
+
+ public Product(String name, double price, int quantity){
+ this.name = name;
+ this.price = price;
+ this.quantity = quantity;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public double getPrice() {
+ return price;
+ }
+
+ public void setPrice(double price) {
+ this.price = price;
+ }
+
+ public int getQuantity() {
+ return quantity;
+ }
+
+ public void setQuantity(int quantity) {
+ this.quantity = quantity;
+ }
+
+}
\ No newline at end of file
diff --git a/JavaFX/024_menus/Main.java b/JavaFX/024_menus/Main.java
new file mode 100644
index 0000000..c1ea6ef
--- /dev/null
+++ b/JavaFX/024_menus/Main.java
@@ -0,0 +1,81 @@
+import javafx.application.Application;
+import javafx.scene.Scene;
+import javafx.scene.control.*;
+import javafx.scene.layout.BorderPane;
+import javafx.stage.Stage;
+
+public class Main extends Application {
+
+ Stage window;
+ BorderPane layout;
+
+ public static void main(String[] args) {
+ launch(args);
+ }
+
+ @Override
+ public void start(Stage primaryStage) throws Exception {
+ window = primaryStage;
+ window.setTitle("thenewboston");
+
+ //File menu
+ Menu fileMenu = new Menu("File");
+ MenuItem newFile = new MenuItem("New...");
+ newFile.setOnAction(e -> System.out.println("Create a new file..."));
+ fileMenu.getItems().add(newFile);
+ fileMenu.getItems().add(new MenuItem("Open..."));
+ fileMenu.getItems().add(new MenuItem("Save..."));
+ fileMenu.getItems().add(new SeparatorMenuItem());
+ fileMenu.getItems().add(new MenuItem("Settings..."));
+ fileMenu.getItems().add(new SeparatorMenuItem());
+ fileMenu.getItems().add(new MenuItem("Exit..."));
+
+ //Edit menu
+ Menu editMenu = new Menu("_Edit");
+ editMenu.getItems().add(new MenuItem("Cut"));
+ editMenu.getItems().add(new MenuItem("Copy"));
+ MenuItem paste = new MenuItem("Paste");
+ paste.setOnAction(e -> System.out.println("Pasting some crap"));
+ paste.setDisable(true);
+ editMenu.getItems().add(paste);
+
+ //Help menu
+ Menu helpMenu = new Menu("Help");
+ CheckMenuItem showLines = new CheckMenuItem("Show Line Numbers");
+ showLines.setOnAction(e -> {
+ if(showLines.isSelected())
+ System.out.println("Program will now display line numbers");
+ else
+ System.out.println("Hiding line number");
+ });
+ CheckMenuItem autoSave = new CheckMenuItem("Enable Autosave");
+ autoSave.setSelected(true);
+ helpMenu.getItems().addAll(showLines, autoSave);
+
+ //Difficulty RadioMenuItems
+ Menu difficultyMenu = new Menu("Difficulty");
+ ToggleGroup difficultyToggle = new ToggleGroup();
+
+ RadioMenuItem easy = new RadioMenuItem("Easy");
+ RadioMenuItem medium = new RadioMenuItem("Medium");
+ RadioMenuItem hard = new RadioMenuItem("Hard");
+
+ easy.setToggleGroup(difficultyToggle);
+ medium.setToggleGroup(difficultyToggle);
+ hard.setToggleGroup(difficultyToggle);
+
+ difficultyMenu.getItems().addAll(easy, medium, hard);
+
+ //Main menu bar
+ MenuBar menuBar = new MenuBar();
+ menuBar.getMenus().addAll(fileMenu, editMenu, helpMenu, difficultyMenu);
+
+ layout = new BorderPane();
+ layout.setTop(menuBar);
+ Scene scene = new Scene(layout, 400, 300);
+ window.setScene(scene);
+ window.show();
+ }
+
+
+}
\ No newline at end of file
diff --git a/JavaFX/027_css/Main.java b/JavaFX/027_css/Main.java
new file mode 100644
index 0000000..99d9af4
--- /dev/null
+++ b/JavaFX/027_css/Main.java
@@ -0,0 +1,66 @@
+import javafx.application.Application;
+import javafx.geometry.Insets;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.control.Label;
+import javafx.scene.control.TextField;
+import javafx.scene.layout.GridPane;
+import javafx.stage.Stage;
+
+public class Main extends Application {
+
+ Stage window;
+
+ public static void main(String[] args) {
+ launch(args);
+ }
+
+ @Override
+ public void start(Stage primaryStage) throws Exception {
+ window = primaryStage;
+ window.setTitle("thenewboston - JavaFX");
+
+ //GridPane with 10px padding around edge
+ GridPane grid = new GridPane();
+ grid.setPadding(new Insets(10, 10, 10, 10));
+ grid.setVgap(8);
+ grid.setHgap(10);
+
+ //Name Label - constrains use (child, column, row)
+ Label nameLabel = new Label("Username:");
+ nameLabel.setId("bold-label");
+ GridPane.setConstraints(nameLabel, 0, 0);
+
+ //Name Input
+ TextField nameInput = new TextField("Bucky");
+ GridPane.setConstraints(nameInput, 1, 0);
+
+ //Password Label
+ Label passLabel = new Label("Password:");
+ GridPane.setConstraints(passLabel, 0, 1);
+
+ //Password Input
+ TextField passInput = new TextField();
+ passInput.setPromptText("password");
+ GridPane.setConstraints(passInput, 1, 1);
+
+ //Login
+ Button loginButton = new Button("Log In");
+ GridPane.setConstraints(loginButton, 1, 2);
+
+ //Sign up
+ Button signUpButton = new Button("Sign Up");
+ signUpButton.getStyleClass().add("button-blue");
+ GridPane.setConstraints(signUpButton, 1, 3);
+
+ //Add everything to grid
+ grid.getChildren().addAll(nameLabel, nameInput, passLabel, passInput, loginButton, signUpButton);
+
+ Scene scene = new Scene(grid, 300, 200);
+ scene.getStylesheets().add("Viper.css");
+ window.setScene(scene);
+ window.show();
+ }
+
+
+}
\ No newline at end of file
diff --git a/JavaFX/027_css/Viper.css b/JavaFX/027_css/Viper.css
new file mode 100644
index 0000000..6b7af6c
--- /dev/null
+++ b/JavaFX/027_css/Viper.css
@@ -0,0 +1,19 @@
+.root{
+ -fx-background-color: #383838;
+}
+.label{
+ -fx-text-fill: #e8e8e8;
+}
+.button{
+ -fx-background-color: #AB4642;
+ -fx-text-fill: #FFFFFF;
+ -fx-background-radius: 4;
+}
+.button-blue{
+ -fx-background-color: #7cafc2;
+ -fx-text-fill: #FFFFFF;
+ -fx-background-radius: 4;
+}
+#bold-label{
+ -fx-font-weight: bold;
+}
\ No newline at end of file
diff --git a/JavaFX/028_properties/Main.java b/JavaFX/028_properties/Main.java
new file mode 100644
index 0000000..821d424
--- /dev/null
+++ b/JavaFX/028_properties/Main.java
@@ -0,0 +1,40 @@
+import javafx.application.Application;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.layout.StackPane;
+import javafx.stage.Stage;
+
+public class Main extends Application {
+
+ Stage window;
+ Button button;
+
+ public static void main(String[] args) {
+ launch(args);
+ }
+
+ @Override
+ public void start(Stage primaryStage) throws Exception {
+ window = primaryStage;
+ window.setTitle("thenewboston");
+
+ Person bucky = new Person();
+
+ bucky.firstNameProperty().addListener( (v, oldValue, newValue) -> {
+ System.out.println("Name changed to " + newValue);
+ System.out.println("firstNameProperty(): " + bucky.firstNameProperty());
+ System.out.println("getFirstName(): " + bucky.getFirstName());
+ });
+
+ button = new Button("Submit");
+ button.setOnAction(e -> bucky.setFirstName("Porky"));
+
+ StackPane layout = new StackPane();
+ layout.getChildren().add(button);
+ Scene scene = new Scene(layout, 300, 250);
+ window.setScene(scene);
+ window.show();
+ }
+
+
+}
\ No newline at end of file
diff --git a/JavaFX/028_properties/Person.java b/JavaFX/028_properties/Person.java
new file mode 100644
index 0000000..962be7e
--- /dev/null
+++ b/JavaFX/028_properties/Person.java
@@ -0,0 +1,24 @@
+import javafx.beans.property.SimpleStringProperty;
+import javafx.beans.property.StringProperty;
+
+public class Person {
+
+ private StringProperty firstName = new SimpleStringProperty(this, "firstName", "");
+
+ //Returns the StringProperty object
+ public StringProperty firstNameProperty() {
+ return firstName;
+ }
+
+ //Return the firstName value (ie. "Bucky")
+ public String getFirstName() {
+ return firstName.get();
+ }
+
+ //Set the firstName value
+ public void setFirstName(String firstName) {
+ this.firstName.set(firstName);
+ }
+
+
+}
diff --git a/JavaFX/029_binding/Main.java b/JavaFX/029_binding/Main.java
new file mode 100644
index 0000000..678cdad
--- /dev/null
+++ b/JavaFX/029_binding/Main.java
@@ -0,0 +1,44 @@
+import javafx.application.Application;
+import javafx.beans.property.IntegerProperty;
+import javafx.beans.property.SimpleIntegerProperty;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.layout.StackPane;
+import javafx.stage.Stage;
+
+public class Main extends Application {
+
+ Stage window;
+ Button button;
+
+ public static void main(String[] args) {
+ launch(args);
+ }
+
+ @Override
+ public void start(Stage primaryStage) throws Exception {
+ window = primaryStage;
+ window.setTitle("thenewboston");
+
+ IntegerProperty x = new SimpleIntegerProperty(3);
+ IntegerProperty y = new SimpleIntegerProperty();
+
+ y.bind(x.multiply(10));
+ System.out.println("x: " + x.getValue());
+ System.out.println("y: " + y.getValue() + "\n");
+
+ x.setValue(9);
+ System.out.println("x: " + x.getValue());
+ System.out.println("y: " + y.getValue() + "\n");
+
+ button = new Button("Submit");
+
+ StackPane layout = new StackPane();
+ layout.getChildren().add(button);
+ Scene scene = new Scene(layout, 300, 250);
+ window.setScene(scene);
+ window.show();
+ }
+
+
+}
\ No newline at end of file
diff --git a/JavaFX/030_bindingPropertiesExample/Main.java b/JavaFX/030_bindingPropertiesExample/Main.java
new file mode 100644
index 0000000..cb7c858
--- /dev/null
+++ b/JavaFX/030_bindingPropertiesExample/Main.java
@@ -0,0 +1,42 @@
+import javafx.application.Application;
+import javafx.geometry.Pos;
+import javafx.scene.Scene;
+import javafx.scene.control.Label;
+import javafx.scene.control.TextField;
+import javafx.scene.layout.HBox;
+import javafx.scene.layout.VBox;
+import javafx.stage.Stage;
+
+public class Main extends Application {
+
+ Stage window;
+
+ public static void main(String[] args) {
+ launch(args);
+ }
+
+ @Override
+ public void start(Stage primaryStage) throws Exception {
+ window = primaryStage;
+ window.setTitle("thenewboston");
+
+ //Input and labels
+ TextField userInput = new TextField();
+ userInput.setMaxWidth(200);
+ Label firstLabel = new Label("Welcome to the site ");
+ Label secondLabel = new Label();
+
+ HBox bottomText = new HBox(firstLabel, secondLabel);
+ bottomText.setAlignment(Pos.CENTER);
+ VBox vBox = new VBox(10, userInput, bottomText);
+ vBox.setAlignment(Pos.CENTER);
+
+ secondLabel.textProperty().bind(userInput.textProperty());
+
+ Scene scene = new Scene(vBox, 300, 200);
+ window.setScene(scene);
+ window.show();
+ }
+
+
+}
\ No newline at end of file
diff --git a/JavaFX/031_fxml/Controller.java b/JavaFX/031_fxml/Controller.java
new file mode 100644
index 0000000..0f4bd6a
--- /dev/null
+++ b/JavaFX/031_fxml/Controller.java
@@ -0,0 +1,14 @@
+package sample;
+
+import javafx.fxml.Initializable;
+import java.net.URL;
+import java.util.ResourceBundle;
+
+public class Controller implements Initializable {
+
+ @Override
+ public void initialize(URL location, ResourceBundle resources) {
+ System.out.println("View is now loaded!");
+ }
+
+}
\ No newline at end of file
diff --git a/JavaFX/031_fxml/Main.java b/JavaFX/031_fxml/Main.java
new file mode 100644
index 0000000..d8f4a43
--- /dev/null
+++ b/JavaFX/031_fxml/Main.java
@@ -0,0 +1,24 @@
+package sample;
+
+import javafx.application.Application;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.stage.Stage;
+
+public class Main extends Application {
+
+ public static void main(String[] args) {
+ launch(args);
+ }
+
+ @Override
+ public void start(Stage primaryStage) throws Exception{
+ Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
+ primaryStage.setTitle("Hello World");
+ primaryStage.setScene(new Scene(root, 300, 275));
+ primaryStage.show();
+ }
+
+
+}
diff --git a/JavaFX/031_fxml/sample.fxml b/JavaFX/031_fxml/sample.fxml
new file mode 100644
index 0000000..46a7463
--- /dev/null
+++ b/JavaFX/031_fxml/sample.fxml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Java_Beginners/51_javaBeginners.java b/Java_Beginners/51_javaBeginners.java
new file mode 100644
index 0000000..6bc20ce
--- /dev/null
+++ b/Java_Beginners/51_javaBeginners.java
@@ -0,0 +1,31 @@
+//tuna.java file
+import java.awt.FlowLayout;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+
+public class tuna extends JFrame{
+
+ private JLabel item1;
+
+ public tuna(){
+ super("The title bar");
+ setLayout(new FlowLayout());
+
+ item1 = new JLabel("this is sentence");
+ item1.setToolTipText("This is gona show up on hover");
+ add(item1);
+ }
+
+}
+//apples.java
+import javax.swing.JFrame;
+
+class apples {
+ public static void main(String[] args){
+
+ tuna bucky = new tuna();
+ bucky.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ bucky.setSize(275,180);
+ bucky.setVisible(true);
+ }
+}
diff --git a/Java_Beginners/52_53_54_javaBeginners.java b/Java_Beginners/52_53_54_javaBeginners.java
new file mode 100644
index 0000000..5c7d84b
--- /dev/null
+++ b/Java_Beginners/52_53_54_javaBeginners.java
@@ -0,0 +1,72 @@
+//tuna.jav file
+import java.awt.FlowLayout;
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+import javax.swing.JFrame;
+import javax.swing.JTextField;
+import javax.swing.JPasswordField;
+import javax.swing.JOptionPane;
+
+public class tuna extends JFrame{
+
+ private JTextField item1;
+ private JTextField item2;
+ private JTextField item3;
+ private JPasswordField passwordField;
+
+ public tuna(){
+ super("The Title");
+ setLayout(new FlowLayout);
+
+ item1 = new JTextField(10);
+ add(item1);
+
+ item2 = new JTextField("enter text here");
+ add(item2);
+
+ item3 = new JTextField("uneditbale", 20);
+ item3.setEditable(false);
+ add(item3);
+
+ passwordField = new JPasswordField("mypass");
+ add(passwordField);
+
+ thehandler handler = new thehandler();
+ item1.addActionListener(handler);
+ item2.addActionListener(handler);
+ item3.addActionListener(handler);
+ passwordField.addActionListener(handler);
+}
+
+ private class thehandler implements ActionListener{
+ public void actionPerformed(ActionEvent event){
+
+ String string = "";
+
+ if(event.getSource()==item1)
+ string=String.format("field 1: %s", event.getActionCommand);
+ else if(event.getSource()==item2)
+ string=String.format("field 2: %s", event.getActionCommand);
+ else if(event.getSource()==item3)
+ string=String.format("field 3: %s", event.getActionCommand);
+ else if(event.getSource()==passwordField)
+ string=String.format("password field is : %s",event.getActionCommand);
+
+ JOptionPane.showMessageDialog(null, string);
+ }
+
+ }
+}
+
+//apples.java file
+import javax.swing.JFrame;
+
+class apples{
+ public static void main(String[] args)
+ {
+ tuna bucky = new tuna();
+ bucky.setDefalutCloseOperation(JFrame.EXIT_ON_CLOSE);
+ bucky.setSize(350,100);
+ bucky.setVisible(true);
+ }
+}
\ No newline at end of file
diff --git a/Java_Beginners/55_javaBeginners.java b/Java_Beginners/55_javaBeginners.java
new file mode 100644
index 0000000..fdc08f1
--- /dev/null
+++ b/Java_Beginners/55_javaBeginners.java
@@ -0,0 +1,37 @@
+//food.java file
+
+public class food{
+ void eat(){
+ System.out.println(" this food is great");
+}
+
+//tuna.java file
+
+public class tuna extends food{
+ void eat(){
+ System.out.println(" this tuna is great");
+}
+
+//potpie.java file
+
+ public class potpie extends food{
+ void eat(){
+ System.out.println(" this potpie is great");
+ }
+ }
+
+ //apples.java file
+
+ class apples {
+ public static void main(String[] args)
+ {
+ food bucky[] = new food[2];
+ bucky[0]=new potpie();
+ bucky[1]=new tuna();
+
+ for(int x=0;x<2;++x){
+ bucky[x].eat();
+ }
+ }
+ }
+
\ No newline at end of file
diff --git a/Java_Beginners/56_javaBeginners.java b/Java_Beginners/56_javaBeginners.java
new file mode 100644
index 0000000..f4b1c29
--- /dev/null
+++ b/Java_Beginners/56_javaBeginners.java
@@ -0,0 +1,39 @@
+//food.java file
+
+public class food{
+ void eat(){
+ System.out.println(" this food is great");
+}
+
+//tuna.java file
+
+public class tuna extends food{
+ void eat(){
+ System.out.println(" this tuna is great");
+}
+
+//potpie.java file
+
+ public class potpie extends food{
+ void eat(){
+ System.out.println(" this potpie is great");
+ }
+ }
+
+//fatty.java file
+
+public class fatty{
+ public void digest(food x){
+ x.eat();
+ }
+}
+//apples.java file
+public static void main(String[] args)
+{
+ fatty bucky = new fatty();
+ food fo = new food();
+ food po = new potpie();
+
+ bucky.digest(fo);
+ bucky.digest(po);
+}
\ No newline at end of file
diff --git a/Java_Intermediate/38_javaIntermediate.java b/Java_Intermediate/38_javaIntermediate.java
new file mode 100644
index 0000000..47ecf72
--- /dev/null
+++ b/Java_Intermediate/38_javaIntermediate.java
@@ -0,0 +1,16 @@
+import java.io.*;
+import java.net.*;
+import java.awt.*;
+import java.awt.event.*;
+import javax.swing.*;
+
+public class Server extends JFrame {
+
+ private JTextField userText;
+ private JTextArea chatWindow;
+ private ObjectOutputStream output;
+ private ObjectInputStream input;
+ private ServerSocket server;
+ private Socket connection;
+
+}
diff --git a/Java_Intermediate/39_javaIntermediate.java b/Java_Intermediate/39_javaIntermediate.java
new file mode 100644
index 0000000..7a19fd0
--- /dev/null
+++ b/Java_Intermediate/39_javaIntermediate.java
@@ -0,0 +1,35 @@
+import java.io.*;
+import java.net.*;
+import java.awt.*;
+import java.awt.event.*;
+import javax.swing.*;
+
+public class Server extends JFrame {
+
+ private JTextField userText;
+ private JTextArea chatWindow;
+ private ObjectOutputStream output;
+ private ObjectInputStream input;
+ private ServerSocket server;
+ private Socket connection;
+
+ //constructor
+ public Server(){
+ super("Buckys Instant Messenger");
+ userText = new JTextField();
+ userText.setEditable(false);
+ userText.addActionListener(
+ new ActionListener(){
+ public void actionPerformed(ActionEvent event){
+ sendMessage(event.getActionCommand());
+ userText.setText("");
+ }
+ }
+ );
+ add(userText, BorderLayout.NORTH);
+ chatWindow = new JTextArea();
+ add(new JScrollPane(chatWindow));
+ setSize(300, 150);
+ setVisible(true);
+ }
+}
diff --git a/Java_Intermediate/40_javeIntermediate.java b/Java_Intermediate/40_javeIntermediate.java
new file mode 100644
index 0000000..fc29216
--- /dev/null
+++ b/Java_Intermediate/40_javeIntermediate.java
@@ -0,0 +1,54 @@
+import java.io.*;
+import java.net.*;
+import java.awt.*;
+import java.awt.event.*;
+import javax.swing.*;
+
+public class Server extends JFrame {
+
+ private JTextField userText;
+ private JTextArea chatWindow;
+ private ObjectOutputStream output;
+ private ObjectInputStream input;
+ private ServerSocket server;
+ private Socket connection;
+
+ //constructor
+ public Server(){
+ super("Buckys Instant Messenger");
+ userText = new JTextField();
+ userText.setEditable(false);
+ userText.addActionListener(
+ new ActionListener(){
+ public void actionPerformed(ActionEvent event){
+ sendMessage(event.getActionCommand());
+ userText.setText("");
+ }
+ }
+ );
+ add(userText, BorderLayout.NORTH);
+ chatWindow = new JTextArea();
+ add(new JScrollPane(chatWindow));
+ setSize(300, 150); //Sets the window size
+ setVisible(true);
+ }
+
+ public void startRunning(){
+ try{
+ server = new ServerSocket(6789, 100); //6789 is a dummy port for testing, this can be changed. The 100 is the maximum people waiting to connect.
+ while(true){
+ try{
+ //Trying to connect and have conversation
+
+ }catch(EOFException eofException){
+ showMessage("\n Server ended the connection! ");
+ } finally{
+ closeCrap();
+ }
+ }
+ } catch (IOException ioException){
+ ioException.printStackTrace();
+ }
+ }
+
+}
diff --git a/Java_Intermediate/41_javaIntermediate.java b/Java_Intermediate/41_javaIntermediate.java
new file mode 100644
index 0000000..b20e234
--- /dev/null
+++ b/Java_Intermediate/41_javaIntermediate.java
@@ -0,0 +1,62 @@
+import java.io.*;
+import java.net.*;
+import java.awt.*;
+import java.awt.event.*;
+import javax.swing.*;
+
+public class Server extends JFrame {
+
+ private JTextField userText;
+ private JTextArea chatWindow;
+ private ObjectOutputStream output;
+ private ObjectInputStream input;
+ private ServerSocket server;
+ private Socket connection;
+
+ //constructor
+ public Server(){
+ super("Buckys Instant Messenger");
+ userText = new JTextField();
+ userText.setEditable(false);
+ userText.addActionListener(
+ new ActionListener(){
+ public void actionPerformed(ActionEvent event){
+ sendMessage(event.getActionCommand());
+ userText.setText("");
+ }
+ }
+ );
+ add(userText, BorderLayout.NORTH);
+ chatWindow = new JTextArea();
+ add(new JScrollPane(chatWindow));
+ setSize(300, 150); //Sets the window size
+ setVisible(true);
+ }
+
+ public void startRunning(){
+ try{
+ server = new ServerSocket(6789, 100); //6789 is a dummy port for testing, this can be changed. The 100 is the maximum people waiting to connect.
+ while(true){
+ try{
+ //Trying to connect and have conversation
+ waitForConnection();
+ setupStreams();
+ whileChatting();
+ }catch(EOFException eofException){
+ showMessage("\n Server ended the connection! ");
+ } finally{
+ closeCrap();
+ }
+ }
+ } catch (IOException ioException){
+ ioException.printStackTrace();
+ }
+ }
+ //wait for connection, then display connection information
+ private void waitForConnection() throws IOException{
+ showMessage(" Waiting for someone to connect... \n");
+ connection = server.accept();
+ showMessage(" Now connected to " + connection.getInetAddress().getHostName());
+ }
+
+}
diff --git a/Java_Intermediate/42_javaIntermediate.java b/Java_Intermediate/42_javaIntermediate.java
new file mode 100644
index 0000000..e91e788
--- /dev/null
+++ b/Java_Intermediate/42_javaIntermediate.java
@@ -0,0 +1,71 @@
+import java.io.*;
+import java.net.*;
+import java.awt.*;
+import java.awt.event.*;
+import javax.swing.*;
+
+public class Server extends JFrame {
+
+ private JTextField userText;
+ private JTextArea chatWindow;
+ private ObjectOutputStream output;
+ private ObjectInputStream input;
+ private ServerSocket server;
+ private Socket connection;
+
+ //constructor
+ public Server(){
+ super("Buckys Instant Messenger");
+ userText = new JTextField();
+ userText.setEditable(false);
+ userText.addActionListener(
+ new ActionListener(){
+ public void actionPerformed(ActionEvent event){
+ sendMessage(event.getActionCommand());
+ userText.setText("");
+ }
+ }
+ );
+ add(userText, BorderLayout.NORTH);
+ chatWindow = new JTextArea();
+ add(new JScrollPane(chatWindow));
+ setSize(300, 150); //Sets the window size
+ setVisible(true);
+ }
+
+ public void startRunning(){
+ try{
+ server = new ServerSocket(6789, 100); //6789 is a dummy port for testing, this can be changed. The 100 is the maximum people waiting to connect.
+ while(true){
+ try{
+ //Trying to connect and have conversation
+ waitForConnection();
+ setupStreams();
+ whileChatting();
+ }catch(EOFException eofException){
+ showMessage("\n Server ended the connection! ");
+ } finally{
+ closeCrap();
+ }
+ }
+ } catch (IOException ioException){
+ ioException.printStackTrace();
+ }
+ }
+ //wait for connection, then display connection information
+ private void waitForConnection() throws IOException{
+ showMessage(" Waiting for someone to connect... \n");
+ connection = server.accept();
+ showMessage(" Now connected to " + connection.getInetAddress().getHostName());
+ }
+
+ //get stream to send and receive data
+ private void setupStreams() throws IOException{
+ output = new ObjectOutputStream(connection.getOutputStream());
+ output.flush();
+
+ input = new ObjectInputStream(connection.getInputStream());
+
+ showMessage("\n Streams are now setup \n");
+ }
+}
diff --git a/Java_Intermediate/43_javaIntermediate.java b/Java_Intermediate/43_javaIntermediate.java
new file mode 100644
index 0000000..bb639a9
--- /dev/null
+++ b/Java_Intermediate/43_javaIntermediate.java
@@ -0,0 +1,86 @@
+import java.io.*;
+import java.net.*;
+import java.awt.*;
+import java.awt.event.*;
+import javax.swing.*;
+
+public class Server extends JFrame {
+
+ private JTextField userText;
+ private JTextArea chatWindow;
+ private ObjectOutputStream output;
+ private ObjectInputStream input;
+ private ServerSocket server;
+ private Socket connection;
+
+ //constructor
+ public Server(){
+ super("Buckys Instant Messenger");
+ userText = new JTextField();
+ userText.setEditable(false);
+ userText.addActionListener(
+ new ActionListener(){
+ public void actionPerformed(ActionEvent event){
+ sendMessage(event.getActionCommand());
+ userText.setText("");
+ }
+ }
+ );
+ add(userText, BorderLayout.NORTH);
+ chatWindow = new JTextArea();
+ add(new JScrollPane(chatWindow));
+ setSize(300, 150); //Sets the window size
+ setVisible(true);
+ }
+
+ public void startRunning(){
+ try{
+ server = new ServerSocket(6789, 100); //6789 is a dummy port for testing, this can be changed. The 100 is the maximum people waiting to connect.
+ while(true){
+ try{
+ //Trying to connect and have conversation
+ waitForConnection();
+ setupStreams();
+ whileChatting();
+ }catch(EOFException eofException){
+ showMessage("\n Server ended the connection! ");
+ } finally{
+ closeCrap();
+ }
+ }
+ } catch (IOException ioException){
+ ioException.printStackTrace();
+ }
+ }
+ //wait for connection, then display connection information
+ private void waitForConnection() throws IOException{
+ showMessage(" Waiting for someone to connect... \n");
+ connection = server.accept();
+ showMessage(" Now connected to " + connection.getInetAddress().getHostName());
+ }
+
+ //get stream to send and receive data
+ private void setupStreams() throws IOException{
+ output = new ObjectOutputStream(connection.getOutputStream());
+ output.flush();
+
+ input = new ObjectInputStream(connection.getInputStream());
+
+ showMessage("\n Streams are now setup \n");
+ }
+
+ //during the chat conversation
+ private void whileChatting() throws IOException{
+ String message = " You are now connected! ";
+ sendMessage(message);
+ ableToType(true);
+ do{
+ try{
+ message = (String) input.readObject();
+ showMessage("\n" + message);
+ }catch(ClassNotFoundException classNotFoundException){
+ showMessage("The user has sent an unknown object!")
+ }
+ }while(!message.equals("CLIENT - END"));
+ }
+}
diff --git a/Java_Intermediate/44_javaIntermediate.java b/Java_Intermediate/44_javaIntermediate.java
new file mode 100644
index 0000000..1ab170f
--- /dev/null
+++ b/Java_Intermediate/44_javaIntermediate.java
@@ -0,0 +1,98 @@
+import java.io.*;
+import java.net.*;
+import java.awt.*;
+import java.awt.event.*;
+import javax.swing.*;
+
+public class Server extends JFrame {
+
+ private JTextField userText;
+ private JTextArea chatWindow;
+ private ObjectOutputStream output;
+ private ObjectInputStream input;
+ private ServerSocket server;
+ private Socket connection;
+
+ //constructor
+ public Server(){
+ super("Buckys Instant Messenger");
+ userText = new JTextField();
+ userText.setEditable(false);
+ userText.addActionListener(
+ new ActionListener(){
+ public void actionPerformed(ActionEvent event){
+ sendMessage(event.getActionCommand());
+ userText.setText("");
+ }
+ }
+ );
+ add(userText, BorderLayout.NORTH);
+ chatWindow = new JTextArea();
+ add(new JScrollPane(chatWindow));
+ setSize(300, 150); //Sets the window size
+ setVisible(true);
+ }
+
+ public void startRunning(){
+ try{
+ server = new ServerSocket(6789, 100); //6789 is a dummy port for testing, this can be changed. The 100 is the maximum people waiting to connect.
+ while(true){
+ try{
+ //Trying to connect and have conversation
+ waitForConnection();
+ setupStreams();
+ whileChatting();
+ }catch(EOFException eofException){
+ showMessage("\n Server ended the connection! ");
+ } finally{
+ closeConnection(); //Changed the name to something more appropriate
+ }
+ }
+ } catch (IOException ioException){
+ ioException.printStackTrace();
+ }
+ }
+ //wait for connection, then display connection information
+ private void waitForConnection() throws IOException{
+ showMessage(" Waiting for someone to connect... \n");
+ connection = server.accept();
+ showMessage(" Now connected to " + connection.getInetAddress().getHostName());
+ }
+
+ //get stream to send and receive data
+ private void setupStreams() throws IOException{
+ output = new ObjectOutputStream(connection.getOutputStream());
+ output.flush();
+
+ input = new ObjectInputStream(connection.getInputStream());
+
+ showMessage("\n Streams are now setup \n");
+ }
+
+ //during the chat conversation
+ private void whileChatting() throws IOException{
+ String message = " You are now connected! ";
+ sendMessage(message);
+ ableToType(true);
+ do{
+ try{
+ message = (String) input.readObject();
+ showMessage("\n" + message);
+ }catch(ClassNotFoundException classNotFoundException){
+ showMessage("The user has sent an unknown object!");
+ }
+ }while(!message.equals("CLIENT - END"));
+ }
+
+ public void closeConnection(){
+ showMessage("\n Closing Connections... \n");
+ ableToType(false);
+ try{
+ output.close(); //Closes the output path to the client
+ input.close(); //Closes the input path to the server, from the client.
+ connection.close(); //Closes the connection between you can the client
+ }catch(IOException ioException){
+ ioException.printStackTrace();
+ }
+ }
+}
diff --git a/Java_Intermediate/45_javaIntermediate.java b/Java_Intermediate/45_javaIntermediate.java
new file mode 100644
index 0000000..d447bbe
--- /dev/null
+++ b/Java_Intermediate/45_javaIntermediate.java
@@ -0,0 +1,109 @@
+import java.io.*;
+import java.net.*;
+import java.awt.*;
+import java.awt.event.*;
+import javax.swing.*;
+
+public class Server extends JFrame {
+
+ private JTextField userText;
+ private JTextArea chatWindow;
+ private ObjectOutputStream output;
+ private ObjectInputStream input;
+ private ServerSocket server;
+ private Socket connection;
+
+ //constructor
+ public Server(){
+ super("Buckys Instant Messenger");
+ userText = new JTextField();
+ userText.setEditable(false);
+ userText.addActionListener(
+ new ActionListener(){
+ public void actionPerformed(ActionEvent event){
+ sendMessage(event.getActionCommand());
+ userText.setText("");
+ }
+ }
+ );
+ add(userText, BorderLayout.NORTH);
+ chatWindow = new JTextArea();
+ add(new JScrollPane(chatWindow));
+ setSize(300, 150); //Sets the window size
+ setVisible(true);
+ }
+
+ public void startRunning(){
+ try{
+ server = new ServerSocket(6789, 100); //6789 is a dummy port for testing, this can be changed. The 100 is the maximum people waiting to connect.
+ while(true){
+ try{
+ //Trying to connect and have conversation
+ waitForConnection();
+ setupStreams();
+ whileChatting();
+ }catch(EOFException eofException){
+ showMessage("\n Server ended the connection! ");
+ } finally{
+ closeConnection(); //Changed the name to something more appropriate
+ }
+ }
+ } catch (IOException ioException){
+ ioException.printStackTrace();
+ }
+ }
+ //wait for connection, then display connection information
+ private void waitForConnection() throws IOException{
+ showMessage(" Waiting for someone to connect... \n");
+ connection = server.accept();
+ showMessage(" Now connected to " + connection.getInetAddress().getHostName());
+ }
+
+ //get stream to send and receive data
+ private void setupStreams() throws IOException{
+ output = new ObjectOutputStream(connection.getOutputStream());
+ output.flush();
+
+ input = new ObjectInputStream(connection.getInputStream());
+
+ showMessage("\n Streams are now setup \n");
+ }
+
+ //during the chat conversation
+ private void whileChatting() throws IOException{
+ String message = " You are now connected! ";
+ sendMessage(message);
+ ableToType(true);
+ do{
+ try{
+ message = (String) input.readObject();
+ showMessage("\n" + message);
+ }catch(ClassNotFoundException classNotFoundException){
+ showMessage("The user has sent an unknown object!");
+ }
+ }while(!message.equals("CLIENT - END"));
+ }
+
+ public void closeConnection(){
+ showMessage("\n Closing Connections... \n");
+ ableToType(false);
+ try{
+ output.close(); //Closes the output path to the client
+ input.close(); //Closes the input path to the server, from the client.
+ connection.close(); //Closes the connection between you can the client
+ }catch(IOException ioException){
+ ioException.printStackTrace();
+ }
+ }
+
+ //Send a mesage to the client
+ private void sendMessage(String message){
+ try{
+ output.writeObject("SERVER - " + message);
+ output.flush();
+ showMessage("\nSERVER -" + message);
+ }catch(IOException ioException){
+ chatWindow.append("\n ERROR: CANNOT SEND MESSAGE, PLEASE RETRY");
+ }
+ }
+}
diff --git a/Java_Intermediate/46_javaIntermediate.java b/Java_Intermediate/46_javaIntermediate.java
new file mode 100644
index 0000000..abe28e9
--- /dev/null
+++ b/Java_Intermediate/46_javaIntermediate.java
@@ -0,0 +1,120 @@
+import java.io.*;
+import java.net.*;
+import java.awt.*;
+import java.awt.event.*;
+import javax.swing.*;
+
+public class Server extends JFrame {
+
+ private JTextField userText;
+ private JTextArea chatWindow;
+ private ObjectOutputStream output;
+ private ObjectInputStream input;
+ private ServerSocket server;
+ private Socket connection;
+
+ //constructor
+ public Server(){
+ super("Buckys Instant Messenger");
+ userText = new JTextField();
+ userText.setEditable(false);
+ userText.addActionListener(
+ new ActionListener(){
+ public void actionPerformed(ActionEvent event){
+ sendMessage(event.getActionCommand());
+ userText.setText("");
+ }
+ }
+ );
+ add(userText, BorderLayout.NORTH);
+ chatWindow = new JTextArea();
+ add(new JScrollPane(chatWindow));
+ setSize(300, 150); //Sets the window size
+ setVisible(true);
+ }
+
+ public void startRunning(){
+ try{
+ server = new ServerSocket(6789, 100); //6789 is a dummy port for testing, this can be changed. The 100 is the maximum people waiting to connect.
+ while(true){
+ try{
+ //Trying to connect and have conversation
+ waitForConnection();
+ setupStreams();
+ whileChatting();
+ }catch(EOFException eofException){
+ showMessage("\n Server ended the connection! ");
+ } finally{
+ closeConnection(); //Changed the name to something more appropriate
+ }
+ }
+ } catch (IOException ioException){
+ ioException.printStackTrace();
+ }
+ }
+ //wait for connection, then display connection information
+ private void waitForConnection() throws IOException{
+ showMessage(" Waiting for someone to connect... \n");
+ connection = server.accept();
+ showMessage(" Now connected to " + connection.getInetAddress().getHostName());
+ }
+
+ //get stream to send and receive data
+ private void setupStreams() throws IOException{
+ output = new ObjectOutputStream(connection.getOutputStream());
+ output.flush();
+
+ input = new ObjectInputStream(connection.getInputStream());
+
+ showMessage("\n Streams are now setup \n");
+ }
+
+ //during the chat conversation
+ private void whileChatting() throws IOException{
+ String message = " You are now connected! ";
+ sendMessage(message);
+ ableToType(true);
+ do{
+ try{
+ message = (String) input.readObject();
+ showMessage("\n" + message);
+ }catch(ClassNotFoundException classNotFoundException){
+ showMessage("The user has sent an unknown object!");
+ }
+ }while(!message.equals("CLIENT - END"));
+ }
+
+ public void closeConnection(){
+ showMessage("\n Closing Connections... \n");
+ ableToType(false);
+ try{
+ output.close(); //Closes the output path to the client
+ input.close(); //Closes the input path to the server, from the client.
+ connection.close(); //Closes the connection between you can the client
+ }catch(IOException ioException){
+ ioException.printStackTrace();
+ }
+ }
+
+ //Send a mesage to the client
+ private void sendMessage(String message){
+ try{
+ output.writeObject("SERVER - " + message);
+ output.flush();
+ showMessage("\nSERVER -" + message);
+ }catch(IOException ioException){
+ chatWindow.append("\n ERROR: CANNOT SEND MESSAGE, PLEASE RETRY");
+ }
+ }
+
+ //update chatWindow
+ private void showMessage(final String text){
+ SwingUtilities.invokeLater(
+ new Runnable(){
+ public void run(){
+ chatWindow.append(text);
+ }
+ }
+ );
+ }
+}
diff --git a/Java_Intermediate/47_javaIntermediate.java b/Java_Intermediate/47_javaIntermediate.java
new file mode 100644
index 0000000..5233eba
--- /dev/null
+++ b/Java_Intermediate/47_javaIntermediate.java
@@ -0,0 +1,130 @@
+import java.io.*;
+import java.net.*;
+import java.awt.*;
+import java.awt.event.*;
+import javax.swing.*;
+
+public class Server extends JFrame {
+
+ private JTextField userText;
+ private JTextArea chatWindow;
+ private ObjectOutputStream output;
+ private ObjectInputStream input;
+ private ServerSocket server;
+ private Socket connection;
+
+ //constructor
+ public Server(){
+ super("Buckys Instant Messenger");
+ userText = new JTextField();
+ userText.setEditable(false);
+ userText.addActionListener(
+ new ActionListener(){
+ public void actionPerformed(ActionEvent event){
+ sendMessage(event.getActionCommand());
+ userText.setText("");
+ }
+ }
+ );
+ add(userText, BorderLayout.NORTH);
+ chatWindow = new JTextArea();
+ add(new JScrollPane(chatWindow));
+ setSize(300, 150); //Sets the window size
+ setVisible(true);
+ }
+
+ public void startRunning(){
+ try{
+ server = new ServerSocket(6789, 100); //6789 is a dummy port for testing, this can be changed. The 100 is the maximum people waiting to connect.
+ while(true){
+ try{
+ //Trying to connect and have conversation
+ waitForConnection();
+ setupStreams();
+ whileChatting();
+ }catch(EOFException eofException){
+ showMessage("\n Server ended the connection! ");
+ } finally{
+ closeConnection(); //Changed the name to something more appropriate
+ }
+ }
+ } catch (IOException ioException){
+ ioException.printStackTrace();
+ }
+ }
+ //wait for connection, then display connection information
+ private void waitForConnection() throws IOException{
+ showMessage(" Waiting for someone to connect... \n");
+ connection = server.accept();
+ showMessage(" Now connected to " + connection.getInetAddress().getHostName());
+ }
+
+ //get stream to send and receive data
+ private void setupStreams() throws IOException{
+ output = new ObjectOutputStream(connection.getOutputStream());
+ output.flush();
+
+ input = new ObjectInputStream(connection.getInputStream());
+
+ showMessage("\n Streams are now setup \n");
+ }
+
+ //during the chat conversation
+ private void whileChatting() throws IOException{
+ String message = " You are now connected! ";
+ sendMessage(message);
+ ableToType(true);
+ do{
+ try{
+ message = (String) input.readObject();
+ showMessage("\n" + message);
+ }catch(ClassNotFoundException classNotFoundException){
+ showMessage("The user has sent an unknown object!");
+ }
+ }while(!message.equals("CLIENT - END"));
+ }
+
+ public void closeConnection(){
+ showMessage("\n Closing Connections... \n");
+ ableToType(false);
+ try{
+ output.close(); //Closes the output path to the client
+ input.close(); //Closes the input path to the server, from the client.
+ connection.close(); //Closes the connection between you can the client
+ }catch(IOException ioException){
+ ioException.printStackTrace();
+ }
+ }
+
+ //Send a mesage to the client
+ private void sendMessage(String message){
+ try{
+ output.writeObject("SERVER - " + message);
+ output.flush();
+ showMessage("\nSERVER -" + message);
+ }catch(IOException ioException){
+ chatWindow.append("\n ERROR: CANNOT SEND MESSAGE, PLEASE RETRY");
+ }
+ }
+
+ //update chatWindow
+ private void showMessage(final String text){
+ SwingUtilities.invokeLater(
+ new Runnable(){
+ public void run(){
+ chatWindow.append(text);
+ }
+ }
+ );
+ }
+
+ private void ableToType(final boolean tof){
+ SwingUtilities.invokeLater(
+ new Runnable(){
+ public void run(){
+ userText.setEditable(tof);
+ }
+ }
+ );
+ }
+}
diff --git a/Java_Intermediate/48_javaIntermediate.java b/Java_Intermediate/48_javaIntermediate.java
new file mode 100644
index 0000000..f568e9c
--- /dev/null
+++ b/Java_Intermediate/48_javaIntermediate.java
@@ -0,0 +1,9 @@
+import javax.swing.JFrame;
+
+public class ServerTest {
+ public static void main(String[] args) {
+ Server sally = new Server();
+ sally.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ sally.startRunning();
+ }
+}
diff --git a/Java_Intermediate/49_javaIntermediate.java b/Java_Intermediate/49_javaIntermediate.java
new file mode 100644
index 0000000..9eaa53e
--- /dev/null
+++ b/Java_Intermediate/49_javaIntermediate.java
@@ -0,0 +1,22 @@
+import java.io.*;
+import java.net.*;
+import java.awt.*;
+import java.awt.event.*;
+import javax.swing.*;
+
+public class Client extends JFrame{
+
+ private JTextField userText;
+ private JTextArea chatWindow;
+ private ObjectOutputStream output;
+ private ObjectInputStream input;
+ private String message = "";
+ private String ServerIP;
+ private Socket connection;
+
+ public Client(){
+
+ }
+
+
+}
diff --git a/Java_Intermediate/50_javaIntermediate.java b/Java_Intermediate/50_javaIntermediate.java
new file mode 100644
index 0000000..49a930d
--- /dev/null
+++ b/Java_Intermediate/50_javaIntermediate.java
@@ -0,0 +1,38 @@
+import java.io.*;
+import java.net.*;
+import java.awt.*;
+import java.awt.event.*;
+
+import javax.swing.*;
+
+public class Client extends JFrame{
+
+ private JTextField userText;
+ private JTextArea chatWindow;
+ private ObjectOutputStream output;
+ private ObjectInputStream input;
+ private String message = "";
+ private String serverIP;
+ private Socket connection;
+
+ //constructor
+ public Client(String host){
+ super("Client");
+ serverIP = host;
+ userText = new JTextField();
+ userText.setEditable(false);
+ userText.addActionListener(
+ new ActionListener(){
+ public void actionPerformed(ActionEvent event){
+ sendData(event.getActionCommand());
+ userText.setText("");
+ }
+ }
+ );
+ add(userText, BorderLayout.NORTH);
+ chatWindow = new JTextArea();
+ add(new JScrollPane(chatWindow));
+ setSize(300, 150); //Sets the window size
+ setVisible(true);
+ }
+}
diff --git a/Java_Intermediate/51_javaIntermediate.java b/Java_Intermediate/51_javaIntermediate.java
new file mode 100644
index 0000000..2940205
--- /dev/null
+++ b/Java_Intermediate/51_javaIntermediate.java
@@ -0,0 +1,51 @@
+import java.io.*;
+import java.net.*;
+import java.awt.*;
+import java.awt.event.*;
+
+import javax.swing.*;
+
+public class Client extends JFrame{
+
+ private JTextField userText;
+ private JTextArea chatWindow;
+ private ObjectOutputStream output;
+ private ObjectInputStream input;
+ private String message = "";
+ private String serverIP;
+ private Socket connection;
+
+ //constructor
+ public Client(String host){
+ super("Client");
+ serverIP = host;
+ userText = new JTextField();
+ userText.setEditable(false);
+ userText.addActionListener(
+ new ActionListener(){
+ public void actionPerformed(ActionEvent event){
+ sendMessage(event.getActionCommand());
+ userText.setText("");
+ }
+ }
+ );
+ add(userText, BorderLayout.NORTH);
+ chatWindow = new JTextArea();
+ add(new JScrollPane(chatWindow));
+ setSize(300, 150); //Sets the window size
+ setVisible(true);
+ }
+
+ //connect to server
+ public void startRunning(){
+ try{
+ connectToServer();
+ }catch(EOFException eofException){
+ showMessage("\n Client terminated the connection");
+ }catch(IOException ioException){
+ ioException.printStackTrace();
+ }finally{
+ closeConnection();
+ }
+ }
+}
diff --git a/Java_Intermediate/52_javaIntermediate.java b/Java_Intermediate/52_javaIntermediate.java
new file mode 100644
index 0000000..fbe3a45
--- /dev/null
+++ b/Java_Intermediate/52_javaIntermediate.java
@@ -0,0 +1,60 @@
+import java.io.*;
+import java.net.*;
+import java.awt.*;
+import java.awt.event.*;
+
+import javax.swing.*;
+
+public class Client extends JFrame{
+
+ private JTextField userText;
+ private JTextArea chatWindow;
+ private ObjectOutputStream output;
+ private ObjectInputStream input;
+ private String message = "";
+ private String serverIP;
+ private Socket connection;
+
+ //constructor
+ public Client(String host){
+ super("Client");
+ serverIP = host;
+ userText = new JTextField();
+ userText.setEditable(false);
+ userText.addActionListener(
+ new ActionListener(){
+ public void actionPerformed(ActionEvent event){
+ sendMessage(event.getActionCommand());
+ userText.setText("");
+ }
+ }
+ );
+ add(userText, BorderLayout.NORTH);
+ chatWindow = new JTextArea();
+ add(new JScrollPane(chatWindow));
+ setSize(300, 150); //Sets the window size
+ setVisible(true);
+ }
+
+ //connect to server
+ public void startRunning(){
+ try{
+ connectToServer();
+ setupStreams();
+ whileChatting();
+ }catch(EOFException eofException){
+ showMessage("\n Client terminated the connection");
+ }catch(IOException ioException){
+ ioException.printStackTrace();
+ }finally{
+ closeConnection();
+ }
+ }
+
+ //connect to server
+ private void connectToServer() throws IOException{
+ showMessage("Attempting connection... \n");
+ connection = new Socket(InetAddress.getByName(serverIP), 6789);
+ showMessage("Connection Established! Connected to: " + connection.getInetAddress().getHostName());
+ }
+}
diff --git a/Java_Intermediate/53_javaIntermediate.java b/Java_Intermediate/53_javaIntermediate.java
new file mode 100644
index 0000000..2450bfa
--- /dev/null
+++ b/Java_Intermediate/53_javaIntermediate.java
@@ -0,0 +1,68 @@
+import java.io.*;
+import java.net.*;
+import java.awt.*;
+import java.awt.event.*;
+
+import javax.swing.*;
+
+public class Client extends JFrame{
+
+ private JTextField userText;
+ private JTextArea chatWindow;
+ private ObjectOutputStream output;
+ private ObjectInputStream input;
+ private String message = "";
+ private String serverIP;
+ private Socket connection;
+
+ //constructor
+ public Client(String host){
+ super("Client");
+ serverIP = host;
+ userText = new JTextField();
+ userText.setEditable(false);
+ userText.addActionListener(
+ new ActionListener(){
+ public void actionPerformed(ActionEvent event){
+ sendMessage(event.getActionCommand());
+ userText.setText("");
+ }
+ }
+ );
+ add(userText, BorderLayout.NORTH);
+ chatWindow = new JTextArea();
+ add(new JScrollPane(chatWindow));
+ setSize(300, 150); //Sets the window size
+ setVisible(true);
+ }
+
+ //connect to server
+ public void startRunning(){
+ try{
+ connectToServer();
+ setupStreams();
+ whileChatting();
+ }catch(EOFException eofException){
+ showMessage("\n Client terminated the connection");
+ }catch(IOException ioException){
+ ioException.printStackTrace();
+ }finally{
+ closeConnection();
+ }
+ }
+
+ //connect to server
+ private void connectToServer() throws IOException{
+ showMessage("Attempting connection... \n");
+ connection = new Socket(InetAddress.getByName(serverIP), 6789);
+ showMessage("Connection Established! Connected to: " + connection.getInetAddress().getHostName());
+ }
+
+ //set up streams
+ private void setupStreams() throws IOException{
+ output = new ObjectOutputStream(connection.getOutputStream());
+ output.flush();
+ input = new ObjectInputStream(connection.getInputStream());
+ showMessage("\n The streams are now set up! \n");
+ }
+}
diff --git a/Java_Intermediate/54_javaIntermediate.java b/Java_Intermediate/54_javaIntermediate.java
new file mode 100644
index 0000000..865db02
--- /dev/null
+++ b/Java_Intermediate/54_javaIntermediate.java
@@ -0,0 +1,82 @@
+import java.io.*;
+import java.net.*;
+import java.awt.*;
+import java.awt.event.*;
+
+import javax.swing.*;
+
+public class Client extends JFrame{
+
+ private JTextField userText;
+ private JTextArea chatWindow;
+ private ObjectOutputStream output;
+ private ObjectInputStream input;
+ private String message = "";
+ private String serverIP;
+ private Socket connection;
+
+ //constructor
+ public Client(String host){
+ super("Client");
+ serverIP = host;
+ userText = new JTextField();
+ userText.setEditable(false);
+ userText.addActionListener(
+ new ActionListener(){
+ public void actionPerformed(ActionEvent event){
+ sendMessage(event.getActionCommand());
+ userText.setText("");
+ }
+ }
+ );
+ add(userText, BorderLayout.NORTH);
+ chatWindow = new JTextArea();
+ add(new JScrollPane(chatWindow));
+ setSize(300, 150); //Sets the window size
+ setVisible(true);
+ }
+
+ //connect to server
+ public void startRunning(){
+ try{
+ connectToServer();
+ setupStreams();
+ whileChatting();
+ }catch(EOFException eofException){
+ showMessage("\n Client terminated the connection");
+ }catch(IOException ioException){
+ ioException.printStackTrace();
+ }finally{
+ closeConnection();
+ }
+ }
+
+ //connect to server
+ private void connectToServer() throws IOException{
+ showMessage("Attempting connection... \n");
+ connection = new Socket(InetAddress.getByName(serverIP), 6789);
+ showMessage("Connection Established! Connected to: " + connection.getInetAddress().getHostName());
+ }
+
+ //set up streams
+ private void setupStreams() throws IOException{
+ output = new ObjectOutputStream(connection.getOutputStream());
+ output.flush();
+ input = new ObjectInputStream(connection.getInputStream());
+ showMessage("\n The streams are now set up! \n");
+ }
+
+ //while chatting with server
+ private void whileChatting() throws IOException{
+ ableToType(true);
+ do{
+ try{
+ message = (String) input.readObject();
+ showMessage("\n" + message);
+ }catch(ClassNotFoundException classNotFoundException){
+ showMessage("Unknown data received!");
+ }
+ }while(!message.equals("SERVER - END"));
+
+ }
+}
diff --git a/Java_Intermediate/55_javaIntermediate.java b/Java_Intermediate/55_javaIntermediate.java
new file mode 100644
index 0000000..69e081e
--- /dev/null
+++ b/Java_Intermediate/55_javaIntermediate.java
@@ -0,0 +1,95 @@
+import java.io.*;
+import java.net.*;
+import java.awt.*;
+import java.awt.event.*;
+
+import javax.swing.*;
+
+public class Client extends JFrame{
+
+ private JTextField userText;
+ private JTextArea chatWindow;
+ private ObjectOutputStream output;
+ private ObjectInputStream input;
+ private String message = "";
+ private String serverIP;
+ private Socket connection;
+
+ //constructor
+ public Client(String host){
+ super("Client");
+ serverIP = host;
+ userText = new JTextField();
+ userText.setEditable(false);
+ userText.addActionListener(
+ new ActionListener(){
+ public void actionPerformed(ActionEvent event){
+ sendMessage(event.getActionCommand());
+ userText.setText("");
+ }
+ }
+ );
+ add(userText, BorderLayout.NORTH);
+ chatWindow = new JTextArea();
+ add(new JScrollPane(chatWindow));
+ setSize(300, 150); //Sets the window size
+ setVisible(true);
+ }
+
+ //connect to server
+ public void startRunning(){
+ try{
+ connectToServer();
+ setupStreams();
+ whileChatting();
+ }catch(EOFException eofException){
+ showMessage("\n Client terminated the connection");
+ }catch(IOException ioException){
+ ioException.printStackTrace();
+ }finally{
+ closeConnection();
+ }
+ }
+
+ //connect to server
+ private void connectToServer() throws IOException{
+ showMessage("Attempting connection... \n");
+ connection = new Socket(InetAddress.getByName(serverIP), 6789);
+ showMessage("Connection Established! Connected to: " + connection.getInetAddress().getHostName());
+ }
+
+ //set up streams
+ private void setupStreams() throws IOException{
+ output = new ObjectOutputStream(connection.getOutputStream());
+ output.flush();
+ input = new ObjectInputStream(connection.getInputStream());
+ showMessage("\n The streams are now set up! \n");
+ }
+
+ //while chatting with server
+ private void whileChatting() throws IOException{
+ ableToType(true);
+ do{
+ try{
+ message = (String) input.readObject();
+ showMessage("\n" + message);
+ }catch(ClassNotFoundException classNotFoundException){
+ showMessage("Unknown data received!");
+ }
+ }while(!message.equals("SERVER - END"));
+ }
+
+ //Close connection
+ private void closeConnection(){
+ showMessage("\n Closing the connection!");
+ ableToType(false);
+ try{
+ output.close();
+ input.close();
+ connection.close();
+ }catch(IOException ioException){
+ ioException.printStackTrace();
+ }
+
+ }
+}
diff --git a/Java_Intermediate/56_javaIntermediate.java b/Java_Intermediate/56_javaIntermediate.java
new file mode 100644
index 0000000..485e2c9
--- /dev/null
+++ b/Java_Intermediate/56_javaIntermediate.java
@@ -0,0 +1,104 @@
+import java.io.*;
+import java.net.*;
+import java.awt.*;
+import java.awt.event.*;
+
+import javax.swing.*;
+
+public class Client extends JFrame{
+
+ private JTextField userText;
+ private JTextArea chatWindow;
+ private ObjectOutputStream output;
+ private ObjectInputStream input;
+ private String message = "";
+ private String serverIP;
+ private Socket connection;
+
+ //constructor
+ public Client(String host){
+ super("Client");
+ serverIP = host;
+ userText = new JTextField();
+ userText.setEditable(false);
+ userText.addActionListener(
+ new ActionListener(){
+ public void actionPerformed(ActionEvent event){
+ sendMessage(event.getActionCommand());
+ userText.setText("");
+ }
+ }
+ );
+ add(userText, BorderLayout.NORTH);
+ chatWindow = new JTextArea();
+ add(new JScrollPane(chatWindow));
+ setSize(300, 150); //Sets the window size
+ setVisible(true);
+ }
+
+ //connect to server
+ public void startRunning(){
+ try{
+ connectToServer();
+ setupStreams();
+ whileChatting();
+ }catch(EOFException eofException){
+ showMessage("\n Client terminated the connection");
+ }catch(IOException ioException){
+ ioException.printStackTrace();
+ }finally{
+ closeConnection();
+ }
+ }
+
+ //connect to server
+ private void connectToServer() throws IOException{
+ showMessage("Attempting connection... \n");
+ connection = new Socket(InetAddress.getByName(serverIP), 6789);
+ showMessage("Connection Established! Connected to: " + connection.getInetAddress().getHostName());
+ }
+
+ //set up streams
+ private void setupStreams() throws IOException{
+ output = new ObjectOutputStream(connection.getOutputStream());
+ output.flush();
+ input = new ObjectInputStream(connection.getInputStream());
+ showMessage("\n The streams are now set up! \n");
+ }
+
+ //while chatting with server
+ private void whileChatting() throws IOException{
+ ableToType(true);
+ do{
+ try{
+ message = (String) input.readObject();
+ showMessage("\n" + message);
+ }catch(ClassNotFoundException classNotFoundException){
+ showMessage("Unknown data received!");
+ }
+ }while(!message.equals("SERVER - END"));
+ }
+
+ //Close connection
+ private void closeConnection(){
+ showMessage("\n Closing the connection!");
+ ableToType(false);
+ try{
+ output.close();
+ input.close();
+ connection.close();
+ }catch(IOException ioException){
+ ioException.printStackTrace();
+ }
+ }
+
+ //send message to server
+ private void sendMessage(String message){
+ try{
+ output.writeObject("CLIENT - " + message);
+ output.flush();
+ }catch(IOException ioException){
+ chatWindow.append("\n Oops! Something went wrong!");
+ }
+ }
+}
diff --git a/Java_Intermediate/57_javaIntermediate.java b/Java_Intermediate/57_javaIntermediate.java
new file mode 100644
index 0000000..d84ae7b
--- /dev/null
+++ b/Java_Intermediate/57_javaIntermediate.java
@@ -0,0 +1,127 @@
+import java.io.*;
+import java.net.*;
+import java.awt.*;
+import java.awt.event.*;
+
+import javax.swing.*;
+
+public class Client extends JFrame{
+
+ private JTextField userText;
+ private JTextArea chatWindow;
+ private ObjectOutputStream output;
+ private ObjectInputStream input;
+ private String message = "";
+ private String serverIP;
+ private Socket connection;
+
+ //constructor
+ public Client(String host){
+ super("Client");
+ serverIP = host;
+ userText = new JTextField();
+ userText.setEditable(false);
+ userText.addActionListener(
+ new ActionListener(){
+ public void actionPerformed(ActionEvent event){
+ sendMessage(event.getActionCommand());
+ userText.setText("");
+ }
+ }
+ );
+ add(userText, BorderLayout.NORTH);
+ chatWindow = new JTextArea();
+ add(new JScrollPane(chatWindow));
+ setSize(300, 150); //Sets the window size
+ setVisible(true);
+ }
+
+ //connect to server
+ public void startRunning(){
+ try{
+ connectToServer();
+ setupStreams();
+ whileChatting();
+ }catch(EOFException eofException){
+ showMessage("\n Client terminated the connection");
+ }catch(IOException ioException){
+ ioException.printStackTrace();
+ }finally{
+ closeConnection();
+ }
+ }
+
+ //connect to server
+ private void connectToServer() throws IOException{
+ showMessage("Attempting connection... \n");
+ connection = new Socket(InetAddress.getByName(serverIP), 6789);
+ showMessage("Connection Established! Connected to: " + connection.getInetAddress().getHostName());
+ }
+
+ //set up streams
+ private void setupStreams() throws IOException{
+ output = new ObjectOutputStream(connection.getOutputStream());
+ output.flush();
+ input = new ObjectInputStream(connection.getInputStream());
+ showMessage("\n The streams are now set up! \n");
+ }
+
+ //while chatting with server
+ private void whileChatting() throws IOException{
+ ableToType(true);
+ do{
+ try{
+ message = (String) input.readObject();
+ showMessage("\n" + message);
+ }catch(ClassNotFoundException classNotFoundException){
+ showMessage("Unknown data received!");
+ }
+ }while(!message.equals("SERVER - END"));
+ }
+
+ //Close connection
+ private void closeConnection(){
+ showMessage("\n Closing the connection!");
+ ableToType(false);
+ try{
+ output.close();
+ input.close();
+ connection.close();
+ }catch(IOException ioException){
+ ioException.printStackTrace();
+ }
+ }
+
+ //send message to server
+ private void sendMessage(String message){
+ try{
+ output.writeObject("CLIENT - " + message);
+ output.flush();
+ showMessage("\nCLIENT - " + message);
+ }catch(IOException ioException){
+ chatWindow.append("\n Oops! Something went wrong!");
+ }
+ }
+
+ //update chat window
+ private void showMessage(final String message){
+ SwingUtilities.invokeLater(
+ new Runnable(){
+ public void run(){
+ chatWindow.append(message);
+ }
+ }
+ );
+ }
+
+ //allows user to type
+ private void ableToType(final boolean tof){
+ SwingUtilities.invokeLater(
+ new Runnable(){
+ public void run(){
+ userText.setEditable(tof);
+ }
+ }
+ );
+ }
+}
diff --git a/Java_Intermediate/58_javaIntermediate.java b/Java_Intermediate/58_javaIntermediate.java
new file mode 100644
index 0000000..afbfd44
--- /dev/null
+++ b/Java_Intermediate/58_javaIntermediate.java
@@ -0,0 +1,10 @@
+import javax.swing.JFrame;
+
+public class ClientTest {
+ public static void main(String[] args) {
+ Client charlie;
+ charlie = new Client("127.0.0.1");
+ charlie.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ charlie.startRunning();
+ }
+}
diff --git a/Networking/Digital_Ocean_Guide.pdf b/Networking/Digital_Ocean_Guide.pdf
new file mode 100644
index 0000000..3e0b1e9
Binary files /dev/null and b/Networking/Digital_Ocean_Guide.pdf differ
diff --git a/Node.js/008_NodeJs/app.js b/Node.js/008_NodeJs/app.js
new file mode 100644
index 0000000..7891c2f
--- /dev/null
+++ b/Node.js/008_NodeJs/app.js
@@ -0,0 +1,4 @@
+// To import use require and store in local variable
+// ./ means current directory
+var movies = require('./movies');
+movies.avatar();
\ No newline at end of file
diff --git a/Node.js/008_NodeJs/movies.js b/Node.js/008_NodeJs/movies.js
new file mode 100644
index 0000000..e4647aa
--- /dev/null
+++ b/Node.js/008_NodeJs/movies.js
@@ -0,0 +1,13 @@
+//Usually want to break up code into different files to better organize
+//All movie related code can go here
+//Other files can include this code
+function printAvatar(){
+ console.log("Avatar: PG-13");
+}
+
+function printChappie(){
+ console.log("Chappie: R");
+}
+
+//What gets exported is determined by 'module.exports' variable
+module.exports.avatar = printAvatar;
\ No newline at end of file
diff --git a/Node.js/009_NodeJs/app.js b/Node.js/009_NodeJs/app.js
new file mode 100644
index 0000000..7bf996a
--- /dev/null
+++ b/Node.js/009_NodeJs/app.js
@@ -0,0 +1,3 @@
+var movies = require('./movies');
+movies.printAvatar();
+console.log(movies.favMovie);
\ No newline at end of file
diff --git a/Node.js/009_NodeJs/movies.js b/Node.js/009_NodeJs/movies.js
new file mode 100644
index 0000000..c3f396b
--- /dev/null
+++ b/Node.js/009_NodeJs/movies.js
@@ -0,0 +1,13 @@
+module.exports = {
+
+ printAvatar: function(){
+ console.log("Avatar");
+ },
+
+ printChappie: function(){
+ console.log("Chappie");
+ },
+
+ favMovie: "The Matrix"
+
+};
\ No newline at end of file
diff --git a/Node.js/010_NodeJs/app.js b/Node.js/010_NodeJs/app.js
new file mode 100644
index 0000000..759d8e8
--- /dev/null
+++ b/Node.js/010_NodeJs/app.js
@@ -0,0 +1,2 @@
+require('./emily');
+require('./bucky');
\ No newline at end of file
diff --git a/Node.js/010_NodeJs/bucky.js b/Node.js/010_NodeJs/bucky.js
new file mode 100644
index 0000000..c8bbca0
--- /dev/null
+++ b/Node.js/010_NodeJs/bucky.js
@@ -0,0 +1,2 @@
+var movies = require('./movies');
+console.log("Bucky's favorite movie is: " + movies.favMovie);
\ No newline at end of file
diff --git a/Node.js/010_NodeJs/emily.js b/Node.js/010_NodeJs/emily.js
new file mode 100644
index 0000000..3374ca2
--- /dev/null
+++ b/Node.js/010_NodeJs/emily.js
@@ -0,0 +1,3 @@
+var movies = require('./movies');
+movies.favMovie = "The Notebook";
+console.log("Emily's favorite movie is: " + movies.favMovie);
\ No newline at end of file
diff --git a/Node.js/010_NodeJs/movies.js b/Node.js/010_NodeJs/movies.js
new file mode 100644
index 0000000..5185245
--- /dev/null
+++ b/Node.js/010_NodeJs/movies.js
@@ -0,0 +1,3 @@
+module.exports = {
+ favMovie: ""
+};
\ No newline at end of file
diff --git a/Node.js/011_NodeJs/app.js b/Node.js/011_NodeJs/app.js
new file mode 100644
index 0000000..759d8e8
--- /dev/null
+++ b/Node.js/011_NodeJs/app.js
@@ -0,0 +1,2 @@
+require('./emily');
+require('./bucky');
\ No newline at end of file
diff --git a/Node.js/011_NodeJs/bucky.js b/Node.js/011_NodeJs/bucky.js
new file mode 100644
index 0000000..7c08163
--- /dev/null
+++ b/Node.js/011_NodeJs/bucky.js
@@ -0,0 +1,5 @@
+var movies = require('./movies');
+
+var buckysMovies = movies();
+buckysMovies.favMovie = "Good Will Hunting";
+console.log("Bucky's favorite movie is: " + buckysMovies.favMovie);
\ No newline at end of file
diff --git a/Node.js/011_NodeJs/emily.js b/Node.js/011_NodeJs/emily.js
new file mode 100644
index 0000000..525c525
--- /dev/null
+++ b/Node.js/011_NodeJs/emily.js
@@ -0,0 +1,5 @@
+var movies = require('./movies');
+
+var emilysMovies = movies();
+emilysMovies.favMovie = "The Notebook";
+console.log("Emily's favorite movie is: " + emilysMovies.favMovie);
\ No newline at end of file
diff --git a/Node.js/011_NodeJs/movies.js b/Node.js/011_NodeJs/movies.js
new file mode 100644
index 0000000..3a73d7c
--- /dev/null
+++ b/Node.js/011_NodeJs/movies.js
@@ -0,0 +1,5 @@
+module.exports = function () {
+ return {
+ favMovie: ""
+ }
+};
\ No newline at end of file
diff --git a/Node.js/013_NodeJs/server.js b/Node.js/013_NodeJs/server.js
new file mode 100644
index 0000000..c179b8b
--- /dev/null
+++ b/Node.js/013_NodeJs/server.js
@@ -0,0 +1,17 @@
+var http = require("http");
+
+//This is the callback method, is called every time a user makes a request
+//Request object has info about their request, response object is what we send back to them
+function onRequest(request, response) {
+ console.log("A user made a request" + request.url);
+ response.writeHead(200, {"Content-Type": "text/plain"});
+ response.write("I am a simple Node server!");
+ response.end();
+}
+
+//Create a server and listen for requests on this port
+http.createServer(onRequest).listen(8888);
+console.log("Server is now running...");
+
+//Now open Chrome and go to http://localhost:8888
+//Saying that user made request twice because browser also makes a request for the favicon
\ No newline at end of file
diff --git a/Node.js/014_NodeJs/index.html b/Node.js/014_NodeJs/index.html
new file mode 100644
index 0000000..dfdb014
--- /dev/null
+++ b/Node.js/014_NodeJs/index.html
@@ -0,0 +1,10 @@
+
+
+
+
+ thenewboston
+
+
+ Wow this site is awesome!
+
+
\ No newline at end of file
diff --git a/Node.js/014_NodeJs/server.js b/Node.js/014_NodeJs/server.js
new file mode 100644
index 0000000..cd1f2c0
--- /dev/null
+++ b/Node.js/014_NodeJs/server.js
@@ -0,0 +1,27 @@
+var http = require("http");
+var fs = require("fs");
+
+//We will send them a 404 response if page doesn't exist
+function send404Response(response){
+ response.writeHead(404, {"Content-Type": "text/plain"});
+ response.write("Error 404 - Page not found");
+ response.end();
+}
+
+//Handle their request
+function onRequest(request, response) {
+
+ if( request.method == 'GET' && request.url == '/' ){
+ response.writeHead(200, {"Content-Type": "text/html"});
+ //Open file as readable stream, pipe stream to response object
+ fs.createReadStream("./index.html").pipe(response);
+ }else{
+ send404Response(response);
+ }
+
+}
+
+http.createServer(onRequest).listen(8888);
+console.log("Server is now running...");
+
+//For 404 - http://localhost:8888/cornbacon
\ No newline at end of file
diff --git a/Node.js/021_NodeJs/ana_roster.json b/Node.js/021_NodeJs/ana_roster.json
new file mode 100644
index 0000000..933cbfb
--- /dev/null
+++ b/Node.js/021_NodeJs/ana_roster.json
@@ -0,0 +1,355 @@
+{
+ "timestamp":"Mon Apr 06 11:14:59 EDT 2015",
+ "goalie":[
+ {
+ "position":"Goalie",
+ "id":8475883,
+ "twitterURL":"https://twitter.com/f_andersen30",
+ "weight":236,
+ "height":"6' 3\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8475883.jpg",
+ "birthplace":"Herning, DNK",
+ "twitterHandle":"f_andersen30",
+ "age":25,
+ "name":"Frederik Andersen",
+ "birthdate":"October 02, 1989",
+ "number":31
+ },
+ {
+ "position":"Goalie",
+ "id":8476434,
+ "twitterURL":"https://twitter.com/JohnGibson35",
+ "weight":216,
+ "height":"6' 3\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8476434.jpg",
+ "birthplace":"Pittsburgh, PA, USA",
+ "twitterHandle":"JohnGibson35",
+ "age":21,
+ "name":"John Gibson",
+ "birthdate":"July 14, 1993",
+ "number":36
+ }
+ ],
+ "defensemen":[
+ {
+ "position":"Defenseman",
+ "id":8467400,
+ "weight":208,
+ "height":"6' 1\"",
+ "imageUrl":"http://2.cdn.nhle.com/photos/mugs/8467400.jpg",
+ "birthplace":"Sorel, QC, CAN",
+ "age":34,
+ "name":"Francois Beauchemin",
+ "birthdate":"June 04, 1980",
+ "number":23
+ },
+ {
+ "position":"Defenseman",
+ "id":8475155,
+ "twitterURL":"https://twitter.com/Despres747",
+ "weight":214,
+ "height":"6' 4\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8475155.jpg",
+ "birthplace":"Laval, QC, CAN",
+ "twitterHandle":"Despres747",
+ "age":23,
+ "name":"Simon Despres",
+ "birthdate":"July 27, 1991",
+ "number":24
+ },
+ {
+ "position":"Defenseman",
+ "id":8475764,
+ "twitterURL":"https://twitter.com/C_Fowler4",
+ "weight":211,
+ "height":"6' 1\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8475764.jpg",
+ "birthplace":"Windsor, ON, CAN",
+ "twitterHandle":"C_Fowler4",
+ "age":23,
+ "name":"Cam Fowler",
+ "birthdate":"December 05, 1991",
+ "number":4
+ },
+ {
+ "position":"Defenseman",
+ "id":8473560,
+ "weight":205,
+ "height":"6' 3\"",
+ "imageUrl":"http://2.cdn.nhle.com/photos/mugs/8473560.jpg",
+ "birthplace":"Munich, DEU",
+ "age":27,
+ "name":"Korbinian Holzer",
+ "birthdate":"February 16, 1988",
+ "number":5
+ },
+ {
+ "position":"Defenseman",
+ "id":8476854,
+ "twitterURL":"https://twitter.com/HampeLindholm",
+ "weight":205,
+ "height":"6' 3\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8476854.jpg",
+ "birthplace":"Helsingborg, SWE",
+ "twitterHandle":"HampeLindholm",
+ "age":21,
+ "name":"Hampus Lindholm",
+ "birthdate":"January 20, 1994",
+ "number":47
+ },
+ {
+ "position":"Defenseman",
+ "id":8470886,
+ "weight":212,
+ "height":"6' 3\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8470886.jpg",
+ "birthplace":"Port Mcneill, BC, CAN",
+ "age":30,
+ "name":"Clayton Stoner",
+ "birthdate":"February 19, 1985",
+ "number":3
+ },
+ {
+ "position":"Defenseman",
+ "id":8475222,
+ "weight":180,
+ "height":"5' 10\"",
+ "imageUrl":"http://2.cdn.nhle.com/photos/mugs/8475222.jpg",
+ "birthplace":"Jyväskylä, FIN",
+ "age":23,
+ "name":"Sami Vatanen",
+ "birthdate":"June 03, 1991",
+ "number":45
+ },
+ {
+ "position":"Defenseman",
+ "id":8470222,
+ "twitterURL":"https://twitter.com/jameswisniewski",
+ "weight":203,
+ "height":"5' 11\"",
+ "imageUrl":"http://2.cdn.nhle.com/photos/mugs/8470222.jpg",
+ "birthplace":"Canton, MI, USA",
+ "twitterHandle":"jameswisniewski",
+ "age":31,
+ "name":"James Wisniewski",
+ "birthdate":"February 21, 1984",
+ "number":20
+ }
+ ],
+ "forwards":[
+ {
+ "position":"Left Wing",
+ "id":8473492,
+ "twitterURL":"https://twitter.com/Matt_Beleskey",
+ "weight":204,
+ "height":"6' 0\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8473492.jpg",
+ "birthplace":"Windsor, ON, CAN",
+ "twitterHandle":"Matt_Beleskey",
+ "age":26,
+ "name":"Matt Beleskey",
+ "birthdate":"June 07, 1988",
+ "number":39
+ },
+ {
+ "position":"Left Wing",
+ "id":8471699,
+ "weight":184,
+ "height":"5' 10\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8471699.jpg",
+ "birthplace":"Toronto, ON, CAN",
+ "age":27,
+ "name":"Andrew Cogliano",
+ "birthdate":"June 14, 1987",
+ "number":7
+ },
+ {
+ "position":"Left Wing",
+ "id":8475770,
+ "twitterURL":"https://twitter.com/tweetem_up",
+ "weight":212,
+ "height":"6' 1\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8475770.jpg",
+ "birthplace":"Long Beach, CA, USA",
+ "twitterHandle":"tweetem_up",
+ "age":22,
+ "name":"Emerson Etem",
+ "birthdate":"June 16, 1992",
+ "number":16
+ },
+ {
+ "position":"Left Wing",
+ "id":8470039,
+ "weight":192,
+ "height":"6' 1\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8470039.jpg",
+ "birthplace":"Koprivnice, CZE",
+ "age":30,
+ "name":"Tomas Fleischmann",
+ "birthdate":"May 16, 1984",
+ "number":14
+ },
+ {
+ "position":"Center",
+ "id":8470612,
+ "weight":218,
+ "height":"6' 4\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8470612.jpg",
+ "birthplace":"Regina, SK, CAN",
+ "age":29,
+ "name":"Ryan Getzlaf",
+ "birthdate":"May 10, 1985",
+ "number":15
+ },
+ {
+ "position":"Right Wing",
+ "id":8469490,
+ "weight":224,
+ "height":"6' 2\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8469490.jpg",
+ "birthplace":"Minot, ND, USA",
+ "age":33,
+ "name":"Tim Jackman",
+ "birthdate":"November 14, 1981",
+ "number":18
+ },
+ {
+ "position":"Center",
+ "id":8470616,
+ "twitterURL":"https://twitter.com/Ryan_Kesler",
+ "weight":208,
+ "height":"6' 2\"",
+ "imageUrl":"http://2.cdn.nhle.com/photos/mugs/8470616.jpg",
+ "birthplace":"Livonia, MI, USA",
+ "twitterHandle":"Ryan_Kesler",
+ "age":30,
+ "name":"Ryan Kesler",
+ "birthdate":"August 31, 1984",
+ "number":17
+ },
+ {
+ "position":"Left Wing",
+ "id":8474034,
+ "twitterURL":"https://twitter.com/patmaroon",
+ "weight":231,
+ "height":"6' 2\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8474034.jpg",
+ "birthplace":"St. Louis, MO, USA",
+ "twitterHandle":"patmaroon",
+ "age":26,
+ "name":"Patrick Maroon",
+ "birthdate":"April 23, 1988",
+ "number":19
+ },
+ {
+ "position":"Right Wing",
+ "id":8476474,
+ "twitterURL":"https://twitter.com/stefannoesen",
+ "weight":205,
+ "height":"6' 2\"",
+ "imageUrl":"http://2.cdn.nhle.com/photos/mugs/8476474.jpg",
+ "birthplace":"Plano, TX, USA",
+ "twitterHandle":"stefannoesen",
+ "age":22,
+ "name":"Stefan Noesen",
+ "birthdate":"February 12, 1993",
+ "number":64
+ },
+ {
+ "position":"Right Wing",
+ "id":8475151,
+ "twitterURL":"https://twitter.com/kylepalmieri",
+ "weight":196,
+ "height":"5' 11\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8475151.jpg",
+ "birthplace":"Smithtown, NY, USA",
+ "twitterHandle":"kylepalmieri",
+ "age":24,
+ "name":"Kyle Palmieri",
+ "birthdate":"February 01, 1991",
+ "number":21
+ },
+ {
+ "position":"Right Wing",
+ "id":8470621,
+ "weight":213,
+ "height":"6' 3\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8470621.jpg",
+ "birthplace":"Peterborough, ON, CAN",
+ "age":29,
+ "name":"Corey Perry",
+ "birthdate":"May 16, 1985",
+ "number":10
+ },
+ {
+ "position":"Center",
+ "id":8476483,
+ "twitterURL":"https://twitter.com/RickyRakell93",
+ "weight":201,
+ "height":"6' 0\"",
+ "imageUrl":"http://2.cdn.nhle.com/photos/mugs/8476483.jpg",
+ "birthplace":"Sundbyberg, SWE",
+ "twitterHandle":"RickyRakell93",
+ "age":21,
+ "name":"Rickard Rakell",
+ "birthdate":"May 05, 1993",
+ "number":67
+ },
+ {
+ "position":"Left Wing",
+ "id":8478137,
+ "twitterURL":"https://twitter.com/sekacjiri",
+ "weight":195,
+ "height":"6' 2\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8478137.jpg",
+ "birthplace":"Kladno, CZE",
+ "twitterHandle":"sekacjiri",
+ "age":22,
+ "name":"Jiri Sekac",
+ "birthdate":"June 10, 1992",
+ "number":46
+ },
+ {
+ "position":"Right Wing",
+ "id":8475164,
+ "twitterURL":"https://twitter.com/jsilfverberg33",
+ "weight":199,
+ "height":"6' 0\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8475164.jpg",
+ "birthplace":"Gävle, SWE",
+ "twitterHandle":"jsilfverberg33",
+ "age":24,
+ "name":"Jakob Silfverberg",
+ "birthdate":"October 13, 1990",
+ "number":33
+ },
+ {
+ "position":"Center",
+ "id":8470775,
+ "twitterURL":"https://twitter.com/NateThompson44",
+ "weight":210,
+ "height":"6' 0\"",
+ "imageUrl":"http://2.cdn.nhle.com/photos/mugs/8470775.jpg",
+ "birthplace":"Anchorage, AK, USA",
+ "twitterHandle":"NateThompson44",
+ "age":30,
+ "name":"Nate Thompson",
+ "birthdate":"October 05, 1984",
+ "number":44
+ },
+ {
+ "position":"Right Wing",
+ "id":8475780,
+ "twitterURL":"https://twitter.com/chriswags23",
+ "weight":202,
+ "height":"6' 0\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8475780.jpg",
+ "birthplace":"Walpole, MA, USA",
+ "twitterHandle":"chriswags23",
+ "age":23,
+ "name":"Chris Wagner",
+ "birthdate":"May 27, 1991",
+ "number":62
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Node.js/021_NodeJs/ana_stats.json b/Node.js/021_NodeJs/ana_stats.json
new file mode 100644
index 0000000..d22be76
--- /dev/null
+++ b/Node.js/021_NodeJs/ana_stats.json
@@ -0,0 +1,147 @@
+{
+ "skaterHighlight":7,
+ "timestamp":"Mon Jun 30 23:51:01 EDT 2014",
+ "skaterData":[
+ {
+ "id":8470612,
+ "data":"15, C, R. Getzlaf, 77, 31, 56, 87, 28, 31, 204, 21:17, 5, 0, 7, 1"
+ },
+ {
+ "id":8470621,
+ "data":"10, R, C. Perry, 81, 43, 39, 82, 32, 65, 280, 19:28, 8, 0, 9, 1"
+ },
+ {
+ "id":8474009,
+ "data":"13, C, N. Bonino, 77, 22, 27, 49, 14, 22, 159, 16:13, 7, 0, 2, 1"
+ },
+ {
+ "id":8473618,
+ "data":"22, C, M. Perreault, 69, 18, 25, 43, 13, 36, 120, 13:52, 4, 0, 1, 1"
+ },
+ {
+ "id":8471699,
+ "data":"7, C, A. Cogliano, 82, 21, 21, 42, 13, 26, 157, 15:23, 0, 3, 5, 0"
+ },
+ {
+ "id":8475764,
+ "data":"4, D, C. Fowler, 70, 6, 30, 36, 15, 14, 100, 23:51, 4, 1, 2, 0"
+ },
+ {
+ "id":8471208,
+ "data":"17, L, D. Penner, 49, 13, 19, 32, 22, 28, 100, 15:15, 5, 0, 2, 0"
+ },
+ {
+ "id":8475151,
+ "data":"21, R, K. Palmieri, 71, 14, 17, 31, 9, 38, 147, 11:56, 0, 0, 4, 1"
+ },
+ {
+ "id":8471476,
+ "data":"34, C, D. Winnik, 76, 6, 24, 30, 6, 23, 115, 15:23, 0, 2, 2, 0"
+ },
+ {
+ "id":8476854,
+ "data":"47, D, H. Lindholm, 78, 6, 24, 30, 29, 36, 116, 19:25, 1, 0, 1, 0"
+ },
+ {
+ "id":8459442,
+ "data":"11, C, S. Koivu, 65, 11, 18, 29, 3, 46, 81, 15:02, 0, 1, 1, 1"
+ },
+ {
+ "id":8474034,
+ "data":"62, L, P. Maroon, 62, 11, 18, 29, 11, 101, 93, 12:18, 1, 0, 3, 0"
+ },
+ {
+ "id":8457981,
+ "data":"8, R, T. Selanne, 64, 9, 18, 27, 8, 12, 111, 14:07, 4, 0, 3, 0"
+ },
+ {
+ "id":8473492,
+ "data":"39, L, M. Beleskey, 55, 9, 15, 24, 8, 64, 112, 12:26, 0, 0, 2, 0"
+ },
+ {
+ "id":8475164,
+ "data":"33, R, J. Silfverberg, 52, 10, 13, 23, 2, 12, 119, 14:15, 1, 2, 1, 0"
+ },
+ {
+ "id":8475222,
+ "data":"45, D, S. Vatanen, 48, 6, 15, 21, 9, 22, 73, 17:27, 2, 0, 0, 0"
+ },
+ {
+ "id":8473933,
+ "data":"6, D, B. Lovejoy, 78, 5, 13, 18, 21, 39, 107, 19:23, 0, 0, 2, 0"
+ },
+ {
+ "id":8467400,
+ "data":"23, D, F. Beauchemin, 70, 4, 13, 17, 26, 39, 100, 23:05, 1, 0, 1, 0"
+ },
+ {
+ "id":8475770,
+ "data":"65, L, E. Etem, 29, 7, 4, 11, 3, 4, 44, 12:47, 1, 1, 2, 0"
+ },
+ {
+ "id":8467332,
+ "data":"55, D, B. Allen, 68, 0, 10, 10, 20, 75, 60, 17:33, 0, 0, 0, 0"
+ },
+ {
+ "id":8475758,
+ "data":"77, R, D. Smith-Pelly, 19, 2, 8, 10, 5, 2, 23, 12:38, 0, 0, 0, 0"
+ },
+ {
+ "id":8474579,
+ "data":"5, D, L. Sbisa, 30, 1, 5, 6, 0, 43, 30, 17:03, 0, 0, 0, 0"
+ },
+ {
+ "id":8462196,
+ "data":"19, D, S. Robidas, 14, 1, 4, 5, 3, 8, 21, 20:37, 0, 0, 1, 1"
+ },
+ {
+ "id":8471241,
+ "data":"28, D, M. Fistric, 34, 1, 4, 5, 9, 28, 22, 15:24, 0, 0, 0, 0"
+ },
+ {
+ "id":8469490,
+ "data":"18, R, T. Jackman, 26, 3, 1, 4, -2, 62, 37, 7:22, 0, 0, 0, 0"
+ },
+ {
+ "id":8476483,
+ "data":"67, C, R. Rakell, 18, 0, 4, 4, -3, 2, 22, 11:43, 0, 0, 0, 0"
+ },
+ {
+ "id":8474005,
+ "data":"51, D, A. Grant, 2, 2, 0, 2, 3, 2, 2, 12:10, 0, 0, 0, 0"
+ },
+ {
+ "id":8467910,
+ "data":"40, D, N. Yonkman, 2, 0, 1, 1, -1, 0, 3, 14:53, 0, 0, 0, 0"
+ },
+ {
+ "id":8475180,
+ "data":"74, C, P. Holland, 4, 1, 0, 1, -1, 2, 3, 9:05, 0, 0, 0, 0"
+ },
+ {
+ "id":8469483,
+ "data":"20, C, D. Steckel, 6, 0, 0, 0, 0, 0, 8, 10:50, 0, 0, 0, 0"
+ }
+ ],
+ "skaterCategories":"#, POS, NAME, GP, G, A, P, +/-, PIM, S, TOI/G, PP, SH, GWG, OT",
+ "goalieHighlight":5,
+ "goalieData":[
+ {
+ "id":8473972,
+ "data":"1, G, J. Hiller, 50, 29, 13, 7, 120, 1348, 1228, 0.911000, 2.480000, 5, 0, 2909"
+ },
+ {
+ "id":8475883,
+ "data":"31, G, F. Andersen, 28, 20, 5, 0, 60, 783, 723, 0.923000, 2.290000, 0, 0, 1569"
+ },
+ {
+ "id":8476434,
+ "data":"36, G, J. Gibson, 3, 3, 0, 0, 4, 87, 83, 0.954000, 1.330000, 1, 0, 181"
+ },
+ {
+ "id":8476839,
+ "data":"30, G, V. Fasth, 5, 2, 2, 1, 15, 131, 116, 0.885000, 2.950000, 0, 0, 305"
+ }
+ ],
+ "goalieCategories":"#, POS, NAME, GP, W, L, OT, GA, SA, Sv, SV%, GAA, SO, PIM, Min"
+}
\ No newline at end of file
diff --git a/Node.js/021_NodeJs/car_roster.json b/Node.js/021_NodeJs/car_roster.json
new file mode 100644
index 0000000..f73fdb3
--- /dev/null
+++ b/Node.js/021_NodeJs/car_roster.json
@@ -0,0 +1,319 @@
+{
+ "timestamp":"Mon Apr 06 11:44:49 EDT 2015",
+ "goalie":[
+ {
+ "position":"Goalie",
+ "id":8471418,
+ "weight":203,
+ "height":"5' 11\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8471418.jpg",
+ "birthplace":"Ust-Kamenogorsk, KAZ",
+ "age":28,
+ "name":"Anton Khudobin",
+ "birthdate":"May 07, 1986",
+ "number":31
+ },
+ {
+ "position":"Goalie",
+ "id":8470320,
+ "weight":185,
+ "height":"6' 1\"",
+ "imageUrl":"http://2.cdn.nhle.com/photos/mugs/8470320.jpg",
+ "birthplace":"Saskatoon, SK, CAN",
+ "age":31,
+ "name":"Cam Ward",
+ "birthdate":"February 29, 1984",
+ "number":30
+ }
+ ],
+ "defensemen":[
+ {
+ "position":"Defenseman",
+ "id":8474135,
+ "weight":225,
+ "height":"6' 4\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8474135.jpg",
+ "birthplace":"Windsor, ON, CAN",
+ "age":26,
+ "name":"Brett Bellemore",
+ "birthdate":"June 25, 1988",
+ "number":73
+ },
+ {
+ "position":"Defenseman",
+ "id":8475732,
+ "weight":205,
+ "height":"6' 0\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8475732.jpg",
+ "birthplace":"Montreal, QC, CAN",
+ "age":23,
+ "name":"Danny Biega",
+ "birthdate":"September 29, 1991",
+ "number":41
+ },
+ {
+ "position":"Defenseman",
+ "id":8475753,
+ "twitterURL":"https://twitter.com/JustinFaulk27",
+ "weight":215,
+ "height":"6' 0\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8475753.jpg",
+ "birthplace":"South St.Paul, MN, USA",
+ "twitterHandle":"JustinFaulk27",
+ "age":23,
+ "name":"Justin Faulk",
+ "birthdate":"March 20, 1992",
+ "number":27
+ },
+ {
+ "position":"Defenseman",
+ "id":8468493,
+ "weight":210,
+ "height":"6' 3\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8468493.jpg",
+ "birthplace":"Bolton, CT, USA",
+ "age":34,
+ "name":"Ron Hainsey",
+ "birthdate":"March 24, 1981",
+ "number":65
+ },
+ {
+ "position":"Defenseman",
+ "id":8474519,
+ "weight":190,
+ "height":"5' 10\"",
+ "imageUrl":"http://2.cdn.nhle.com/photos/mugs/8474519.jpg",
+ "birthplace":"Minnetonka, MN, USA",
+ "age":29,
+ "name":"Jack Hillen",
+ "birthdate":"January 24, 1986",
+ "number":38
+ },
+ {
+ "position":"Defenseman",
+ "id":8474661,
+ "twitterURL":"https://twitter.com/TheBigCzech23",
+ "weight":195,
+ "height":"6' 1\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8474661.jpg",
+ "birthplace":"Zlin, CZE",
+ "twitterHandle":"TheBigCzech23",
+ "age":24,
+ "name":"Michal Jordan",
+ "birthdate":"July 17, 1990",
+ "number":47
+ },
+ {
+ "position":"Defenseman",
+ "id":8468639,
+ "twitterURL":"https://twitter.com/hoosierjm26",
+ "weight":185,
+ "height":"5' 10\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8468639.jpg",
+ "birthplace":"Indianapolis, IN, USA",
+ "twitterHandle":"hoosierjm26",
+ "age":34,
+ "name":"John-Michael Liles",
+ "birthdate":"November 25, 1980",
+ "number":26
+ },
+ {
+ "position":"Defenseman",
+ "id":8476465,
+ "twitterURL":"https://twitter.com/ryanmurphy24",
+ "weight":185,
+ "height":"5' 11\"",
+ "imageUrl":"http://2.cdn.nhle.com/photos/mugs/8476465.jpg",
+ "birthplace":"Aurora, ON, CAN",
+ "twitterHandle":"ryanmurphy24",
+ "age":22,
+ "name":"Ryan Murphy",
+ "birthdate":"March 31, 1993",
+ "number":7
+ },
+ {
+ "position":"Defenseman",
+ "id":8475294,
+ "weight":217,
+ "height":"6' 3\"",
+ "imageUrl":"http://2.cdn.nhle.com/photos/mugs/8475294.jpg",
+ "birthplace":"Kuopio, FIN",
+ "age":23,
+ "name":"Rasmus Rissanen",
+ "birthdate":"July 13, 1991",
+ "number":62
+ }
+ ],
+ "forwards":[
+ {
+ "position":"Right Wing",
+ "id":8470302,
+ "twitterURL":"https://twitter.com/pattydwyer39",
+ "weight":175,
+ "height":"5' 11\"",
+ "imageUrl":"http://2.cdn.nhle.com/photos/mugs/8470302.jpg",
+ "birthplace":"Spokane, WA, USA",
+ "twitterHandle":"pattydwyer39",
+ "age":31,
+ "name":"Patrick Dwyer",
+ "birthdate":"June 22, 1983",
+ "number":39
+ },
+ {
+ "position":"Left Wing",
+ "id":8471804,
+ "weight":178,
+ "height":"5' 5\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8471804.jpg",
+ "birthplace":"Oxford, MI, USA",
+ "age":27,
+ "name":"Nathan Gerbe",
+ "birthdate":"July 24, 1987",
+ "number":14
+ },
+ {
+ "position":"Center",
+ "id":8477496,
+ "twitterURL":"https://twitter.com/lindholmelias",
+ "weight":192,
+ "height":"6' 1\"",
+ "imageUrl":"http://2.cdn.nhle.com/photos/mugs/8477496.jpg",
+ "birthplace":"Boden, SWE",
+ "twitterHandle":"lindholmelias",
+ "age":20,
+ "name":"Elias Lindholm",
+ "birthdate":"December 02, 1994",
+ "number":16
+ },
+ {
+ "position":"Center",
+ "id":8474089,
+ "twitterURL":"https://twitter.com/Bmalone22",
+ "weight":207,
+ "height":"6' 2\"",
+ "imageUrl":"http://2.cdn.nhle.com/photos/mugs/8474089.jpg",
+ "birthplace":"Miramichi, NB, CAN",
+ "twitterHandle":"Bmalone22",
+ "age":25,
+ "name":"Brad Malone",
+ "birthdate":"May 20, 1989",
+ "number":24
+ },
+ {
+ "position":"Center",
+ "id":8469508,
+ "weight":205,
+ "height":"6' 1\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8469508.jpg",
+ "birthplace":"Kingston, ON, CAN",
+ "age":32,
+ "name":"Jay McClement",
+ "birthdate":"March 02, 1983",
+ "number":18
+ },
+ {
+ "position":"Center",
+ "id":8474062,
+ "twitterURL":"https://twitter.com/rileynash20",
+ "weight":200,
+ "height":"6' 1\"",
+ "imageUrl":"http://2.cdn.nhle.com/photos/mugs/8474062.jpg",
+ "birthplace":"Consort, AB, CAN",
+ "twitterHandle":"rileynash20",
+ "age":25,
+ "name":"Riley Nash",
+ "birthdate":"May 09, 1989",
+ "number":20
+ },
+ {
+ "position":"Center",
+ "id":8475250,
+ "weight":200,
+ "height":"6' 3\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8475250.jpg",
+ "birthplace":"Prague, CZE",
+ "age":24,
+ "name":"Andrej Nestrasil",
+ "birthdate":"February 22, 1991",
+ "number":15
+ },
+ {
+ "position":"Center",
+ "id":8476437,
+ "twitterURL":"https://twitter.com/VictorRask",
+ "weight":200,
+ "height":"6' 2\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8476437.jpg",
+ "birthplace":"Leksand, SWE",
+ "twitterHandle":"VictorRask",
+ "age":22,
+ "name":"Victor Rask",
+ "birthdate":"March 01, 1993",
+ "number":49
+ },
+ {
+ "position":"Right Wing",
+ "id":8470120,
+ "weight":209,
+ "height":"6' 2\"",
+ "imageUrl":"http://2.cdn.nhle.com/photos/mugs/8470120.jpg",
+ "birthplace":"Krasnojarsk, RUS",
+ "age":31,
+ "name":"Alexander Semin",
+ "birthdate":"March 03, 1984",
+ "number":28
+ },
+ {
+ "position":"Left Wing",
+ "id":8475784,
+ "twitterURL":"https://twitter.com/JeffSkinner",
+ "weight":200,
+ "height":"5' 11\"",
+ "imageUrl":"http://2.cdn.nhle.com/photos/mugs/8475784.jpg",
+ "birthplace":"Toronto, ON, CAN",
+ "twitterHandle":"JeffSkinner",
+ "age":22,
+ "name":"Jeff Skinner",
+ "birthdate":"May 16, 1992",
+ "number":53
+ },
+ {
+ "position":"Center",
+ "id":8470595,
+ "weight":205,
+ "height":"6' 4\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8470595.jpg",
+ "birthplace":"Thunder Bay, ON, CAN",
+ "age":30,
+ "name":"Eric Staal",
+ "birthdate":"October 29, 1984",
+ "number":12
+ },
+ {
+ "position":"Center",
+ "id":8473533,
+ "weight":220,
+ "height":"6' 4\"",
+ "imageUrl":"http://2.cdn.nhle.com/nhl/en/v3/photos/mugs/8473533.jpg",
+ "birthplace":"Thunder Bay, ON, CAN",
+ "age":26,
+ "name":"Jordan Staal",
+ "birthdate":"September 10, 1988",
+ "number":11
+ },
+ {
+ "position":"Left Wing",
+ "id":8474052,
+ "twitterURL":"https://twitter.com/christerry25",
+ "weight":195,
+ "height":"5' 10\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8474052.jpg",
+ "birthplace":"Brampton, ON, CAN",
+ "twitterHandle":"christerry25",
+ "age":25,
+ "name":"Chris Terry",
+ "birthdate":"April 07, 1989",
+ "number":25
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Node.js/021_NodeJs/car_stats.json b/Node.js/021_NodeJs/car_stats.json
new file mode 100644
index 0000000..1956332
--- /dev/null
+++ b/Node.js/021_NodeJs/car_stats.json
@@ -0,0 +1,135 @@
+{
+ "skaterHighlight":7,
+ "timestamp":"Mon Jun 30 23:50:59 EDT 2014",
+ "skaterData":[
+ {
+ "id":8470595,
+ "data":"12, C, E. Staal, 79, 21, 40, 61, -13, 74, 230, 20:17, 1, 2, 0, 0"
+ },
+ {
+ "id":8475784,
+ "data":"53, L, J. Skinner, 71, 33, 21, 54, -14, 22, 274, 17:11, 11, 0, 6, 1"
+ },
+ {
+ "id":8471284,
+ "data":"4, D, A. Sekera, 74, 11, 33, 44, 4, 20, 142, 23:40, 4, 1, 1, 0"
+ },
+ {
+ "id":8470120,
+ "data":"28, R, A. Semin, 65, 22, 20, 42, 1, 42, 210, 19:54, 6, 1, 3, 1"
+ },
+ {
+ "id":8473533,
+ "data":"11, C, J. Staal, 82, 15, 25, 40, 2, 34, 165, 18:56, 2, 1, 2, 0"
+ },
+ {
+ "id":8475753,
+ "data":"27, D, J. Faulk, 76, 5, 27, 32, -9, 37, 152, 23:24, 2, 0, 1, 0"
+ },
+ {
+ "id":8471804,
+ "data":"14, L, N. Gerbe, 81, 16, 15, 31, -6, 36, 221, 16:24, 3, 2, 1, 0"
+ },
+ {
+ "id":8473482,
+ "data":"19, L, J. Tlusty, 68, 16, 14, 30, 2, 22, 131, 15:10, 0, 2, 5, 0"
+ },
+ {
+ "id":8474062,
+ "data":"20, C, R. Nash, 73, 10, 14, 24, 0, 29, 86, 12:40, 1, 0, 3, 0"
+ },
+ {
+ "id":8470302,
+ "data":"39, R, P. Dwyer, 75, 8, 14, 22, -2, 14, 134, 14:39, 0, 2, 2, 0"
+ },
+ {
+ "id":8477496,
+ "data":"16, C, E. Lindholm, 58, 9, 12, 21, -14, 4, 70, 14:31, 4, 0, 2, 0"
+ },
+ {
+ "id":8469462,
+ "data":"15, R, T. Ruutu, 57, 5, 11, 16, -19, 34, 79, 14:14, 2, 0, 1, 0"
+ },
+ {
+ "id":8468493,
+ "data":"65, D, R. Hainsey, 82, 4, 11, 15, -9, 45, 72, 21:26, 0, 0, 1, 0"
+ },
+ {
+ "id":8469531,
+ "data":"44, D, J. Harrison, 68, 4, 11, 15, -1, 44, 103, 16:37, 1, 0, 1, 1"
+ },
+ {
+ "id":8467334,
+ "data":"22, C, M. Malhotra, 69, 7, 6, 13, 0, 18, 53, 11:35, 0, 0, 1, 1"
+ },
+ {
+ "id":8474137,
+ "data":"21, L, D. Bowman, 70, 4, 8, 12, -2, 16, 80, 10:21, 0, 0, 0, 0"
+ },
+ {
+ "id":8476465,
+ "data":"7, D, R. Murphy, 48, 2, 10, 12, -9, 10, 81, 18:17, 1, 0, 0, 0"
+ },
+ {
+ "id":8474681,
+ "data":"8, C, A. Loktionov, 20, 3, 7, 10, -4, 2, 34, 14:35, 2, 0, 1, 0"
+ },
+ {
+ "id":8462041,
+ "data":"18, R, R. Dvorak, 60, 4, 5, 9, 3, 41, 52, 10:38, 0, 0, 2, 0"
+ },
+ {
+ "id":8468639,
+ "data":"26, D, J. Liles, 35, 2, 7, 9, 7, 8, 51, 20:05, 1, 0, 0, 0"
+ },
+ {
+ "id":8474135,
+ "data":"73, D, B. Bellemore, 64, 2, 6, 8, -1, 45, 54, 17:28, 0, 0, 0, 0"
+ },
+ {
+ "id":8469460,
+ "data":"5, D, M. Komisarek, 32, 0, 4, 4, -4, 14, 20, 11:41, 0, 0, 0, 0"
+ },
+ {
+ "id":8474576,
+ "data":"32, L, Z. Boychuk, 11, 1, 3, 4, 2, 0, 15, 10:11, 0, 0, 0, 0"
+ },
+ {
+ "id":8471840,
+ "data":"42, C, B. Sutter, 17, 1, 1, 2, -4, 9, 16, 7:33, 0, 0, 1, 0"
+ },
+ {
+ "id":8474052,
+ "data":"58, L, C. Terry, 10, 0, 2, 2, -4, 0, 13, 12:04, 0, 0, 0, 0"
+ },
+ {
+ "id":8469476,
+ "data":"6, D, T. Gleason, 17, 0, 1, 1, -7, 10, 15, 15:53, 0, 0, 0, 0"
+ },
+ {
+ "id":8473908,
+ "data":"8, R, K. Westgarth, 12, 0, 0, 0, -2, 4, 6, 4:52, 0, 0, 0, 0"
+ },
+ {
+ "id":8474030,
+ "data":"37, R, A. Palushaj, 2, 0, 0, 0, -1, 0, 2, 9:19, 0, 0, 0, 0"
+ }
+ ],
+ "skaterCategories":"#, POS, NAME, GP, G, A, P, +/-, PIM, S, TOI/G, PP, SH, GWG, OT",
+ "goalieHighlight":5,
+ "goalieData":[
+ {
+ "id":8471418,
+ "data":"31, G, A. Khudobin, 36, 19, 14, 1, 80, 1076, 996, 0.926000, 2.300000, 1, 0, 2084"
+ },
+ {
+ "id":8470320,
+ "data":"30, G, C. Ward, 30, 10, 12, 6, 84, 824, 740, 0.898000, 3.060000, 0, 2, 1645"
+ },
+ {
+ "id":8471251,
+ "data":"35, G, J. Peters, 21, 7, 9, 4, 51, 626, 575, 0.919000, 2.500000, 1, 4, 1225"
+ }
+ ],
+ "goalieCategories":"#, POS, NAME, GP, W, L, OT, GA, SA, Sv, SV%, GAA, SO, PIM, Min"
+}
\ No newline at end of file
diff --git a/Node.js/021_NodeJs/pit_roster.json b/Node.js/021_NodeJs/pit_roster.json
new file mode 100644
index 0000000..fdf93f1
--- /dev/null
+++ b/Node.js/021_NodeJs/pit_roster.json
@@ -0,0 +1,325 @@
+{
+ "timestamp":"Mon Apr 06 11:44:44 EDT 2015",
+ "goalie":[
+ {
+ "position":"Goalie",
+ "id":8470594,
+ "weight":180,
+ "height":"6' 2\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8470594.jpg",
+ "birthplace":"Sorel, QC, CAN",
+ "age":30,
+ "name":"Marc-Andre Fleury",
+ "birthdate":"November 28, 1984",
+ "number":29
+ },
+ {
+ "position":"Goalie",
+ "id":8471306,
+ "weight":220,
+ "height":"6' 1\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8471306.jpg",
+ "birthplace":"Fussen, DEU",
+ "age":29,
+ "name":"Thomas Greiss",
+ "birthdate":"January 29, 1986",
+ "number":1
+ }
+ ],
+ "defensemen":[
+ {
+ "position":"Defenseman",
+ "id":8471710,
+ "weight":189,
+ "height":"6' 1\"",
+ "imageUrl":"http://2.cdn.nhle.com/photos/mugs/8471710.jpg",
+ "birthplace":"Thunder Bay, ON, CAN",
+ "age":27,
+ "name":"Taylor Chorney",
+ "birthdate":"April 27, 1987",
+ "number":44
+ },
+ {
+ "position":"Defenseman",
+ "id":8474013,
+ "twitterURL":"https://twitter.com/icole28",
+ "weight":219,
+ "height":"6' 1\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8474013.jpg",
+ "birthplace":"Ann Arbor, MI, USA",
+ "twitterHandle":"icole28",
+ "age":26,
+ "name":"Ian Cole",
+ "birthdate":"February 21, 1989",
+ "number":28
+ },
+ {
+ "position":"Defenseman",
+ "id":8469555,
+ "twitterURL":"https://twitter.com/therealhoff10",
+ "weight":205,
+ "height":"6' 2\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8469555.jpg",
+ "birthplace":"Moers, DEU",
+ "twitterHandle":"therealhoff10",
+ "age":32,
+ "name":"Christian Ehrhoff",
+ "birthdate":"July 06, 1982",
+ "number":10
+ },
+ {
+ "position":"Defenseman",
+ "id":8471724,
+ "weight":201,
+ "height":"6' 0\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8471724.jpg",
+ "birthplace":"Montreal, QC, CAN",
+ "age":27,
+ "name":"Kris Letang",
+ "birthdate":"April 24, 1987",
+ "number":58
+ },
+ {
+ "position":"Defenseman",
+ "id":8473933,
+ "twitterURL":"https://twitter.com/RevLovejoy6",
+ "weight":206,
+ "height":"6' 1\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8473933.jpg",
+ "birthplace":"Concord, NH, USA",
+ "twitterHandle":"RevLovejoy6",
+ "age":31,
+ "name":"Ben Lovejoy",
+ "birthdate":"February 20, 1984",
+ "number":12
+ },
+ {
+ "position":"Defenseman",
+ "id":8476874,
+ "weight":206,
+ "height":"6' 2\"",
+ "imageUrl":"http://2.cdn.nhle.com/photos/mugs/8476874.jpg",
+ "birthplace":"Jyväskylä, FIN",
+ "age":20,
+ "name":"Olli Maatta",
+ "birthdate":"August 22, 1994",
+ "number":3
+ },
+ {
+ "position":"Defenseman",
+ "id":8468542,
+ "weight":200,
+ "height":"6' 1\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8468542.jpg",
+ "birthplace":"Minneapolis, MN, USA",
+ "age":34,
+ "name":"Paul Martin",
+ "birthdate":"March 05, 1981",
+ "number":7
+ },
+ {
+ "position":"Defenseman",
+ "id":8476884,
+ "weight":208,
+ "height":"6' 0\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8476884.jpg",
+ "birthplace":"Estevan, SK, CAN",
+ "age":21,
+ "name":"Derrick Pouliot",
+ "birthdate":"January 16, 1994",
+ "number":51
+ },
+ {
+ "position":"Defenseman",
+ "id":8467452,
+ "weight":212,
+ "height":"6' 1\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8467452.jpg",
+ "birthplace":"Syosset, NY, USA",
+ "age":36,
+ "name":"Rob Scuderi",
+ "birthdate":"December 30, 1978",
+ "number":4
+ }
+ ],
+ "forwards":[
+ {
+ "position":"Right Wing",
+ "id":8465166,
+ "weight":200,
+ "height":"6' 0\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8465166.jpg",
+ "birthplace":"Seria, BRN",
+ "age":37,
+ "name":"Craig Adams",
+ "birthdate":"April 26, 1977",
+ "number":27
+ },
+ {
+ "position":"Right Wing",
+ "id":8475761,
+ "weight":195,
+ "height":"6' 2\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8475761.jpg",
+ "birthplace":"Gardena, CA, USA",
+ "age":23,
+ "name":"Beau Bennett",
+ "birthdate":"November 27, 1991",
+ "number":19
+ },
+ {
+ "position":"Left Wing",
+ "id":8471260,
+ "weight":202,
+ "height":"6' 1\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8471260.jpg",
+ "birthplace":"Meadow Lake, SK, CAN",
+ "age":29,
+ "name":"Blake Comeau",
+ "birthdate":"February 18, 1986",
+ "number":17
+ },
+ {
+ "position":"Center",
+ "id":8471675,
+ "weight":200,
+ "height":"5' 11\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8471675.jpg",
+ "birthplace":"Cole Harbour, NS, CAN",
+ "age":27,
+ "name":"Sidney Crosby",
+ "birthdate":"August 07, 1987",
+ "number":87
+ },
+ {
+ "position":"Right Wing",
+ "id":8471703,
+ "twitterURL":"https://twitter.com/S9Downie",
+ "weight":191,
+ "height":"5' 11\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8471703.jpg",
+ "birthplace":"Newmarket, ON, CAN",
+ "twitterHandle":"S9Downie",
+ "age":28,
+ "name":"Steve Downie",
+ "birthdate":"April 03, 1987",
+ "number":23
+ },
+ {
+ "position":"Right Wing",
+ "id":8466393,
+ "weight":205,
+ "height":"6' 1\"",
+ "imageUrl":"http://2.cdn.nhle.com/photos/mugs/8466393.jpg",
+ "birthplace":"Laval, QC, CAN",
+ "age":35,
+ "name":"Pascal Dupuis",
+ "birthdate":"April 07, 1979",
+ "number":9
+ },
+ {
+ "position":"Right Wing",
+ "id":8471887,
+ "weight":189,
+ "height":"5' 11\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8471887.jpg",
+ "birthplace":"Sollentuna, SWE",
+ "age":28,
+ "name":"Patric Hornqvist",
+ "birthdate":"January 01, 1987",
+ "number":72
+ },
+ {
+ "position":"Left Wing",
+ "id":8470543,
+ "weight":195,
+ "height":"6' 0\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8470543.jpg",
+ "birthplace":"Regina, SK, CAN",
+ "age":35,
+ "name":"Chris Kunitz",
+ "birthdate":"September 26, 1979",
+ "number":14
+ },
+ {
+ "position":"Center",
+ "id":8470654,
+ "twitterURL":"https://twitter.com/MaX40LAp",
+ "weight":215,
+ "height":"6' 2\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8470654.jpg",
+ "birthplace":"Saint-Léonard, QC, CAN",
+ "twitterHandle":"MaX40LAp",
+ "age":30,
+ "name":"Maxim Lapierre",
+ "birthdate":"March 29, 1985",
+ "number":40
+ },
+ {
+ "position":"Center",
+ "id":8471215,
+ "twitterURL":"https://twitter.com/malkin71_",
+ "weight":195,
+ "height":"6' 3\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8471215.jpg",
+ "birthplace":"Magnitogorsk, RUS",
+ "twitterHandle":"malkin71_",
+ "age":28,
+ "name":"Evgeni Malkin",
+ "birthdate":"July 31, 1986",
+ "number":71
+ },
+ {
+ "position":"Left Wing",
+ "id":8474102,
+ "twitterURL":"https://twitter.com/DP_57",
+ "weight":200,
+ "height":"6' 0\"",
+ "imageUrl":"http://3.cdn.nhle.com/nhl/en/v3/photos/mugs/8474102.jpg",
+ "birthplace":"Sherbrooke, QC, CAN",
+ "twitterHandle":"DP_57",
+ "age":26,
+ "name":"David Perron",
+ "birthdate":"May 28, 1988",
+ "number":39
+ },
+ {
+ "position":"Center",
+ "id":8474096,
+ "weight":201,
+ "height":"6' 1\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8474096.jpg",
+ "birthplace":"Palmerston, ON, CAN",
+ "age":26,
+ "name":"Nick Spaling",
+ "birthdate":"September 19, 1988",
+ "number":13
+ },
+ {
+ "position":"Center",
+ "id":8474091,
+ "weight":190,
+ "height":"6' 3\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8474091.jpg",
+ "birthplace":"Huntington, NY, USA",
+ "age":26,
+ "name":"Brandon Sutter",
+ "birthdate":"February 14, 1989",
+ "number":16
+ },
+ {
+ "position":"Center",
+ "id":8471476,
+ "twitterURL":"https://twitter.com/Danwinnik34",
+ "weight":207,
+ "height":"6' 2\"",
+ "imageUrl":"http://3.cdn.nhle.com/nhl/en/v3/photos/mugs/8471476.jpg",
+ "birthplace":"Toronto, ON, CAN",
+ "twitterHandle":"Danwinnik34",
+ "age":30,
+ "name":"Daniel Winnik",
+ "birthdate":"March 06, 1985",
+ "number":26
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Node.js/021_NodeJs/pit_stats.json b/Node.js/021_NodeJs/pit_stats.json
new file mode 100644
index 0000000..79d82d6
--- /dev/null
+++ b/Node.js/021_NodeJs/pit_stats.json
@@ -0,0 +1,167 @@
+{
+ "skaterHighlight":7,
+ "timestamp":"Mon Jun 30 23:50:58 EDT 2014",
+ "skaterData":[
+ {
+ "id":8471675,
+ "data":"87, C, S. Crosby, 80, 36, 68, 104, 18, 46, 259, 21:58, 11, 0, 5, 1"
+ },
+ {
+ "id":8471215,
+ "data":"71, C, E. Malkin, 60, 23, 49, 72, 10, 62, 191, 20:03, 7, 0, 3, 0"
+ },
+ {
+ "id":8470543,
+ "data":"14, L, C. Kunitz, 78, 35, 33, 68, 25, 66, 218, 19:09, 13, 0, 8, 0"
+ },
+ {
+ "id":8471707,
+ "data":"18, R, J. Neal, 59, 27, 34, 61, 15, 55, 238, 18:26, 11, 0, 4, 3"
+ },
+ {
+ "id":8469638,
+ "data":"36, L, J. Jokinen, 81, 21, 36, 57, 12, 18, 172, 15:42, 6, 0, 4, 0"
+ },
+ {
+ "id":8471702,
+ "data":"2, D, M. Niskanen, 81, 10, 36, 46, 33, 51, 162, 21:17, 3, 0, 6, 0"
+ },
+ {
+ "id":8476874,
+ "data":"3, D, O. Maatta, 78, 9, 20, 29, 8, 14, 119, 18:29, 3, 1, 1, 0"
+ },
+ {
+ "id":8474091,
+ "data":"16, C, B. Sutter, 81, 13, 13, 26, -9, 12, 144, 15:46, 2, 3, 1, 0"
+ },
+ {
+ "id":8471724,
+ "data":"58, D, K. Letang, 37, 11, 11, 22, -8, 16, 108, 24:14, 6, 0, 1, 0"
+ },
+ {
+ "id":8466393,
+ "data":"9, R, P. Dupuis, 39, 7, 13, 20, 6, 8, 97, 17:41, 0, 0, 0, 0"
+ },
+ {
+ "id":8476207,
+ "data":"49, C, B. Gibbons, 41, 5, 12, 17, 5, 6, 29, 11:56, 1, 0, 0, 0"
+ },
+ {
+ "id":8468542,
+ "data":"7, D, P. Martin, 39, 3, 12, 15, -4, 10, 54, 24:34, 1, 0, 2, 0"
+ },
+ {
+ "id":8471856,
+ "data":"46, C, J. Vitale, 53, 1, 13, 14, -1, 29, 42, 10:58, 0, 0, 1, 0"
+ },
+ {
+ "id":8468498,
+ "data":"44, D, B. Orpik, 72, 2, 11, 13, -3, 46, 50, 21:11, 0, 0, 0, 0"
+ },
+ {
+ "id":8470854,
+ "data":"15, L, T. Glass, 67, 4, 9, 13, -8, 90, 56, 11:47, 0, 0, 0, 0"
+ },
+ {
+ "id":8468674,
+ "data":"5, D, D. Engelland, 56, 6, 6, 12, -6, 58, 59, 13:02, 0, 0, 1, 0"
+ },
+ {
+ "id":8465166,
+ "data":"27, R, C. Adams, 82, 5, 6, 11, -16, 46, 73, 12:27, 0, 0, 0, 0"
+ },
+ {
+ "id":8470740,
+ "data":"22, R, L. Stempniak, 21, 4, 7, 11, 5, 4, 34, 16:07, 0, 0, 1, 0"
+ },
+ {
+ "id":8474145,
+ "data":"41, D, R. Bortuzzo, 54, 0, 10, 10, -3, 74, 50, 15:28, 0, 0, 0, 0"
+ },
+ {
+ "id":8477126,
+ "data":"59, C, J. Megna, 36, 5, 4, 9, 1, 6, 36, 10:29, 0, 0, 2, 0"
+ },
+ {
+ "id":8475761,
+ "data":"19, R, B. Bennett, 21, 3, 4, 7, -2, 0, 27, 13:50, 0, 0, 1, 0"
+ },
+ {
+ "id":8472368,
+ "data":"23, R, C. Conner, 19, 4, 1, 5, -3, 2, 17, 11:46, 0, 0, 0, 0"
+ },
+ {
+ "id":8475155,
+ "data":"47, D, S. Despres, 34, 0, 5, 5, 4, 26, 41, 16:44, 0, 0, 0, 0"
+ },
+ {
+ "id":8467452,
+ "data":"4, D, R. Scuderi, 53, 0, 4, 4, -8, 2, 28, 18:55, 0, 0, 0, 0"
+ },
+ {
+ "id":8467881,
+ "data":"17, L, T. Pyatt, 34, 4, 0, 4, -15, 10, 30, 10:52, 1, 0, 1, 0"
+ },
+ {
+ "id":8469467,
+ "data":"12, R, C. Kobasew, 33, 2, 0, 2, 1, 15, 37, 11:12, 0, 0, 2, 0"
+ },
+ {
+ "id":8469473,
+ "data":"57, C, M. Goc, 12, 0, 2, 2, 0, 4, 12, 12:54, 0, 0, 0, 0"
+ },
+ {
+ "id":8476158,
+ "data":"39, L, H. Zolnierczyk, 13, 2, 0, 2, 0, 12, 12, 10:07, 0, 0, 0, 0"
+ },
+ {
+ "id":8471851,
+ "data":"22, R, M. D'Agostini, 8, 0, 1, 1, -1, 4, 11, 11:20, 0, 0, 0, 0"
+ },
+ {
+ "id":8473682,
+ "data":"25, C, A. Ebbett, 9, 0, 1, 1, -4, 0, 9, 11:03, 0, 0, 0, 0"
+ },
+ {
+ "id":8474138,
+ "data":"17, L, D. Jeffrey, 10, 0, 1, 1, -2, 2, 9, 10:49, 0, 0, 0, 0"
+ },
+ {
+ "id":8475208,
+ "data":"8, D, B. Dumoulin, 6, 0, 1, 1, 1, 4, 3, 19:14, 0, 0, 0, 0"
+ },
+ {
+ "id":8471428,
+ "data":"32, R, P. Letourneau-Leblond, 1, 0, 0, 0, 0, 0, 1, 4:34, 0, 0, 0, 0"
+ },
+ {
+ "id":8471832,
+ "data":"40, C, N. Drazenovic, 1, 0, 0, 0, -1, 2, 3, 10:18, 0, 0, 0, 0"
+ },
+ {
+ "id":8475119,
+ "data":"38, C, Z. Sill, 20, 0, 0, 0, -4, 12, 14, 10:47, 0, 0, 0, 0"
+ },
+ {
+ "id":8475194,
+ "data":"55, D, P. Samuelsson, 5, 0, 0, 0, -1, 0, 5, 15:34, 0, 0, 0, 0"
+ },
+ {
+ "id":8476522,
+ "data":"45, C, A. Payerl, 2, 0, 0, 0, -1, 2, 4, 9:09, 0, 0, 0, 0"
+ }
+ ],
+ "skaterCategories":"#, POS, NAME, GP, G, A, P, +/-, PIM, S, TOI/G, PP, SH, GWG, OT",
+ "goalieHighlight":5,
+ "goalieData":[
+ {
+ "id":8470594,
+ "data":"29, G, M. Fleury, 64, 39, 18, 5, 150, 1774, 1624, 0.915000, 2.370000, 5, 4, 3792"
+ },
+ {
+ "id":8473553,
+ "data":"37, G, J. Zatkoff, 20, 12, 6, 2, 51, 582, 531, 0.912000, 2.610000, 1, 0, 1171"
+ }
+ ],
+ "goalieCategories":"#, POS, NAME, GP, W, L, OT, GA, SA, Sv, SV%, GAA, SO, PIM, Min"
+}
\ No newline at end of file
diff --git a/Node.js/021_NodeJs/videodata.json b/Node.js/021_NodeJs/videodata.json
new file mode 100644
index 0000000..35c5f77
--- /dev/null
+++ b/Node.js/021_NodeJs/videodata.json
@@ -0,0 +1,50 @@
+{
+ "categoryName": "Appetizers & Sides",
+ "categories": [
+ {
+ "categoryID": "294",
+ "parentID": "304",
+ "subjectID": "7",
+ "categoryName": "Apps and Side Dishes (Laura)",
+ "categoryDescription": "Learn to make amazing appetizers and side dishes with Laura in the Kitchen.",
+ "videosCount": "101",
+ "forumCategoryID": "163"
+ },
+ {
+ "categoryID": "285",
+ "parentID": "304",
+ "subjectID": "7",
+ "categoryName": "Side Dishes",
+ "categoryDescription": "Side dish recipes for salads, vegetables, sauces with Hilah cooking.",
+ "videosCount": "38",
+ "forumCategoryID": "163"
+ },
+ {
+ "categoryID": "337",
+ "parentID": "304",
+ "subjectID": "7",
+ "categoryName": "Side Dishes (bt)",
+ "categoryDescription": "Side dish recipes with Byron Talbott.",
+ "videosCount": "5",
+ "forumCategoryID": "163"
+ },
+ {
+ "categoryID": "301",
+ "parentID": "304",
+ "subjectID": "7",
+ "categoryName": "Side Dishes for Barbecue",
+ "categoryDescription": "Barbecue side dish recipes done on the grill by the BBQ Pit Boys!",
+ "videosCount": "43",
+ "forumCategoryID": "163"
+ },
+ {
+ "categoryID": "297",
+ "parentID": "304",
+ "subjectID": "7",
+ "categoryName": "Soups and Salads (Laura)",
+ "categoryDescription": "Looking for the perfect recipe to start your meal? Or are you looking to eat something on the lighter side? These are sure to have you covered!",
+ "videosCount": "70",
+ "forumCategoryID": "163"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Other/SampleJsonData/fake_bank_data.json b/Other/SampleJsonData/fake_bank_data.json
new file mode 100644
index 0000000..9016842
--- /dev/null
+++ b/Other/SampleJsonData/fake_bank_data.json
@@ -0,0 +1,422 @@
+[
+ {
+ "isActive": false,
+ "balance": "$3,960.64",
+ "age": 30,
+ "eyeColor": "blue",
+ "name": "Dawn Keith",
+ "gender": "female",
+ "company": "COSMOSIS",
+ "email": "dawnkeith@cosmosis.com",
+ "phone": "+1 (839) 437-3421",
+ "address": "392 Clifford Place, Fontanelle, Arizona, 2687"
+ },
+ {
+ "isActive": false,
+ "balance": "$1,280.14",
+ "age": 31,
+ "eyeColor": "green",
+ "name": "Bettie Eaton",
+ "gender": "female",
+ "company": "COMTREK",
+ "email": "bettieeaton@comtrek.com",
+ "phone": "+1 (861) 460-2317",
+ "address": "203 Allen Avenue, Elrama, North Carolina, 4453"
+ },
+ {
+ "isActive": true,
+ "balance": "$2,042.37",
+ "age": 38,
+ "eyeColor": "green",
+ "name": "Margie Ayala",
+ "gender": "female",
+ "company": "VOIPA",
+ "email": "margieayala@voipa.com",
+ "phone": "+1 (941) 569-2231",
+ "address": "111 Schroeders Avenue, Suitland, Louisiana, 7042"
+ },
+ {
+ "isActive": false,
+ "balance": "$3,170.35",
+ "age": 37,
+ "eyeColor": "blue",
+ "name": "Baker Townsend",
+ "gender": "male",
+ "company": "EVIDENDS",
+ "email": "bakertownsend@evidends.com",
+ "phone": "+1 (808) 500-2793",
+ "address": "190 Just Court, Canoochee, Alabama, 325"
+ },
+ {
+ "isActive": false,
+ "balance": "$1,402.05",
+ "age": 29,
+ "eyeColor": "blue",
+ "name": "Annmarie Atkinson",
+ "gender": "female",
+ "company": "MEDESIGN",
+ "email": "annmarieatkinson@medesign.com",
+ "phone": "+1 (928) 524-3812",
+ "address": "757 Beaumont Street, Santel, West Virginia, 3370"
+ },
+ {
+ "isActive": false,
+ "balance": "$1,404.23",
+ "age": 26,
+ "eyeColor": "blue",
+ "name": "Stark Jenkins",
+ "gender": "male",
+ "company": "HINWAY",
+ "email": "starkjenkins@hinway.com",
+ "phone": "+1 (943) 542-3591",
+ "address": "766 Cooke Court, Dunbar, Connecticut, 9512"
+ },
+ {
+ "isActive": false,
+ "balance": "$1,247.08",
+ "age": 36,
+ "eyeColor": "green",
+ "name": "Odonnell Rollins",
+ "gender": "male",
+ "company": "NEXGENE",
+ "email": "odonnellrollins@nexgene.com",
+ "phone": "+1 (810) 521-2350",
+ "address": "210 Pleasant Place, Lloyd, Mississippi, 1636"
+ },
+ {
+ "isActive": false,
+ "balance": "$2,284.89",
+ "age": 20,
+ "eyeColor": "brown",
+ "name": "Rachelle Chang",
+ "gender": "female",
+ "company": "VERAQ",
+ "email": "rachellechang@veraq.com",
+ "phone": "+1 (955) 564-2002",
+ "address": "220 Drew Street, Ventress, Puerto Rico, 8432"
+ },
+ {
+ "isActive": true,
+ "balance": "$1,624.60",
+ "age": 39,
+ "eyeColor": "brown",
+ "name": "Davis Wade",
+ "gender": "male",
+ "company": "ASSISTIX",
+ "email": "daviswade@assistix.com",
+ "phone": "+1 (836) 432-2542",
+ "address": "532 Amity Street, Yukon, Palau, 3561"
+ },
+ {
+ "isActive": true,
+ "balance": "$3,818.97",
+ "age": 23,
+ "eyeColor": "green",
+ "name": "Oneill Everett",
+ "gender": "male",
+ "company": "INCUBUS",
+ "email": "oneilleverett@incubus.com",
+ "phone": "+1 (958) 522-2724",
+ "address": "273 Temple Court, Shelby, Georgia, 8682"
+ },
+ {
+ "isActive": false,
+ "balance": "$3,243.63",
+ "age": 21,
+ "eyeColor": "brown",
+ "name": "Dalton Waters",
+ "gender": "male",
+ "company": "OVATION",
+ "email": "daltonwaters@ovation.com",
+ "phone": "+1 (899) 464-3878",
+ "address": "909 Wyona Street, Adelino, Hawaii, 6449"
+ },
+ {
+ "isActive": false,
+ "balance": "$3,125.30",
+ "age": 37,
+ "eyeColor": "green",
+ "name": "Howard Serrano",
+ "gender": "male",
+ "company": "INJOY",
+ "email": "howardserrano@injoy.com",
+ "phone": "+1 (829) 406-3577",
+ "address": "887 Willoughby Street, Wyoming, American Samoa, 6237"
+ },
+ {
+ "isActive": true,
+ "balance": "$2,891.79",
+ "age": 34,
+ "eyeColor": "brown",
+ "name": "Mills Reyes",
+ "gender": "male",
+ "company": "LUXURIA",
+ "email": "millsreyes@luxuria.com",
+ "phone": "+1 (983) 423-3866",
+ "address": "793 Tabor Court, Coultervillle, Colorado, 4179"
+ },
+ {
+ "isActive": false,
+ "balance": "$2,636.88",
+ "age": 34,
+ "eyeColor": "green",
+ "name": "Pearl Coffey",
+ "gender": "female",
+ "company": "IPLAX",
+ "email": "pearlcoffey@iplax.com",
+ "phone": "+1 (891) 470-3257",
+ "address": "411 Verona Place, Franklin, Arkansas, 9044"
+ },
+ {
+ "isActive": true,
+ "balance": "$1,579.74",
+ "age": 24,
+ "eyeColor": "brown",
+ "name": "Tommie Chase",
+ "gender": "female",
+ "company": "UBERLUX",
+ "email": "tommiechase@uberlux.com",
+ "phone": "+1 (828) 497-2089",
+ "address": "705 Halsey Street, Datil, Florida, 7036"
+ },
+ {
+ "isActive": false,
+ "balance": "$3,749.56",
+ "age": 32,
+ "eyeColor": "green",
+ "name": "Frost Mayer",
+ "gender": "male",
+ "company": "SYNKGEN",
+ "email": "frostmayer@synkgen.com",
+ "phone": "+1 (883) 461-2362",
+ "address": "558 Tapscott Avenue, Vernon, Washington, 807"
+ },
+ {
+ "isActive": true,
+ "balance": "$1,921.51",
+ "age": 24,
+ "eyeColor": "green",
+ "name": "Mercado Sweeney",
+ "gender": "male",
+ "company": "TASMANIA",
+ "email": "mercadosweeney@tasmania.com",
+ "phone": "+1 (976) 490-3620",
+ "address": "799 Jefferson Street, Cuylerville, Delaware, 4823"
+ },
+ {
+ "isActive": true,
+ "balance": "$2,007.78",
+ "age": 38,
+ "eyeColor": "brown",
+ "name": "Potts Humphrey",
+ "gender": "male",
+ "company": "PASTURIA",
+ "email": "pottshumphrey@pasturia.com",
+ "phone": "+1 (975) 549-2709",
+ "address": "819 Scott Avenue, Brutus, Missouri, 2819"
+ },
+ {
+ "isActive": false,
+ "balance": "$1,860.16",
+ "age": 30,
+ "eyeColor": "green",
+ "name": "Garrison Richardson",
+ "gender": "male",
+ "company": "KIGGLE",
+ "email": "garrisonrichardson@kiggle.com",
+ "phone": "+1 (858) 402-2835",
+ "address": "572 Woodpoint Road, Kempton, Minnesota, 2645"
+ },
+ {
+ "isActive": true,
+ "balance": "$1,611.65",
+ "age": 40,
+ "eyeColor": "green",
+ "name": "Owen Hood",
+ "gender": "male",
+ "company": "POSHOME",
+ "email": "owenhood@poshome.com",
+ "phone": "+1 (984) 464-2373",
+ "address": "195 Cass Place, Siglerville, Montana, 9548"
+ },
+ {
+ "isActive": true,
+ "balance": "$2,385.82",
+ "age": 35,
+ "eyeColor": "green",
+ "name": "Erna Cline",
+ "gender": "female",
+ "company": "ARCHITAX",
+ "email": "ernacline@architax.com",
+ "phone": "+1 (921) 525-2437",
+ "address": "153 Autumn Avenue, Veguita, South Carolina, 743"
+ },
+ {
+ "isActive": false,
+ "balance": "$2,090.31",
+ "age": 36,
+ "eyeColor": "green",
+ "name": "Benita Barr",
+ "gender": "female",
+ "company": "SLOFAST",
+ "email": "benitabarr@slofast.com",
+ "phone": "+1 (831) 525-2895",
+ "address": "885 Seton Place, Steinhatchee, Kentucky, 1146"
+ },
+ {
+ "isActive": true,
+ "balance": "$3,837.05",
+ "age": 35,
+ "eyeColor": "blue",
+ "name": "Milagros Cochran",
+ "gender": "female",
+ "company": "FLUMBO",
+ "email": "milagroscochran@flumbo.com",
+ "phone": "+1 (878) 534-2114",
+ "address": "273 Ludlam Place, Darrtown, Northern Mariana Islands, 8800"
+ },
+ {
+ "isActive": false,
+ "balance": "$1,684.98",
+ "age": 32,
+ "eyeColor": "blue",
+ "name": "Roseann Cummings",
+ "gender": "female",
+ "company": "DATAGENE",
+ "email": "roseanncummings@datagene.com",
+ "phone": "+1 (839) 580-2646",
+ "address": "844 Sands Street, Brady, Iowa, 5320"
+ },
+ {
+ "isActive": false,
+ "balance": "$1,485.37",
+ "age": 23,
+ "eyeColor": "brown",
+ "name": "Stuart Hubbard",
+ "gender": "male",
+ "company": "ZYTREK",
+ "email": "stuarthubbard@zytrek.com",
+ "phone": "+1 (992) 531-3322",
+ "address": "978 Baycliff Terrace, Caberfae, Wyoming, 1363"
+ },
+ {
+ "isActive": true,
+ "balance": "$3,704.58",
+ "age": 32,
+ "eyeColor": "brown",
+ "name": "Tonia Whitley",
+ "gender": "female",
+ "company": "QIMONK",
+ "email": "toniawhitley@qimonk.com",
+ "phone": "+1 (850) 558-3418",
+ "address": "622 Lloyd Street, Hampstead, Kansas, 4635"
+ },
+ {
+ "isActive": false,
+ "balance": "$2,719.44",
+ "age": 34,
+ "eyeColor": "brown",
+ "name": "Burris Herman",
+ "gender": "male",
+ "company": "IDETICA",
+ "email": "burrisherman@idetica.com",
+ "phone": "+1 (853) 523-3393",
+ "address": "739 Village Court, Driftwood, New York, 5476"
+ },
+ {
+ "isActive": false,
+ "balance": "$1,335.04",
+ "age": 33,
+ "eyeColor": "brown",
+ "name": "Minnie Sanchez",
+ "gender": "female",
+ "company": "ZOLAR",
+ "email": "minniesanchez@zolar.com",
+ "phone": "+1 (937) 497-3711",
+ "address": "759 Prince Street, Dubois, Guam, 5099"
+ },
+ {
+ "isActive": true,
+ "balance": "$1,029.91",
+ "age": 38,
+ "eyeColor": "blue",
+ "name": "Francis Shannon",
+ "gender": "male",
+ "company": "QUILM",
+ "email": "francisshannon@quilm.com",
+ "phone": "+1 (923) 482-2721",
+ "address": "711 Hubbard Street, Wheatfields, Ohio, 4944"
+ },
+ {
+ "isActive": false,
+ "balance": "$3,495.58",
+ "age": 24,
+ "eyeColor": "blue",
+ "name": "Webster Sanders",
+ "gender": "male",
+ "company": "HALAP",
+ "email": "webstersanders@halap.com",
+ "phone": "+1 (883) 536-2259",
+ "address": "300 Jewel Street, Sugartown, Federated States Of Micronesia, 9305"
+ },
+ {
+ "isActive": false,
+ "balance": "$3,739.40",
+ "age": 36,
+ "eyeColor": "green",
+ "name": "Osborne Guzman",
+ "gender": "male",
+ "company": "OPPORTECH",
+ "email": "osborneguzman@opportech.com",
+ "phone": "+1 (876) 577-3338",
+ "address": "146 Polar Street, Linganore, Illinois, 8549"
+ },
+ {
+ "isActive": true,
+ "balance": "$1,908.64",
+ "age": 39,
+ "eyeColor": "brown",
+ "name": "Deleon Bass",
+ "gender": "male",
+ "company": "GEOFORM",
+ "email": "deleonbass@geoform.com",
+ "phone": "+1 (836) 519-2274",
+ "address": "534 Grimes Road, Calvary, Virginia, 3901"
+ },
+ {
+ "isActive": true,
+ "balance": "$2,041.17",
+ "age": 28,
+ "eyeColor": "brown",
+ "name": "Juana Puckett",
+ "gender": "female",
+ "company": "SIGNIDYNE",
+ "email": "juanapuckett@signidyne.com",
+ "phone": "+1 (941) 554-2284",
+ "address": "610 Crawford Avenue, Guthrie, Nevada, 1300"
+ },
+ {
+ "isActive": false,
+ "balance": "$3,434.48",
+ "age": 25,
+ "eyeColor": "green",
+ "name": "Juliette Slater",
+ "gender": "female",
+ "company": "SHOPABOUT",
+ "email": "julietteslater@shopabout.com",
+ "phone": "+1 (906) 446-2149",
+ "address": "242 Arkansas Drive, Homeland, South Dakota, 3032"
+ },
+ {
+ "isActive": true,
+ "balance": "$1,424.09",
+ "age": 39,
+ "eyeColor": "blue",
+ "name": "Tillman Nixon",
+ "gender": "male",
+ "company": "PULZE",
+ "email": "tillmannixon@pulze.com",
+ "phone": "+1 (933) 470-2926",
+ "address": "608 Oriental Court, Lemoyne, New Hampshire, 4285"
+ }
+]
\ No newline at end of file
diff --git a/Other/SampleJsonData/penguins_players.json b/Other/SampleJsonData/penguins_players.json
new file mode 100644
index 0000000..504f92d
--- /dev/null
+++ b/Other/SampleJsonData/penguins_players.json
@@ -0,0 +1,316 @@
+ {
+ "position":"Right Wing",
+ "id":8465166,
+ "weight":200,
+ "height":"6' 0\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8465166.jpg",
+ "birthplace":"Seria, BRN",
+ "age":37,
+ "name":"Craig Adams",
+ "birthdate":"April 26, 1977",
+ "number":27
+ },
+ {
+ "position":"Right Wing",
+ "id":8475761,
+ "weight":195,
+ "height":"6' 2\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8475761.jpg",
+ "birthplace":"Gardena, CA, USA",
+ "age":23,
+ "name":"Beau Bennett",
+ "birthdate":"November 27, 1991",
+ "number":19
+ },
+ {
+ "position":"Left Wing",
+ "id":8471260,
+ "weight":202,
+ "height":"6' 1\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8471260.jpg",
+ "birthplace":"Meadow Lake, SK, CAN",
+ "age":29,
+ "name":"Blake Comeau",
+ "birthdate":"February 18, 1986",
+ "number":17
+ },
+ {
+ "position":"Center",
+ "id":8471675,
+ "weight":200,
+ "height":"5' 11\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8471675.jpg",
+ "birthplace":"Cole Harbour, NS, CAN",
+ "age":27,
+ "name":"Sidney Crosby",
+ "birthdate":"August 07, 1987",
+ "number":87
+ },
+ {
+ "position":"Right Wing",
+ "id":8471703,
+ "twitterURL":"https://twitter.com/S9Downie",
+ "weight":191,
+ "height":"5' 11\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8471703.jpg",
+ "birthplace":"Newmarket, ON, CAN",
+ "twitterHandle":"S9Downie",
+ "age":28,
+ "name":"Steve Downie",
+ "birthdate":"April 03, 1987",
+ "number":23
+ },
+ {
+ "position":"Right Wing",
+ "id":8466393,
+ "weight":205,
+ "height":"6' 1\"",
+ "imageUrl":"http://2.cdn.nhle.com/photos/mugs/8466393.jpg",
+ "birthplace":"Laval, QC, CAN",
+ "age":35,
+ "name":"Pascal Dupuis",
+ "birthdate":"April 07, 1979",
+ "number":9
+ },
+ {
+ "position":"Right Wing",
+ "id":8471887,
+ "weight":189,
+ "height":"5' 11\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8471887.jpg",
+ "birthplace":"Sollentuna, SWE",
+ "age":28,
+ "name":"Patric Hornqvist",
+ "birthdate":"January 01, 1987",
+ "number":72
+ },
+ {
+ "position":"Left Wing",
+ "id":8470543,
+ "weight":195,
+ "height":"6' 0\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8470543.jpg",
+ "birthplace":"Regina, SK, CAN",
+ "age":35,
+ "name":"Chris Kunitz",
+ "birthdate":"September 26, 1979",
+ "number":14
+ },
+ {
+ "position":"Center",
+ "id":8470654,
+ "twitterURL":"https://twitter.com/MaX40LAp",
+ "weight":215,
+ "height":"6' 2\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8470654.jpg",
+ "birthplace":"Saint-Léonard, QC, CAN",
+ "twitterHandle":"MaX40LAp",
+ "age":30,
+ "name":"Maxim Lapierre",
+ "birthdate":"March 29, 1985",
+ "number":40
+ },
+ {
+ "position":"Center",
+ "id":8471215,
+ "twitterURL":"https://twitter.com/malkin71_",
+ "weight":195,
+ "height":"6' 3\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8471215.jpg",
+ "birthplace":"Magnitogorsk, RUS",
+ "twitterHandle":"malkin71_",
+ "age":28,
+ "name":"Evgeni Malkin",
+ "birthdate":"July 31, 1986",
+ "number":71
+ },
+ {
+ "position":"Left Wing",
+ "id":8474102,
+ "twitterURL":"https://twitter.com/DP_57",
+ "weight":200,
+ "height":"6' 0\"",
+ "imageUrl":"http://3.cdn.nhle.com/nhl/en/v3/photos/mugs/8474102.jpg",
+ "birthplace":"Sherbrooke, QC, CAN",
+ "twitterHandle":"DP_57",
+ "age":26,
+ "name":"David Perron",
+ "birthdate":"May 28, 1988",
+ "number":39
+ },
+ {
+ "position":"Center",
+ "id":8474096,
+ "weight":201,
+ "height":"6' 1\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8474096.jpg",
+ "birthplace":"Palmerston, ON, CAN",
+ "age":26,
+ "name":"Nick Spaling",
+ "birthdate":"September 19, 1988",
+ "number":13
+ },
+ {
+ "position":"Center",
+ "id":8474091,
+ "weight":190,
+ "height":"6' 3\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8474091.jpg",
+ "birthplace":"Huntington, NY, USA",
+ "age":26,
+ "name":"Brandon Sutter",
+ "birthdate":"February 14, 1989",
+ "number":16
+ },
+ {
+ "position":"Center",
+ "id":8471476,
+ "twitterURL":"https://twitter.com/Danwinnik34",
+ "weight":207,
+ "height":"6' 2\"",
+ "imageUrl":"http://3.cdn.nhle.com/nhl/en/v3/photos/mugs/8471476.jpg",
+ "birthplace":"Toronto, ON, CAN",
+ "twitterHandle":"Danwinnik34",
+ "age":30,
+ "name":"Daniel Winnik",
+ "birthdate":"March 06, 1985",
+ "number":26
+ },
+ {
+ "position":"Defenseman",
+ "id":8471710,
+ "weight":189,
+ "height":"6' 1\"",
+ "imageUrl":"http://2.cdn.nhle.com/photos/mugs/8471710.jpg",
+ "birthplace":"Thunder Bay, ON, CAN",
+ "age":27,
+ "name":"Taylor Chorney",
+ "birthdate":"April 27, 1987",
+ "number":44
+ },
+ {
+ "position":"Defenseman",
+ "id":8474013,
+ "twitterURL":"https://twitter.com/icole28",
+ "weight":219,
+ "height":"6' 1\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8474013.jpg",
+ "birthplace":"Ann Arbor, MI, USA",
+ "twitterHandle":"icole28",
+ "age":26,
+ "name":"Ian Cole",
+ "birthdate":"February 21, 1989",
+ "number":28
+ },
+ {
+ "position":"Defenseman",
+ "id":8469555,
+ "twitterURL":"https://twitter.com/therealhoff10",
+ "weight":205,
+ "height":"6' 2\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8469555.jpg",
+ "birthplace":"Moers, DEU",
+ "twitterHandle":"therealhoff10",
+ "age":32,
+ "name":"Christian Ehrhoff",
+ "birthdate":"July 06, 1982",
+ "number":10
+ },
+ {
+ "position":"Defenseman",
+ "id":8471724,
+ "weight":201,
+ "height":"6' 0\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8471724.jpg",
+ "birthplace":"Montreal, QC, CAN",
+ "age":27,
+ "name":"Kris Letang",
+ "birthdate":"April 24, 1987",
+ "number":58
+ },
+ {
+ "position":"Defenseman",
+ "id":8473933,
+ "twitterURL":"https://twitter.com/RevLovejoy6",
+ "weight":206,
+ "height":"6' 1\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8473933.jpg",
+ "birthplace":"Concord, NH, USA",
+ "twitterHandle":"RevLovejoy6",
+ "age":31,
+ "name":"Ben Lovejoy",
+ "birthdate":"February 20, 1984",
+ "number":12
+ },
+ {
+ "position":"Defenseman",
+ "id":8476874,
+ "weight":206,
+ "height":"6' 2\"",
+ "imageUrl":"http://2.cdn.nhle.com/photos/mugs/8476874.jpg",
+ "birthplace":"Jyväskylä, FIN",
+ "age":20,
+ "name":"Olli Maatta",
+ "birthdate":"August 22, 1994",
+ "number":3
+ },
+ {
+ "position":"Defenseman",
+ "id":8468542,
+ "weight":200,
+ "height":"6' 1\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8468542.jpg",
+ "birthplace":"Minneapolis, MN, USA",
+ "age":34,
+ "name":"Paul Martin",
+ "birthdate":"March 05, 1981",
+ "number":7
+ },
+ {
+ "position":"Defenseman",
+ "id":8476884,
+ "weight":208,
+ "height":"6' 0\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8476884.jpg",
+ "birthplace":"Estevan, SK, CAN",
+ "age":21,
+ "name":"Derrick Pouliot",
+ "birthdate":"January 16, 1994",
+ "number":51
+ },
+ {
+ "position":"Defenseman",
+ "id":8467452,
+ "weight":212,
+ "height":"6' 1\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8467452.jpg",
+ "birthplace":"Syosset, NY, USA",
+ "age":36,
+ "name":"Rob Scuderi",
+ "birthdate":"December 30, 1978",
+ "number":4
+ },
+ {
+ "position":"Goalie",
+ "id":8470594,
+ "weight":180,
+ "height":"6' 2\"",
+ "imageUrl":"http://3.cdn.nhle.com/photos/mugs/8470594.jpg",
+ "birthplace":"Sorel, QC, CAN",
+ "age":30,
+ "name":"Marc-Andre Fleury",
+ "birthdate":"November 28, 1984",
+ "number":29
+ },
+ {
+ "position":"Goalie",
+ "id":8471306,
+ "weight":220,
+ "height":"6' 1\"",
+ "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8471306.jpg",
+ "birthplace":"Fussen, DEU",
+ "age":29,
+ "name":"Thomas Greiss",
+ "birthdate":"January 29, 1986",
+ "number":1
+ }
\ No newline at end of file
diff --git a/Other/SampleMySQLData/store.sql b/Other/SampleMySQLData/store.sql
new file mode 100644
index 0000000..df668ab
--- /dev/null
+++ b/Other/SampleMySQLData/store.sql
@@ -0,0 +1,238 @@
+SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
+SET time_zone = "+00:00";
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+
+CREATE DATABASE IF NOT EXISTS `store` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
+USE `store`;
+
+CREATE TABLE IF NOT EXISTS `customers` (
+ `id` int(11) NOT NULL,
+ `name` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
+ `address` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
+ `city` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
+ `state` varchar(10) COLLATE utf8_unicode_ci NOT NULL,
+ `zip` int(11) NOT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
+
+INSERT INTO `customers` (`id`, `name`, `address`, `city`, `state`, `zip`) VALUES
+(1, 'Bucky Roberts', '32 Hungerford Ave', 'Adams', 'NY', 13605),
+(2, 'Noah Parker', '342 Tunafish Lane', 'Raleigh', 'NC', 27606),
+(3, 'Kelsey Burger', '43 Crab Orchard Dr', 'Oakland', 'CA', 90210),
+(4, 'Corey Smith', '423 Wisteria Lane', 'Simmersville', 'AK', 54112),
+(5, 'Harry Potter', '673 Greenwich Ave', 'Newark', 'NJ', 80432),
+(6, 'Henry Jackson', '2134 Grant St', 'Gary', 'IN', 47404),
+(7, 'Cynthia Alvarez', '1568 Greenfield Ave', 'Augusta', 'GA', 30568),
+(8, 'Teresa Smith', '8725 Black St', 'Philadelphia', 'PA', 19603),
+(9, 'Gary Foster', '3752 Wittfield Blvd', 'Indianapolis', 'IN', 46219),
+(10, 'Sherry Gibbons', '5517 Oak St', 'Phoenix', 'AZ', 85072),
+(11, 'Jack Nicholson', '1234 Star Lane', 'Hollywood', 'CA', 90210),
+(12, 'Penny Green', '4972 Massachusetts Ave', 'Orlando', 'FL', 33718),
+(13, 'Alexander Evans', '6310 E 21st Rd', 'Las Vegas', 'NV', 83594),
+(14, 'Jeremy White', '3954 Brentwood Dr', 'Seattle', 'WA', 99037),
+(15, 'Omar Badshah', '6801 Regina Cir', 'Madison', 'WI', 53209),
+(16, 'Preston Harrison', '104 Main St', 'Denver', 'CO', 81712),
+(17, 'Manuel Rodriguez', '99543 Westin Blvd', 'Provo', 'UT', 85478),
+(18, 'David Jones', '5488 W 34th St', 'Boston', 'MA', 2104),
+(19, 'Nick Flanders', '3486 Happy Trails Dr', 'Springfield', 'OH', 45872),
+(20, 'Paul Brown', '3290 Pennsylvania Ave', 'Chicago', 'IL', 61208),
+(21, 'Sara Rehm', '7746 Wysong Ave', 'Detroit', 'MI', 48913),
+(22, 'Haley Carter', '2957 Princess Way', 'Portland', 'OR', 97532),
+(23, 'Julian Thomas', '5564 Dandy Trail', 'Santa Fe', 'NM', 81543),
+(24, 'George Lucas', '8224 Star Wars Ln', 'Galaxy', 'TN', 37512),
+(25, 'Perry Jordan', '4321 Victory Rd', 'Montgomery', 'AL', 33219),
+(26, 'Christopher Layton', '871 Georgia Pl', 'Houston', 'TX', 78704),
+(27, 'Devon Myers', '9932 Carmel Dr', 'New York', 'NY', 11920),
+(28, 'Debra Talkington', '8421 Smithfield Ave', 'Mesa', 'AZ', 82573),
+(29, 'Peter Johnson', '4213 Jones Pkwy', 'Missoula', 'MS', 37228),
+(30, 'Harry Brown', '125 Cinnamon Way', 'Raleigh', 'NC', 27418),
+(31, 'Kay Billings', '4592 Jessica Ave', 'Cincinnati', 'OH', 43118),
+(32, 'Desmond Rafferty', '6329 Jordan St', 'San Diego', 'CA', 93980),
+(33, 'Lisa Washington', '3490 Dearborn Ave', 'Boise', 'ID', 84930),
+(34, 'Jackson Taylor', '7733 Miami Way', 'Atlanta', 'GA', 37544),
+(35, 'Michael Davis', '9245 Olney Ave', 'Eau Claire', 'WI', 54732),
+(36, 'Candice Thompson', '3122 Ebony Blvd', 'Memphis', 'TN', 33152),
+(37, 'Terry Mitchell', '7438 Tacoma St', 'Spokane', 'WA', 99753),
+(38, 'Ruth Bolen', '5584 Frigid Ln', 'Anchorage', 'AK', 99831),
+(39, 'James Hamilton', '449 Routiers Ave', 'Ft Lauderdale', 'FL', 33912),
+(40, 'Harvey Akins', '7950 Ridge Rd', 'Newark', 'NJ', 2753),
+(41, 'Timothy Smothers', '5892 Maple Ave', 'Washington', 'DC', 213),
+(42, 'Stephanie Nichols', '2275 Apple St', 'Highland', 'MI', 49003),
+(43, 'Ken Davidson', '1583 N 27th Rd', 'Dallas', 'TX', 78432),
+(44, 'Angel Martin', '3195 Mapleton Ave', 'Providence', 'RI', 8132),
+(45, 'Cathy Douglas', '8934 Glory St', 'Boulder', 'CO', 89578),
+(46, 'Kendall Norton', '8733 Jordan Ave', 'Kansas City', 'KS', 66555),
+(47, 'Desire Morton', '2138 Peaches Way', 'Ellettsville', 'IL', 67330),
+(48, 'Patty Zrock', '7397 Happy St', 'Brooklyn', 'NY', 13420),
+(49, 'Evan Bayh', '6613 North St', 'Miami', 'FL', 33990),
+(50, 'Kevin Masters', '91350 Carmel Dr', 'Brisket', 'WY', 80154),
+(51, 'Paula Barker', '6528 Prozac Ave', 'San Francisco', 'CA', 92953),
+(52, 'John Jacobs', '2957 Ashway Ct', 'Pittsburgh', 'PA', 18320),
+(53, 'Dana Brunswick', '4825 Polly Ln', 'Las Vegas', 'NV', 89223),
+(54, 'David Turner', '743 Main St', 'Knoxville', 'TN', 37710),
+(55, 'Michael Orlando', '1355 Joseph Way', 'Pensacola', 'FL', 31552),
+(56, 'Terry Green', '6320 LaSalle St', 'Yazoo', 'MS', 30428),
+(57, 'Greg Evans', '2294 South St', 'Indianapolis', 'IN', 46203),
+(58, 'Sandy Johnson', '5319 Brentwood Dr', 'Louisville', 'KY', 41350),
+(59, 'Charlie Jones', '5382 Miracle Ln', 'New Orleans', 'LA', 73210),
+(60, 'Kevin Grier', '855 Henry St', 'Provo', 'UT', 83111),
+(61, 'Lani Kulana', '3352 Hibiscus Ln', 'Honolulu', 'HI', 93525),
+(62, 'Mary Worley', '4291 Cherry St', 'Oaktown', 'NH', 5308),
+(63, 'Tanya Gleason', '7315 Franklin Rd', 'Peoria', 'IL', 66514),
+(64, 'Donna Bradley', '2753 Florida Way', 'San Jose', 'CA', 91342),
+(65, 'Jimmy Lawson', '9 Corporate Dr', 'Excelsior', 'GA', 37833),
+(66, 'Brenda Fowler', '8447 Jackson Pl', 'St Louis', 'MO', 63153),
+(67, 'Karen Mills', '9077 Cumberland Way', 'Tulsa', 'OK', 74319),
+(68, 'Aretha Gordon', '1489 Pumpkin Ave', 'Appleton', 'WI', 54310),
+(69, 'Carol Brown', '6225 Tamiami Trl', 'Ft Myers', 'FL', 33914),
+(70, 'Jerry Freeman', '7840 Princess Dr', 'Topeka', 'KS', 63330),
+(71, 'LuAnn Dennis', '5602 Norman St', 'Philadelphia', 'PA', 17569),
+(72, 'Thomas Jackson', '3958 Breen Ave', 'Mobile', 'AL', 34558),
+(73, 'Marilyn Pritchett', '1468 Duncan St', 'Trenton', 'NJ', 7104),
+(74, 'Katherine Cain', '4388 Drysdale Ln', 'Texarkana', 'AR', 77315),
+(75, 'Patsy Cline', '9926 Hemingway Blvd', 'Tuscaloosa', 'CA', 97221),
+(76, 'Kerry Jackson', '5533 Penelope St', 'Beaverton', 'OR', 91353),
+(77, 'Princess Wilson', '3127 Spencer Dr', 'Norton', 'sC', 27384),
+(78, 'Henry Fisk', '6341 Wilmington Ave', 'Lincoln', 'NE', 70011),
+(79, 'Jessica Grant', '2203 Pansy Ln', 'Butte', 'MT', 54438),
+(80, 'Joe Franklin', '1078 Dusky Dr', 'Independence', 'IN', 46935),
+(81, 'Larry Hood', '3522 Potter St', 'Marietta', 'GA', 37023),
+(82, 'Jim OBrien', '6084 Maple St', 'Boston', 'MA', 1358),
+(83, 'Tanya Hicks', '1487 Potter St', 'Orlando', 'FL', 34258),
+(84, 'Dean Williams', '2279 Gray St', 'Roanoke', 'VA', 27384),
+(85, 'Jason Freeman', '4301 Perry Ave', 'Lincoln', 'NE', 67301),
+(86, 'Katy Smith', '8733 Johnson Way', 'Santa Fe', 'NM', 80227),
+(87, 'Andy Jones', '5177 US 42 S', 'Paragon', 'MI', 48203),
+(88, 'Crystal Jarvis', '9028 Indiana Ave', 'Tuscaloosa', 'AL', 32784),
+(89, 'Elizabeth McMurray', '730 Walnut St', 'Mooresville', 'WI', 53802),
+(90, 'Cassandra Tansy', '1209 Broadway St', 'Bloomington', 'IN', 46801),
+(91, 'Dick Moore', '3209 Simpson Rd', 'New York', 'NY', 10220),
+(92, 'Marisa Rodriguez', '873 Olney Ave', 'Muncie', 'VA', 20384),
+(93, 'Tyrone Jackson', '7725 Georgia St', 'Salt Lake City', 'UT', 82004),
+(94, 'Donald Gray', '8339 Olivia St', 'Champaign', 'IL', 60337),
+(95, 'Victoria Jameson', '2804 Oak Tree St', 'Salina', 'KS', 67905),
+(96, 'Lucy Bronson', '5336 Michigan Ave', 'Wilmington', 'DE', 1903);
+
+CREATE TABLE IF NOT EXISTS `items` (
+ `id` int(11) NOT NULL,
+ `name` varchar(65) COLLATE utf8_unicode_ci NOT NULL,
+ `cost` float NOT NULL,
+ `seller_id` int(11) NOT NULL,
+ `bids` int(11) NOT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
+
+INSERT INTO `items` (`id`, `name`, `cost`, `seller_id`, `bids`) VALUES
+(1, 'Brand New iMac Computer', 149.99, 32, 3),
+(2, 'used diaper from my sister', 2.04, 1, 0),
+(3, 'Fresh apple pie', 14.99, 54, 32),
+(4, 'New gym socks', 2.34, 90, 566),
+(5, 'Weedwacker only slightly used', 4.56, 84, 2),
+(6, 'New ipad stolen from best buy', 399, 32, 23),
+(7, 'Book about having babies', 21.34, 44, 21),
+(8, 'Woman Jeans', 49.5, 56, 123),
+(9, 'traditional carpet', 25.45, 14, 75),
+(10, '3 boxes of frogs', 30.49, 68, 145),
+(11, '48 boxes of frogs', 74.29, 6, 99),
+(12, '7 boxes of frogs', 857.75, 18, 88),
+(13, 'laptop', 743.3, 89, 158),
+(14, 'thumbelina', 228.05, 15, 49),
+(15, 'bed', 127.15, 65, 189),
+(16, 'shampoing', 12.8, 6, 105),
+(17, 'stove', 37.66, 68, 111),
+(18, 'cushion', 7.15, 97, 157),
+(19, 'refrigerator', 657.49, 61, 129),
+(20, 'gold necklace', 853.07, 10, 101),
+(21, 'pan', 33.7, 7, 184),
+(22, 'awesome alien computer game', 10.75, 18, 29),
+(23, 'baby coat', 89.99, 14, 47),
+(24, 'baby seat', 145.78, 2, 199),
+(25, 'satchel', 44.71, 15, 66),
+(26, 'women perfum', 110.9, 48, 84),
+(27, 'conveyor belt', 1120.75, 11, 4),
+(28, 'used car', 5700.5, 12, 135),
+(29, 'supercomputer', 49.75, 50, 176),
+(30, 'mirror', 26.8, 19, 56),
+(31, 'piano', 1800.4, 13, 147),
+(32, 'quitar', 88.4, 25, 164),
+(33, 'trumpet', 255.15, 36, 23),
+(34, 'machintosh', 3845, 20, 107),
+(35, 'earphone', 10.5, 17, 110),
+(36, 'computer', 418, 11, 152),
+(37, 'night light', 13.87, 97, 198),
+(38, 'pc bag', 50.99, 48, 65),
+(39, 'babyfoot', 376.7, 2, 121),
+(40, 'hairdryer', 88.9, 12, 177),
+(41, 'babyliss', 130.75, 68, 79),
+(42, 'door', 150.5, 98, 13),
+(43, 'baby soap', 12.7, 4, 198),
+(44, 'used phone', 43.75, 9, 69),
+(45, 'bath', 757.15, 96, 55),
+(46, 'flower', 10.75, 16, 89),
+(47, 'battery charger', 48.75, 25, 87),
+(48, 'air conditioner', 975, 12, 151),
+(49, 'casserole', 115.75, 46, 35),
+(50, 'used toilet', 180.7, 64, 11),
+(51, 'teashirt', 14.98, 65, 114),
+(52, 'moto', 920, 22, 174),
+(53, 'saxophone', 220.9, 60, 140),
+(54, 'bicycle', 180.55, 97, 35),
+(55, 'man perfum', 95, 75, 199),
+(56, 'table', 157.25, 91, 48),
+(57, 'boat', 4890.5, 17, 177),
+(58, 'iphone', 547, 8, 28),
+(59, 'body milk', 50.5, 16, 90),
+(60, 'new curtain for bedroom', 278.4, 92, 11),
+(61, 'diamond ring', 1900, 15, 45),
+(62, 'swept', 4.5, 9, 99),
+(63, 'women hat', 17.55, 39, 60),
+(64, 'washing machine', 680.9, 42, 125),
+(65, 'baby bottle', 27.98, 91, 117),
+(66, 'women sun glasses', 66.7, 18, 174),
+(67, 'person weighs', 65.25, 10, 100),
+(68, 'photo frame', 18, 85, 170),
+(69, 'key board', 16.7, 90, 101),
+(70, 'screen', 250, 81, 188),
+(71, 'bucket', 2.5, 1, 19),
+(72, 'lipstick', 24.75, 3, 44),
+(73, 'wardrobe', 120.75, 9, 71),
+(74, 'blue dress size 40', 88.9, 7, 113),
+(75, 'newspaper', 1.5, 95, 172),
+(76, 'scanner', 350, 14, 62),
+(77, 'camera', 550.7, 17, 95),
+(78, 'camcorder', 788.99, 25, 127),
+(79, 'gun', 420.1, 81, 107),
+(80, 'domestic dog', 200, 19, 129),
+(81, 'horse', 759.5, 30, 115),
+(82, 'truck', 7800.5, 32, 123),
+(83, 'soccer ball', 95.49, 54, 155),
+(84, 'gold earring', 385, 75, 92),
+(85, 'basket', 250.45, 46, 142),
+(86, 'bikini', 85.2, 12, 57),
+(87, 'red skirt', 15.9, 18, 188),
+(88, 'copier machine', 800.7, 50, 160),
+(89, 'handbag', 35.9, 8, 108),
+(90, 'bath towel', 25.1, 11, 186),
+(91, 'coffee machine', 210.89, 15, 170),
+(92, 'wedding dress', 690, 26, 48),
+(93, 'man sun glasses', 80.7, 19, 174),
+(94, 'candle', 7.5, 22, 102),
+(95, 'scarf', 11.9, 7, 143),
+(96, 'microwave', 150.29, 6, 11),
+(97, 'electric oven', 645, 62, 171),
+(98, 'play station', 256.75, 12, 188),
+(99, 'dvd', 126.84, 14, 113),
+(100, 'magazine', 3.5, 8, 152);
+
+
+ALTER TABLE `customers`
+ ADD PRIMARY KEY (`id`);
+
+ALTER TABLE `items`
+ ADD PRIMARY KEY (`id`);
+
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
diff --git a/Python/15_python.py b/Python/15_python.py
new file mode 100644
index 0000000..1096122
--- /dev/null
+++ b/Python/15_python.py
@@ -0,0 +1,12 @@
+a = 7823
+
+
+def corn():
+ print(a)
+
+
+def fudge():
+ print(a)
+
+corn()
+fudge()
diff --git a/Python/16_python.py b/Python/16_python.py
new file mode 100644
index 0000000..3279a16
--- /dev/null
+++ b/Python/16_python.py
@@ -0,0 +1,7 @@
+def dumb_sentence(name='Bucky', action='ate', item='tuna'):
+ print(name, action, item)
+
+dumb_sentence()
+dumb_sentence("Sally", "farts", "gently")
+dumb_sentence(item='awesome')
+dume_sentence(item='awesome', action='is')
diff --git a/Python/17_python.py b/Python/17_python.py
new file mode 100644
index 0000000..87cdeac
--- /dev/null
+++ b/Python/17_python.py
@@ -0,0 +1,9 @@
+def add_numbers(*args):
+ total = 0
+ for a in args:
+ total += a
+ print(total)
+
+add_numbers(3)
+add_numbers(3, 32)
+add_numbers(3, 43, 5453, 354234, 463463)
diff --git a/Python/18_python.py b/Python/18_python.py
new file mode 100644
index 0000000..8e22a91
--- /dev/null
+++ b/Python/18_python.py
@@ -0,0 +1,8 @@
+def health_calculator(age, apples_ate, cigs_smoked):
+ answer = (100-age) + (apples_ate*3.5) - (cigs_smoked*2)
+ print(answer)
+
+buckys_data = [27, 20, 0]
+
+health_calculator(buckys_data[0], buckys_data[1], buckys_data[2])
+health_calculator(*buckys_data)
diff --git a/Python/19_python.py b/Python/19_python.py
new file mode 100644
index 0000000..e8dc92f
--- /dev/null
+++ b/Python/19_python.py
@@ -0,0 +1,7 @@
+groceries = {'cereal', 'milk', 'starcrunch', 'beer', 'duck tape', 'lotion', 'beer'}
+print(groceries)
+
+if 'milk' in groceries:
+ print("You already have milk hoss!")
+else:
+ print("Oh yea, you need milk!")
diff --git a/Python/20_python.py b/Python/20_python.py
new file mode 100644
index 0000000..83f0c40
--- /dev/null
+++ b/Python/20_python.py
@@ -0,0 +1,4 @@
+classmates = {'Tony': ' cool but smells', 'Emma': ' sits behind me', 'Lucy': ' asks too many questions'}
+
+for k, v in classmates.items():
+ print(k + v)
diff --git a/Python/21_python_main.py b/Python/21_python_main.py
new file mode 100644
index 0000000..b0de496
--- /dev/null
+++ b/Python/21_python_main.py
@@ -0,0 +1,7 @@
+import tuna_21
+import random
+
+tuna_21.fish()
+
+x = random.randrange(1, 1000)
+print(x)
\ No newline at end of file
diff --git a/Python/22_python.py b/Python/22_python.py
new file mode 100644
index 0000000..ead6982
--- /dev/null
+++ b/Python/22_python.py
@@ -0,0 +1,9 @@
+import random
+import urllib.request
+
+def download_web_image(url):
+ name = random.randrange(1, 1000)
+ full_name = str(name) + ".jpg"
+ urllib.request.urlretrieve(url, full_name)
+
+download_web_image("https://www.thenewboston.com/images/homepage_images/main_homepage_01.png")
\ No newline at end of file
diff --git a/Python/23_python.py b/Python/23_python.py
new file mode 100644
index 0000000..f874397
--- /dev/null
+++ b/Python/23_python.py
@@ -0,0 +1,9 @@
+fw = open('sample.txt', 'w')
+fw.write('Writing some stuff in my text file\n')
+fw.write('I like bacon\n')
+fw.close()
+
+fr = open('sample.txt', 'r')
+text = fr.read()
+print(text)
+fr.close()
\ No newline at end of file
diff --git a/Python/24_python.py b/Python/24_python.py
new file mode 100644
index 0000000..56a91d0
--- /dev/null
+++ b/Python/24_python.py
@@ -0,0 +1,16 @@
+from urllib import request
+
+goog_url = http://real-chart.finance.yahoo.com/table.csv?s=GOOG&d=2&e=8&f=2015&g=d&a=2&b=27&c=2014&ignore=.csv
+
+def download_stock_data(csv_url):
+ response = request.urlopen(csv_url)
+ csv = response.read()
+ csv_str = str(csv)
+ lines = csv_str.split("\\n")
+ dest_url = r'goog.csv'
+ fx = open(dest_url, "w")
+ for line in lines:
+ fx.write(line + "\n")
+ fx.close()
+
+download_stock_data(goog_url)
\ No newline at end of file
diff --git a/Python/25_python.py b/Python/25_python.py
new file mode 100644
index 0000000..aed772a
--- /dev/null
+++ b/Python/25_python.py
@@ -0,0 +1,10 @@
+import requests
+from b4 import BeautifulSoup
+
+
+def trade_spider(max_pages):
+ page = 1
+ while page < max_page:
+ url = 'https://buckysroom.org/trade/search.php?page=' + str(page)
+ source_code = requests.get(url)
+ plain_text =
\ No newline at end of file
diff --git a/Python/26_python.py b/Python/26_python.py
new file mode 100644
index 0000000..15fd478
--- /dev/null
+++ b/Python/26_python.py
@@ -0,0 +1,19 @@
+import requests
+from b4 import BeautifulSoup
+
+
+def trade_spider(max_pages):
+ page = 1
+ while page <= max_page:
+ url = 'https://buckysroom.org/trade/search.php?page=' + str(page)
+ source_code = requests.get(url)
+ plain_text = source_code.text
+ soup = BeautifulSoup(plain_text)
+ for link in soup.findAll('a', {'class': 'item-name'}):
+ href = "https://buckysroom.org" + link.get('href')
+ title = link.string
+ print(href)
+ print(title)
+ page += 1
+
+trade_spider(1)
\ No newline at end of file
diff --git a/Python/27_python.py b/Python/27_python.py
new file mode 100644
index 0000000..ec443fe
--- /dev/null
+++ b/Python/27_python.py
@@ -0,0 +1,31 @@
+import requests
+from b4 import BeautifulSoup
+
+
+def trade_spider(max_pages):
+ page = 1
+ while page <= max_page:
+ url = 'https://buckysroom.org/trade/search.php?page=' + str(page)
+ source_code = requests.get(url)
+ plain_text = source_code.text
+ soup = BeautifulSoup(plain_text)
+ for link in soup.findAll('a', {'class': 'item-name'}):
+ href = "https://buckysroom.org" + link.get('href')
+ title = link.string
+ # print(href)
+ # print(title)
+ get_single_item_data(href)
+ page += 1
+
+
+def get_single_item_data(item_url):
+ source_code = requests.get(item_url)
+ plain_text = source_code.text
+ soup = BeautifulSoup(plain_text)
+ for item_name in soup.findAll('div', {'class': 'i-name'}):
+ print(item_name.string)
+ for link in soup.findAll('a'):
+ href = "https://buckysroom.org" + link.get('href')
+ print(href)
+
+trade_spider(3)
\ No newline at end of file
diff --git a/Python/28_python.py b/Python/28_python.py
new file mode 100644
index 0000000..909a0a1
--- /dev/null
+++ b/Python/28_python.py
@@ -0,0 +1,13 @@
+while True:
+ try:
+ number = int(input("What's your fav number hoss?\n"))
+ print(18/number)
+ break
+ except ValueError:
+ print("Make sure and enter a number")
+ except ZeroDivisionError:
+ print("Don't pick zero")
+ except:
+ break
+ finally:
+ print("loop complete")
\ No newline at end of file
diff --git a/Python/29_python.py b/Python/29_python.py
new file mode 100644
index 0000000..7c23c45
--- /dev/null
+++ b/Python/29_python.py
@@ -0,0 +1,20 @@
+class Enemy:
+ life = 3
+
+ def attack(self):
+ print("ouch!")
+ self.life -=1
+
+ def checkLife(self):
+ if self.life <= 0:
+ print("I am dead")
+ else:
+ print(str(self.life) + " life left")
+
+enemy1 = Enemy()
+enemy2 = Enemy()
+
+enemy1.attack()
+enemy1.attack()
+enemy1.checkLife()
+enemy2.checkLife()
\ No newline at end of file
diff --git a/Python/30_python.py b/Python/30_python.py
new file mode 100644
index 0000000..06b95fe
--- /dev/null
+++ b/Python/30_python.py
@@ -0,0 +1,12 @@
+class Enemy:
+ def __init__(self, x):
+ self.energy = x
+
+ def get_energy(self):
+ print(self.energy)
+
+jason = Enemy(5)
+sandy = Enemy(18)
+
+jason.get_energy()
+sandy.get_energy()
\ No newline at end of file
diff --git a/Python/31_python.py b/Python/31_python.py
new file mode 100644
index 0000000..d659ad8
--- /dev/null
+++ b/Python/31_python.py
@@ -0,0 +1,13 @@
+class Girl:
+
+ gender = 'female'
+
+ def __init__(self, name):
+ self.name = name
+
+r = Girl('Rachel')
+s = Girl('Stanky')
+print(r.gender)
+print(s.gender)
+print(r.name)
+print(s.name)
\ No newline at end of file
diff --git a/Python/32_python.py b/Python/32_python.py
new file mode 100644
index 0000000..09c97cf
--- /dev/null
+++ b/Python/32_python.py
@@ -0,0 +1,17 @@
+class Parent:
+
+ def print_last_name(self):
+ print('Roberts')
+
+
+class Child(Parent):
+
+ def print_first_name(self):
+ print('Bucky')
+
+ def print_last_name(self):
+ print('Snitzleberg')
+
+bucky = Child()
+bucky.print_first_name()
+bucky.print_last_name()
\ No newline at end of file
diff --git a/Python/33_python.py b/Python/33_python.py
new file mode 100644
index 0000000..e46ce52
--- /dev/null
+++ b/Python/33_python.py
@@ -0,0 +1,18 @@
+class Mario():
+
+ def move(self):
+ print('I am moving!')
+
+
+class Shroom():
+
+ def eat_shroom(self):
+ print('Now I am big!')
+
+
+class BigMario(Mario, Shroom):
+ pass
+
+bm = BigMario()
+bm.move()
+bm.eat_shroom()
\ No newline at end of file
diff --git a/Python/34_python.py b/Python/34_python.py
new file mode 100644
index 0000000..343567b
--- /dev/null
+++ b/Python/34_python.py
@@ -0,0 +1,13 @@
+import threading
+
+
+
+class BuckysMessenger(threading.Thread):
+ def run(self):
+ for _ in range(10):
+ print(threading.currentThread().getName())
+
+x = BuckysMessenger(name='Send out messages')
+y = BuckysMessenger(name='Receive messages')
+x.start()
+y.start()
diff --git a/Python/35_python.py b/Python/35_python.py
new file mode 100644
index 0000000..f27ca18
--- /dev/null
+++ b/Python/35_python.py
@@ -0,0 +1,18 @@
+import requests
+from bs4 import BeautifulSoup
+import operator
+
+
+def start(url):
+ word_list = []
+ source_code = requests.get(url).text
+ soup = BeautifulSoup(source_code)
+ for post_text in soup.findAll('a', {'class': 'index_singleListingTitles'}):
+ content = post_text.string
+ words = content.lower().split()
+ for each_word in words:
+ print(each_word)
+ word.append(each_word)
+
+
+start('https://buckysroom.org/tops.php?type=text&period=this-month')
\ No newline at end of file
diff --git a/Python/36_python.py b/Python/36_python.py
new file mode 100644
index 0000000..73aa884
--- /dev/null
+++ b/Python/36_python.py
@@ -0,0 +1,29 @@
+import requests
+from bs4 import BeautifulSoup
+import operator
+
+
+def start(url):
+ word_list = []
+ source_code = requests.get(url).text
+ soup = BeautifulSoup(source_code)
+ for post_text in soup.findAll('a', {'class': 'index_singleListingTitles'}):
+ content = post_text.string
+ words = content.lower().split()
+ for each_word in words:
+ word.append(each_word)
+ clean_up_list(word_list)
+
+
+def clean_up_list(word_list):
+ clean_word_list = []
+ for word in word_list:
+ symbols = "!@#$%^&*()_+{}:\"<>?,./;'[]-='"
+ for i in range(0, len(symbols):
+ word = word.replace(symbols[i], "")
+ if len(word) > 0:
+ print(word)
+ clean_word_list.append(word)
+
+
+start('https://buckysroom.org/tops.php?type=text&period=this-month')
\ No newline at end of file
diff --git a/Python/37_python.py b/Python/37_python.py
new file mode 100644
index 0000000..c027aa5
--- /dev/null
+++ b/Python/37_python.py
@@ -0,0 +1,40 @@
+import requests
+from bs4 import BeautifulSoup
+import operator
+
+
+def start(url):
+ word_list = []
+ source_code = requests.get(url).text
+ soup = BeautifulSoup(source_code)
+ for post_text in soup.findAll('a', {'class': 'index_singleListingTitles'}):
+ content = post_text.string
+ words = content.lower().split()
+ for each_word in words:
+ word.append(each_word)
+ clean_up_list(word_list)
+
+
+def clean_up_list(word_list):
+ clean_word_list = []
+ for word in word_list:
+ symbols = "!@#$%^&*()_+{}:\"<>?,./;'[]-='"
+ for i in range(0, len(symbols):
+ word = word.replace(symbols[i], "")
+ if len(word) > 0:
+ clean_word_list.append(word)
+ create_dictionary(clean_word_list)
+
+
+def create_dictionary(clean_word_list):
+ word_count = {}
+ for word in clean_word_list:
+ if word in word_count:
+ word_count[word] += 1
+ else:
+ word_count[word] = 1
+ for key, value in sorted(word_count.items(), key=operator.itemgetter(1)):
+ print(key, value)
+
+
+start('https://buckysroom.org/tops.php?type=text&period=this-month')
\ No newline at end of file
diff --git a/Python/38_python.py b/Python/38_python.py
new file mode 100644
index 0000000..51d95ac
--- /dev/null
+++ b/Python/38_python.py
@@ -0,0 +1,7 @@
+def drop_first_last(grades):
+ first, *middle, last = grades
+ avg = sum(middle) / len(middle)
+ print(avg)
+
+drop_first_last([65, 76, 98, 54, 21])
+drop_first_last([65, 76, 98, 54, 21, 54, 65, 99, 88, 78])
\ No newline at end of file
diff --git a/Python/39_python.py b/Python/39_python.py
new file mode 100644
index 0000000..a9a212d
--- /dev/null
+++ b/Python/39_python.py
@@ -0,0 +1,7 @@
+first = ['Bucky', 'Tom', 'Taylor']
+last = ['Roberts', 'Hanks', 'Swift']
+
+names = zip(first, last)
+
+for a, b int names:
+ print(a, b)
\ No newline at end of file
diff --git a/Python/40_python.py b/Python/40_python.py
new file mode 100644
index 0000000..01d8791
--- /dev/null
+++ b/Python/40_python.py
@@ -0,0 +1,2 @@
+answer = lambda x: x*7
+print(answer(5))
\ No newline at end of file
diff --git a/Python/tuna_21.py b/Python/tuna_21.py
new file mode 100644
index 0000000..45795a0
--- /dev/null
+++ b/Python/tuna_21.py
@@ -0,0 +1,2 @@
+def fish():
+ print('I am a tuna feesh!')
diff --git a/README.md b/README.md
index 01f2c6b..20a0a12 100644
--- a/README.md
+++ b/README.md
@@ -4,6 +4,10 @@ We are in the process of adding the source code from all of the tutorials to a p
[thenewboston Videos and Tutorials](https://www.thenewboston.com/videos.php)
+Linux: https://docs.google.com/document/d/1FgMqlHYDva5--sJuR1fc-wbidpvHMFKEvK4RHqD4px0/edit?usp=sharing
+
+DigitalOcean: https://docs.google.com/document/d/1xOllgXRN10fWz1TsURh0OYI60TAVz0snD8HOzga5CCA/edit?usp=sharing
+
***
#####How to Submit Source Code
diff --git a/React/000_template.html b/React/000_template.html
new file mode 100644
index 0000000..7caf9cb
--- /dev/null
+++ b/React/000_template.html
@@ -0,0 +1,29 @@
+
+
+
+
+ thenewboston
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/React/003_properties.html b/React/003_properties.html
new file mode 100644
index 0000000..bd5d72a
--- /dev/null
+++ b/React/003_properties.html
@@ -0,0 +1,37 @@
+
+
+
+
+ thenewboston
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/React/004_children.html b/React/004_children.html
new file mode 100644
index 0000000..ec8fa80
--- /dev/null
+++ b/React/004_children.html
@@ -0,0 +1,38 @@
+
+
+
+
+ thenewboston
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/React/005_events.html b/React/005_events.html
new file mode 100644
index 0000000..f7fa353
--- /dev/null
+++ b/React/005_events.html
@@ -0,0 +1,41 @@
+
+
+
+
+ thenewboston
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file