-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathSoftware_Application_Interfaces.Rpres
185 lines (137 loc) · 5.62 KB
/
Software_Application_Interfaces.Rpres
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
Application Interfaces
========================================================
author: Brian High & Elliot Norwood
date: `r format(Sys.Date(), format="%B %d, %Y")`
transition: fade
incremental: true
Research Computing and Data Management
-------------------------------------------------------
[http://github.com/brianhigh/research-computing](http://github.com/brianhigh/research-computing)
<small style="font-size:.5em">
This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.<br />
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a>
</small>
Application Interfaces
========================================================
- Visual
* Windows, Files and Folders, Graphics.
* Most common modern interface.
- Textual
* Command line
* Often more powerful and faster than the visual interface, but less intuitive.
Visual (Graphical) Interfaces
========================================================
- Graphical User Interface (GUI)
* Most common contemporary way to interface with computers.
* Uses visual / graphical representations to interact with files and applications.
* eg. Files & folders, "windows", icons, "Apps", buttons.
- Web
* Web Browsers (eg. IE, Safari, Firefox, Chrome).
* Connects to a remote web server to display information.
GUI
========================================================
- Visual navigation, point-n-click (tap), drag-n-drop, gestures.
* Physical actions should corrospond to computer behavior.
- Most useful for common or visual tasks (e.g. photo editing).
- More intuitive interface for most computer users.
>
Web Interfaces
========================================================
- Server provides application to common client app (browser).
- Most useful for network-centric, multi-user, distributed apps.
- Can be used to transfer a remote file to local machine (downloads).
Web Technologies
========================================================
- Markup
* Categorize, organize, and modify content.
- Styles
* The design side of a web interface.
- Scripts
* Allows more complex interaction than basic HTML.
- Frameworks
- Data Exchange
Markup
========================================================
- "HyperText Markup Language" (HTML)
* The basic language of the web.
* Uses "Elements and Tags" to organize content.
* Markup is not visible to the end user.
* Tags / elements can have default effects (eg. b for bold) or be used strictly for organization (eg. header)
* Can also define custom tags / elements, for the purposes of styling or scripts.
Styles
========================================================
- "Cascading Style Sheets" (CSS)
* The design side of a website
* Design should be separate from content
* Allows for layout (margins, sizes of elements), colors (font and background, images), changing fonts, and more.
* Can quickly change the look of a site without changing content by switching stylesheets.
Scripts
========================================================
Server-side web-scripting languages and platforms:
- CGI (Old school, usually Perl)
- PHP (Most common)
- ASP (Microsoft)
- JSP (Java)
- Python (Django, Pyramid Frameworks)
Client-side
- JavaScript (do not confuse with Java)
- Flash
>
Web Application Frameworks
========================================================
Allow users to easily add and modify content, without having to know the underlying web technologies.
- Content Management System (CMS)
* Drupal, Wordpress, Django
- Learning Management System (LMS)
* Canvas
Data Exchange
========================================================
- HTTP
* Client sends a request, server returns a response.
- XML
* Standard markup language that can be used by tools (eg. RSS, XHTML, SOAP) to deliver data.
- JSON
* An alternative to XML, transmits data in attribute-value pairs.
* Ajax uses JSON to request new data after a page has loaded by sending data to server dynamically.
Textual Interfaces
========================================================
- Command Line Interface (CLI)
* All text based. Some basic graphics can be simulated with text.
* Requires exact commands including spelling and case.
- Application Program Interface (API)
* Provides the "building blocks" to develop a program.
* Can allow third party utilities to "hook into" existing applications.
CLI
========================================================
- Text prompts & commands (or menus)
* Flags: short hand option
* Options: Specifies addition actions for your command
* Arguments: Specifies information you want the command to act on (eg. a file name)
- Uses:
* Data manipulation
* Very fast interface due to lack of graphics (good for low bandwidth remote connections)
* Can be much faster / easier to use than graphical if you know the commands
Windows CLI
========================================================
- DOS - "Disk Operating System"
- CMD.EXE
- PowerShell
Bash
========================================================
- "Bourne Again Shell"
- Unix systems (Mac OSX) and Linux
- Windows: Cygwin, GitBash
>
Other (Application)
========================================================
Scientific and statistics apps use CLI
- Stata
- R
- MATLAB
API
========================================================
- "Application Programming Interface" - using code libraries
- Most useful for automation and back-end data transfer
- Develop your own apps / utilities using data from another source
- Example: Google Maps API
>