January 16-20
Each week, I’ll post the topics that I have covered. I plan to do this at the end of the week, so it will hopefully reflect the random links and posts I make throughout the week.
The topics for week 1 are:
- Introduction to the Agile Development Process
- Introduction to the Application Stack and MVC
- Introduction to Web Protocols and Services (DNS, HTTP, FTP, etc)
- Environment Setup
- Basic Server Administration (Linux)
- Datatypes and their Uses
- Stacks, Queues, and other Data Structures
- Object Oriented Programming
On my first day of the apprenticeship we spent most of the time setting up my computer and development environment. We also talked briefly about the first few topics on the list above. During the week I read more in-depth about Agile, Web Protocols, and Datatypes. On Thursday, we discussed the topics, went over Stacks, Queues, and other data Structures, then started the basics of Object Oriented Programming (the topic of the next 2 weeks).
Here are my (mostly raw) notes:
Agile Development
Waterfall – older development model where the project is handed off to each group in succesion. So if anything changes in the middle, it requires a restart, or changes are very difficult. IE: project manager – > designer – > front end – > back end -> QA
Great Resource for Agile and Extreme Programming: http://www.extremeprogramming.org/
MVP – Minimum viable project
Test Driven Development -
Unit Test – Tests one part of code (one unit)
1 test per function
IE: user can create a company
pass fail to see if user can create the company
100% code coverage – all of it is covered by tests, once 100% of the tests pass (theoretically) you’re finished coding.
TDD – write tests first.
Application Stack
Database → Data
Backend / services → Application
Front end → Presentation
———————–
DATA – data sources and storage or the “Model”
mysql
Reddis – document searching
Lucene – Apache
Data feeds – twitter info coming in. etc.. from an api or something like that.
APPLICATION -
Controller
Feeds
PRESENTATION -
HTML / CSS / JS
Views
Templates
Data Types:
http://php.net/manual/en/language.types.php
Strongly Types Language - every variable has a defined data type
Loosely Typed language – (like PHP)
will guess the type for you based on context. Type doesn’t always have to be defined. Loosely typed is easier, but not always correct and can cause problems. IE: an if statement that returns an integer 0 to a true/false statement, PHP calls it false, even though the integer 0 is a value that is true.
Typecasting
$A=(INT) _MYVAR . 1;
TCP/IP – Internet protocol.
Protocol by which all computers connect to the internet and transfer data.
Goofy video: http://www.youtube.com/watch?v=HOaIqQAeaik
Inside the TCP/IP standard there are several protocols for handling data communication:
TCP (Transmission Control Protocol) communication between applications
UDP (User Datagram Protocol) simple communication between applications (similar to TCP, but simpler and less reliable)
IP (Internet Protocol) communication between computers
ICMP (Internet Control Message Protocol) for errors and statistics
DHCP (Dynamic Host Configuration Protocol) for dynamic addressing
TCP uses a fixed connection. occupies the connection with a “full-duplex” communication.
IP is Connectionless.
Multiple communications can happen over on physical connection because information is broken up into packets and sent in pieces.
IP (the protocol) then routes the packets to the correct destination with IP addresses.
Another Definition of TCP/IP:
TCP/IP is TCP and IP working together.
TCP takes care of the communication between your application software (i.e. your browser) and your network software.
IP takes care of the communication with other computers.
TCP is responsible for breaking data down into IP packets before they are sent, and for assembling the packets when they arrive.
IP is responsible for sending the packets to the correct destination.
Definitions and Links
IP – Internet protocol (suite) communication between computers.
TCP – Transmission Control Protocol – Communication between applications (constant connection)
http://en.wikipedia.org/wiki/Internet_Protocol_Suite
http://www.w3schools.com/tcpip/tcpip_intro.asp
http://en.wikipedia.org/wiki/Transmission_Control_Protocol
http://en.wikipedia.org/wiki/Internet_Protocol_Suite
DNS (Name Servers), – Name servers to translate IP addresses into memorable URLS
Domains. www.sitename.com (.com being the broadest, then working left).
Request works through Name servers to end up at the correct connection.
http://en.wikipedia.org/wiki/Domain_Name_System
HTTP + Error Codes,
HTTP is how the content, or requests is broken up or encoded for transfer. Header files
in the packets and transfers display information.
http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
http://www.smartlabsoftware.com/ref/http-status-codes.htm
http://www.w3schools.com/tags/ref_httpmessages.asp
Headers -
First part of a packet or request that tells the server information about the request or the user about the reply.
http://en.wikipedia.org/wiki/HTTP_header
SSL – Secure Socket Layer -
Used for encryption and security. Connection is made, a handshake is done to verify identity. if the browser trusts the certificate that the server sends a secure encrypted connection is set up – used for financial transactions, email, etc.
http://www.verisign.com/ssl/ssl-information-center/how-ssl-security-works/index.html
http://en.wikipedia.org/wiki/Secure_Sockets_Layer
CGI – way to run executable files over internet connection. PHP can be run as a CGI module.
Java can be run as a CGI module. Pearl.. etc.
http://en.wikipedia.org/wiki/Common_Gateway_Interface