Project 5: Base64

Total Page:16

File Type:pdf, Size:1020Kb

Project 5: Base64 Project 5: Base64 CS 200 • 20 Points Total Due Wednesday, March 24, 2017 Objectives Write a program or programs that allow a message to be converted back and forth between base64 encoding. Practice programming with bitwise operations. Overview The SMTP (Simple Mail Transfer Protocol) communication protocol is the technique by which computers pass email messages to one another. This system has been in place for decades, and as such has some significant (although understandable) limitations. The most significant limitation is that only printable ASCII characters between ASCII 32 (space) and ASCII 126 (tilde) can be communicated via email. This means that every email must internally consist of only the 95 different bytes in that range. This makes it impossible to directly transmit or attach "binary" data such as pictures and music files, since those files consist of bytes with values between 0 and 255. To work around this problem, binary files are converted from a base 256 numbering system (256 values per byte) into a base 64 numbering system (64 values per byte). Because 256 and 64 are both powers of 2, it is easy to convert between the two using bitwise operators in the same way that it's easy to convert between hexadecimal and octal. Base 64 notation uses 64 of the 95 printable characters to represent its digits. It makes sense to use the characters 0-9, A-Z, and a-z - but that only adds up to 62 characters total. Two more characters must be arbitrarily chosen to give 64 symbols total. MIME Base64 To be able to distinguish between emails with plain text data and those with encoded binary data, another layer of functionality was added on top of SMTP called MIME (Multipurpose Internet Mail Extensions). The MIME standard guarantees that all binary data is converted to printable ASCII characters for actual transmission, marking the MIME-Type of each data block so it may be correctly converted back on the other end. As mentioned, deciding which symbols represent a base 64 numbering system is somewhat arbitrary - in fact, there are several variations of base 64 encoding schemes that use different symbol sets. The MIME base 64 standard is called "base64" - one word. Other base 64 systems, such as "uuencode" and "binhex", are never referred to as "base64". The base64 symbols representing digits values 0 to 63 are as follows: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ Oddly enough, the value 0 is represented by 'A' rather than '0' - a '0' actually represents the value 52. 63 is represented by '/'. There is one more character used with base64 - the equals sign '='. Since every 3 data bytes is converted to exactly 4 base64 bytes (8 bits * 3 == 6 bits * 4), '=' signs are used to pad the end of a base64 sequence so that the entire set is a multiple of 4 bytes in size. There will be either zero, one, or two equals signs at the end, which mean that there are three bytes, two bytes, or one byte (respectively) encoded in those four characters. Here is a sample of base64 encoding. Your code does not have to produce this output, I only present this to show you how the conversion works. Your code only needs to accept a string and display the converted output. Original Data: Original data: Zork ASCII codes: Z = $5A o = $6F r = $72 k = $6B In binary: 01011010 01101111 01110010 01101011 Regroup as sets of 6 bits and convert to appropriate base64 digit: Groups of 8: 01011010 01101111 01110010 01101011 Groups of 6: 01011010 01101111 01110010 01101011 010110 100110 111101 110010 011010 11xxxx xxxxxx xxxxxx In base 10: 22 38 61 50 26 48 N/A N/A Base64 Output: Wm9yaw== Requirements Write one or two C/C++ programs that allow a message to be typed in and converted to base64 and back. There are two major steps for converting to base64: first you must extract out the groups of 6-bit numbers from 3 byte sets, then figure out what letters they correspond to. To convert from base64, determine the value of each base64 symbol and recombine the four 6-bit values into three bytes. Tips: Determine the bitwise operations necessary to extract or recombine a single set of values, then reapply that operation to every set. For example, you might write a function that takes a string of 3 unencoded characters and places them into an array of 4 encoded characters - and a function that takes 4 encoded characters places them into an array of 3 unencoded characters. To convert a number between 0-63 into its proper symbol, use the number as an index into a string containing all the symbols in order. To convert a base64 symbol back into a number 0-63, find the index it's located at in a string containing all the symbols in order. When converting to base64, encode every character of the input. When converting from base 64, you can ignore anything except one of the 64 valid symbols and the equals sign. See the entry for "base64" on Wikipedia for more examples. You're welcome to use the code at the bottom of this assignment as a starting point for your program. It will compile and run; all it does it take input and split it into groups of three characters and adds a ‘-‘. You only need to modify the ‘encode’ function to take groups of three characters and encode them into groups of four base64 characters. Don’t forget to handle the special case where you only get one or two characters instead of three, so you need to pad with ‘=’s appropriately. Once you have encoding working, you can take the same starter code and modify it to do decoding. You’ll have to modify the code in ‘main’ to divide input in groups of four and receive output in groups of three, and then write a version of ‘encode’ to decode instead. It’s Ok with me if you combine both programs into a single one, but you don’t have to. Be sure to tell me in your report how to run your programs, though, so I can test them. I won’t guarantee to take the time to figure it out from your source code, so you might lose points if I can’t test your program. Project Report The final step of this assignment is to create a report consisting of a cover page, an overview of the project, sample output, and the source code. See Assignment Policies on either the class website or Bb Learn. Starter Framework (in C++) 1 //============================================================================= 2 // Base64 Encoding Starter Framework 3 // 2011.02.16 by Abe Pralle 4 // 5 // Reads a string of text and prints a resulting string of text where every 6 // 3 original characters have been transformed into 4 result characters 7 // consisting of the first three characters reversed followed by a hypen. 8 // 9 // Example output: 10 // Enter text: ABCDEFGHIJKLMNOPQRSTUVWXYZ 11 // You typed in "ABCDEFGHIJKLMNOPQRSTUVWXYZ" (26 characters) 12 // Encoded value: CBA-FED-IHG-LKJ-ONM-RQP-UTS-XWV- 13 //============================================================================= 14 #include <iostream> 15 using namespace std; 16 17 void encode( unsigned char* src, unsigned char* dest ); 18 19 int main() 20 { 21 // Declare arrays to store original and encoded strings. 22 unsigned char st[80]; 23 unsigned char encoded[120]; 24 25 // Read in original string. 26 cout << "Enter text: "; 27 cin.getline( st, 80 ); 28 29 // Print back out along with the # of characters. 30 int len = strlen(st); 31 cout << "You typed in \"" << st << "\" (" << len << " characters)" << endl; 32 33 // Round length down to a multiple of 3. Remove this to get the last odd chars 34 len -= (len % 3); 35 36 // Encode the string - every 3 characters of original becomes 37 // 4 characters of result. 38 int dest_index = 0; 39 for (int i=0; i<len; i+=3) 40 { 41 encode( st+i, encoded+dest_index ); 42 dest_index += 4; 43 } 44 45 // Null terminate destination string. 46 encoded[dest_index] = 0; 47 48 // Print encoded value. 49 cout << "Encoded value: "; 50 cout << encoded << endl; 51 52 return 0; 53 } 54 55 void encode( unsigned char* src, unsigned char* dest ) 56 { 57 unsigned char ch0 = src[0]; 58 unsigned char ch1 = src[1]; 59 unsigned char ch2 = src[2]; 60 61 dest[0] = ch2; 62 dest[1] = ch1; 63 dest[2] = ch0; 64 dest[3] = '-'; 65 } Starter Framework without line numbers (easier to copy and paste) //============================================================================= // Base64 Encoding Starter Framework // 2011.02.16 by Abe Pralle // // Reads a string of text and prints a resulting string of text where every // 3 original characters have been transformed into 4 result characters // consisting of the first three characters reversed followed by a hypen. // // Example output: // Enter text: ABCDEFGHIJKLMNOPQRSTUVWXYZ // You typed in "ABCDEFGHIJKLMNOPQRSTUVWXYZ" (26 characters) // Encoded value: CBA-FED-IHG-LKJ-ONM-RQP-UTS-XWV- //============================================================================= #include <iostream> using namespace std; void encode( unsigned char* src, unsigned char* dest ); int main() { // Declare arrays to store original and encoded strings. unsigned char st[80]; unsigned char encoded[120]; // Read in original string. cout << "Enter text: "; cin.getline( st, 80 ); // Print back out along with the # of characters. int len = strlen(st); cout << "You typed in \"" << st << "\" (" << len << " characters)" << endl; // Round length down to a multiple of 3. Remove this to get the last odd chars len -= (len % 3); // Encode the string - every 3 characters of original becomes // 4 characters of result. int dest_index = 0; for (int i=0; i<len; i+=3) { encode( st+i, encoded+dest_index ); dest_index += 4; } // Null terminate destination string. encoded[dest_index] = 0; // Print encoded value. cout << "Encoded value: "; cout << encoded << endl; return 0; } void encode( unsigned char* src, unsigned char* dest ) { unsigned char ch0 = src[0]; unsigned char ch1 = src[1]; unsigned char ch2 = src[2]; dest[0] = ch2; dest[1] = ch1; dest[2] = ch0; dest[3] = '-'; } .
Recommended publications
  • Using Netpresenz
    NetPresenz 4.1 from netpresenz.com NB: Please click the "I Paid" checkbox in NetPresenz Setup - FTP Setup dialog. Contents What NetPresenz Does Features Using NetPresenz Setup FTP Setup WWW and Gopher Setup FTP Setup Details Scripting NetPresenz Setup Using NetPresenz Referring to your Server Using NetPresenz from a Un*x FTP Client Remote Volume Mounting Miscellaneous FTP Commands WWW Server Side Includes CGIs Java Missing files Gopher Security Considerations Avoid the Wrath of your Network Admin Limitations Remote Site Access Restrictions Acknowledgements How It Works What NetPresenz Does NetPresenz is a Macintosh implementation of the WWW, Gopher and FTP server protocols. It should be compatible with most FTP clients, and all WWW and Gopher clients. Basically it allows your Mac to act as an FTP server so you (and others) can access your files from anywhere around the world. Obviously there are some serious security considerations you should look into before using this software (see the Security Considerations section). NetPresenz requires System 7, MacTCP 1.1, and File Sharing enabled. It honours the Users & Groups privileges and passwords, and supports multiple logins, anonymous FTP (user name “anonymous” or “ftp”), as well as MacBinary and BinHex transfers, and the “MACB” FTP command. You can run NetPresenz as a foreground application (displaying the log), or as a background only application (use NetPresenz Setup to toggle between the two). Features Support WWW, Gopher and FTP connections. Full CGI support. Multiple simultaneous users. Honours System 7 Users & Groups (in fact depends on them!). Server Side Includes (SSI), counters and include files, file modification date and so forth.
    [Show full text]
  • 2045 Innosoft Obsoletes: 1521, 1522, 1590 N
    Network Working Group N. Freed Request for Comments: 2045 Innosoft Obsoletes: 1521, 1522, 1590 N. Borenstein Category: Standards Track First Virtual November 1996 Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies Status of this Memo This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited. Abstract STD 11, RFC 822, defines a message representation protocol specifying considerable detail about US-ASCII message headers, and leaves the message content, or message body, as flat US-ASCII text. This set of documents, collectively called the Multipurpose Internet Mail Extensions, or MIME, redefines the format of messages to allow for (1) textual message bodies in character sets other than US-ASCII, (2) an extensible set of different formats for non-textual message bodies, (3) multi-part message bodies, and (4) textual header information in character sets other than US-ASCII. These documents are based on earlier work documented in RFC 934, STD 11, and RFC 1049, but extends and revises them. Because RFC 822 said so little about message bodies, these documents are largely orthogonal to (rather than a revision of) RFC 822. This initial document specifies the various headers used to describe the structure of MIME messages. The second document, RFC 2046, defines the general structure of the MIME media typing system and defines an initial set of media types.
    [Show full text]
  • AIS Data Profile 30 December 2016
    AIS Data Profile 30 December 2016 STIX Tab STIX Sub-Tab IN/OUT Examples Field Guidance Type Text Type STIX Core STIX Type BOTH [Company Name]:[Column A]- @id This is a required field - NCCIC will replace on xs:QName Schema restricted text [Company Unique ID] dissemination with NCCIC values. (partial) BOTH 1.1.1 @version This is a required field - DHS will not accepted stix:STIXPackageVersionEnum Vocabulary defined text anything other than 1.1.1 If anything other than the accepted value is submitted the field will be removed during the sanitization process. BOTH 2002-05-30T09:00:00 @timestamp This is a required field - Schema restricted text - xs:dateTime Schema restricted text This field should be date and time only. BOTH NA STIX_Header This is a required Container Object. stix:STIXHeaderType Container BOTH NA Indicators Container Object stix:IndicatorsType Container BOTH NA TTPs Container Object stix:TTPsType Container BOTH NA Courses_of_Action Container Object stix:CoursesOfActionType Container BOTH NA Exploit_Targets Container Object stix_common:ExploitTargetsType Container STIX Header Type BOTH Provides an unstructured, text Title Review Field - On automated dissemination this xs:string Free form text title field will be replaced by an auto-generated Title. The submitted contents will be reviewed/modified/sanitized and disseminated via human manual process. Future capabilities may eliminate the human review process. BOTH See Vocab Tab Package_Intent This is a required field - Reference the Vocab stixCommon:ControlledVocabularyStringType Vocabulary defined text Tab - stixVocabs:PackageIntentEnum-1.0 stixVocabs:PackageIntentEnum-1.0 If anything other than the accepted value is submitted the field will be removed during the sanitization process.
    [Show full text]
  • Cal Anderson, OTARMA IT Risk Control Specialist
    2019 CYBER PRESENTATION Cal Anderson, OTARMA IT Risk Control Specialist Cal Anderson Bio • 20 plus years of industry experience in Information Systems, Cyber Security & Risk Management • Specialize in performing Cyber Security, SOX IT, enterprise IT audits and enterprise IT risk assessments of Fortune 500, mid‐range and small scale IT environments. • Specialize in Data Governance, Data validation and flowcharting business processes from beginning to end. • Certified: CISA, CRISC, CWM, CSQL • Certified Notary Public for the state of Ohio Goal • Provide overview of IT Risk Control Specialist function • Provide overview of the IT Risk assessment process • Provide overview of IT Risk Control Specialist function conducting training and providing IT information to the OTARMA member bases. • Provide comprehensive Cyber Security educational content for managing cyber threats. 1 IT RISK CONTROL SPECIALIST FUNCTION High‐Level Tasks perform by the IT Risk Control Specialists: • Conduct IT Risk Assessment o Identification/PII Risks o Analyze risks and how it will affect the member • Risk Evaluation o Costs o Legal Requirements o Environmental Factors o Members handling of risks • Provide recommendations to address IT issues and deficiencies. • Consult with members to answer their questions and to educate/promote awareness. • Conduct IT training IT Risk Assessment Process Members Base Management o Visit Scheduling o Visit Confirmation Onsite IT Risk Assessment o Assessment o Activities Member Base Management Visit Scheduling o Call or email member
    [Show full text]
  • Testing Software Tools of Potential Interest for Digital Preservation Activities at the National Library of Australia
    PROJECT REPORT Testing Software Tools of Potential Interest for Digital Preservation Activities at the National Library of Australia Matthew Hutchins Digital Preservation Tools Researcher 30 July 2012 Project Report Testing Software Tools of Potential Interest for Digital Preservation Activities at the National Library of Australia Published by Information Technology Division National Library of Australia Parkes Place, Canberra ACT 2600 Australia This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 2.1 Australia License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.1/au/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco California 94105 USA. 2│57 www.nla.gov.au 30 July 2012 Creative Commons Attribution-NonCommercial-ShareAlike 2.1 Australia Project Report Testing Software Tools of Potential Interest for Digital Preservation Activities at the National Library of Australia Summary 5 List of Recommendations 5 1 Introduction 8 2 Methods 9 2.1 Test Data Sets 9 2.1.1 Govdocs1 9 2.1.2 Selections from Prometheus Ingest 9 2.1.3 Special Selections 10 2.1.4 Selections from Pandora Web Archive 11 2.2 Focus of the Testing 11 2.3 Software Framework for Testing 12 2.4 Test Platform 13 3 File Format Identification Tools 13 3.1 File Format Identification 13 3.2 Overview of Tools Included in the Test 14 3.2.1 Selection Criteria 14 3.2.2 File Investigator Engine 14 3.2.3 Outside-In File ID 15 3.2.4 FIDO 16 3.2.5 Unix file Command/libmagic 17 3.2.6 Other
    [Show full text]
  • AP-DATA Supported File Formats and Size Limits V8.2
    TRITON AP-DATA Supported File Formats and Size Limits Supported File Formats and Size Limits | TRITON AP-DATA| Version 8.2.x This article provides a list of all the Supported File Formats that can be analyzed by Forcepoint™ TRITON® AP-DATA, as well as the File Size Limits for network, endpoint, and discovery functions. Use the arrows to proceed. Supported File Formats Supported File Formats and Size Limits | TRITON AP-DATA | Version 8.2.x This article provides a list of all the file formats that TRITON AP-DATA supports. The file formats supported are constantly being updated and added to. File Type Description 7-Zip 7-Zip format Ability Comm Communication Ability Ability DB Database Ability Ability Image Raster Image Ability Ability SS Spreadsheet Ability Ability WP Word Processor Ability AC3 Audio File Format AC3 Audio File Format ACE ACE Archive ACT ACT AD1 AD1 evidence file Adobe FrameMaker Adobe FrameMaker Adobe FrameMaker Book Adobe FrameMaker Book Adobe Maker Interchange Adobe Maker Interchange format Adobe PDF Portable Document Format Advanced Streaming Microsoft Advanced Streaming file TRITON AP-DATA - Supported Files Types and Size Limits 1 TRITON AP-DATA Supported File Formats and Size Limits File Type Description Advanced Systems Format Advanced Systems Format (ASF) Advanced Systems Format Advanced Systems Format (WMA) Advanced Systems Format Advanced Systems Format (WMV) AES Multiplus Comm Multiplus (AES) Aldus Freehand Mac Aldus Freehand Mac Aldus PageMaker (DOS) Aldus PageMaker for Windows Aldus PageMaker (Mac) Aldus PageMaker
    [Show full text]
  • Emacs MIME Manual
    Emacs MIME Manual by Lars Magne Ingebrigtsen This file documents the Emacs MIME interface functionality. Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with the Front-Cover texts being “A GNU Manual”, and with the Back-Cover Texts as in (a) below. A copy of the license is included in the section entitled “GNU Free Documentation License” in the Emacs manual. (a) The FSF’s Back-Cover Text is: “You have freedom to copy and modify this GNU Manual, like GNU software. Copies published by the Free Software Foundation raise funds for GNU development.” This document is part of a collection distributed under the GNU Free Documentation License. If you want to distribute this document separately from the collection, you can do so by adding a copy of the license to the document, as described in section 6 of the license. 1 Emacs MIME This manual documents the libraries used to compose and display MIME messages. This manual is directed at users who want to modify the behaviour of the MIME encod- ing/decoding process or want a more detailed picture of how the Emacs MIME library works, and people who want to write functions and commands that manipulate MIME elements. MIME is short for Multipurpose Internet Mail Extensions. This standard is documented in a number of RFCs; mainly RFC2045 (Format of Internet Message Bodies), RFC2046 (Me- dia Types), RFC2047 (Message Header Extensions for Non-ASCII Text), RFC2048 (Regis- tration Procedures), RFC2049 (Conformance Criteria and Examples).
    [Show full text]
  • Forcepoint Email Security Cloud Help
    Forcepoint Cloud Security Gateway Portal Help Forcepoint Email Security Cloud 2021 ©2021 Forcepoint Forcepoint. Forcepoint and the FORCEPOINT logo are trademarks of Forcepoint. All other trademarks used in this document are the property of their respective owner. Every effort has been made to ensure the accuracy of this document. However, Forcepoint makes no warranties with respect to this documentation and disclaims any implied warranties of merchantability and fitness for a particular purpose. Forcepoint shall not be liable for any error or for incidental or consequential damages in connection with the furnishing, performance, or use of this manual or the examples herein. The information in this documentation is subject to change without notice. Last modified: June 25, 2021 Contents Chapter 1 Getting Started . .1 About this guide . .2 Initial steps . .3 Logging on and portal security. .3 Locking down your firewalls . .4 Privacy statement . .4 Idle timeout . .4 Customizable landing page . .4 Cloud portal navigation . .5 Dashboard . .6 Alerts . .7 Chapter 2 Account Settings . .9 My Account . .10 Configuring SIEM storage . .10 Contacts . .12 Adding a contact . .12 Password settings . .16 Password policy . .17 Password expiration limit . .18 User lockout . .18 Changing passwords . .19 Forgotten passwords . .20 Two-factor authentication . .21 Terms of use. .22 Custom file types . .23 Identity Management . .23 End Users . .24 Groups . .25 Downloading and uploading groups . .25 Licenses . .26 Licenses page . .27 License information. .27 Accepting licenses. .27 Data Protection Settings . .28 Important rules for configuring accounts . .29 Chapter 3 Working with External Directories. .31 Forcepoint Cloud Security Gateway Portal Help 1 Contents What is LDAP?.
    [Show full text]
  • Kermit User Guide
    KERMIT USER GUIDE Seventh Edition Christine Gianone, Editor Columbia University Center for Computing Activities New York, New York 10027 May 26, 1988 Copyright (C) 1981,1988 Trustees of Columbia University in the City of New York Permission is granted to any individual or institution to use, copy, or redistribute this document so long as it is not sold for profit, and provided this copyright notice is retained. PREFACE Page 1 PREFACE Kermit is the name of a protocol for transferring files from one computer to another over ordinary asynchronous terminal connections. Kermit programs have been written for many different computers, and in general any two computers that have Kermit programs can exchange sequential files correctly and completely. This manual gives a brief and general overview of what Kermit is and how to use it, but consists mostly of detailed instructions for use and installation of specific Kermit programs. For a more detailed introduction to Kermit, complete with illustrations, diagrams, and tutorials, consult the book Kermit, A File Transfer Protocol, by Frank da Cruz, Digital Press, Bedford MA (1987), ISBN 0-932376-88-6, DEC order number EY-6705E-DP (phone 1-800-343-8321). The Kermit book describes Kermit in detail, from the points of view of the beginner, the user, the computer professional who must install Kermit programs or support their use, and the programmer who wishes to write new Kermit implementations. Also included are general introductions to computers, data communications, and file organization, plus a detailed troubleshooting guide, bootstrapping hints, and various appendices and tables. The latter half of the book is taken up by a complete description of the Kermit file transfer protocol, with programming examples in the C language, plus some analysis and comparisons of Kermit with other popular protocols such as Xmodem.
    [Show full text]
  • Internet Publishing: an Introduction and Discussion of Basics
    DOCUMENT RESUME ED 384 536 SE 056 741 AUTHOR Bush, J. Eric TITLE Internet Publishing: An Introduction and Discussion of Basics. PUB DATE Jun 95 NOTE 15p.; Paper presented at the Annual Meeting of the Air & Waste Management Association (88th, San Antonio, TX, June 18-23, 1995). PUB TYPE Reports Descriptive (141) Speeches/Conference Papers (150) EDRS PRICE MF01/PC01 Plus Postage. DESCRIPTORS *Computer Software; *Educational Technology; *Electronic Mail; Elementary Secondary Education; Higher Education; *Information Networks; Technology Education; *Telecommunications IDENTIFIERS *Internet ABSTRACT The internet has been considered the world's largest experiment in chaos. This paper presents a look at Internet applications and some considerations for preparing materials for utilizing these applications. The goal of the paper is to help bring order to the chaos and allow preparation ! materials for Internet distribution by informing about the tools and resources used by the Internet community. Discussions include historical perspective, methods of accessing information on the Internet, publishing and distributing files on the Internet, and grades of Internet service. Software applications for retrieving Internet information include: Telnet, FTP, Electronic Mail (e-mail), Network News, Gopher, and World Wide Web. Also discussed are sending e-mail through a reflector; listserves; setting ap a server; and finding resources using the search tools Archie, Jughead, and Veronica. A table of suffixes used for converter ano compression programs is included. (MKR) *********************************************************************** Reproductions supplied by EDRS are the best that can be made * * from the original document. *********************************************************************** Internet Publishing an Introduction and Discussion of Basics J. Eric Bush ERIC Clearinghouse for Science, Mathematics, and Environmental Education 1929 Kenny Road Columbus, OH 43210-1080 [email protected] U IS.
    [Show full text]
  • Standard Master
    ECMA-335 3rd Edition / June 2005 Common Language Infrastructure (CLI) Partitions I to VI Standard ECMA-335 Common Language Infrastructure (CLI) Partitions I to VI Ecma International Rue du Rhône 114 CH-1204 Geneva T/F: +41 22 849 6000/01 www.ecma-international.org . Common Language Infrastructure (CLI) Partition I: Concepts and Architecture i Table of Contents Foreword vii 1 Scope 1 2 Conformance 2 3 Normative references 3 4 Conventions 5 4.1 Organization 5 4.2 Informative text 5 5 Terms and definitions 6 6 Overview of the Common Language Infrastructure 9 6.1 Relationship to type safety 9 6.2 Relationship to managed metadata-driven execution 10 6.2.1 Managed code 10 6.2.2 Managed data 11 6.2.3 Summary 11 7 Common Language Specification 12 7.1 Introduction 12 7.2 Views of CLS compliance 12 7.2.1 CLS framework 12 7.2.2 CLS consumer 13 7.2.3 CLS extender 13 7.3 CLS compliance 14 7.3.1 Marking items as CLS-compliant 14 8 Common Type System 16 8.1 Relationship to object-oriented programming 18 8.2 Values and types 18 8.2.1 Value types and reference types 18 8.2.2 Built-in value and reference types 19 8.2.3 Classes, interfaces, and objects 19 8.2.4 Boxing and unboxing of values 20 iii 8.2.5 Identity and equality of values 21 8.3 Locations 22 8.3.1 Assignment-compatible locations 22 8.3.2 Coercion 22 8.3.3 Casting 22 8.4 Type members 22 8.4.1 Fields, array elements, and values 22 8.4.2 Methods 23 8.4.3 Static fields and static methods 23 8.4.4 Virtual methods 23 8.5 Naming 24 8.5.1 Valid names 24 8.5.2 Assemblies and scoping 24 8.5.3 Visibility,
    [Show full text]
  • The University of Minnesota's Internet Gopher System: a Tool for Accessing Network-Based Electronic Information." the Public-Access Computer Systems Review 4, No
    + Page 4 + ----------------------------------------------------------------- Wiggins, Rich. "The University of Minnesota's Internet Gopher System: A Tool for Accessing Network-Based Electronic Information." The Public-Access Computer Systems Review 4, no. 2 (1993): 4-60. To retrieve this file, send the following e-mail messages to LISTSERV@UHUPVM1 or [email protected]: GET WIGGINS1 PRV4N2 F=MAIL and GET WIGGINS2 PRV4N2 F=MAIL. ----------------------------------------------------------------- 1.0 Introduction Late in 1991, a new creature began burrowing its way around the Internet. This new critter helps people browse many of the resources available on local campus networks or on the worldwide Internet. Called the Internet Gopher, this tool was developed at the University of Minnesota. Pioneering sites began deploying Gopher servers in December 1991. In the short time since, the Gopher system (henceforth called "Gopher") has been deployed at many institutions around the world. A worldwide community of "Gophernauts" has come into being, with various sites contributing ideas, utility tools, bits of code, and schemes for cooperative registry efforts. Gopher now accounts for a substantial fraction of the traffic on the Internet. Gopher servers are delivering text, index searches, still images, audio, public domain software, and more to users all over the world. With Gopher, a user can: o Find out what movies are playing in Aachen, Germany. o Learn what earthquakes took place yesterday. o Read today's student newspaper from a school 2,000 miles away. o Pick up a quote from Paradise Lost for a term paper. o Read the city council meeting minutes from Wellington, New Zealand. o Listen to the final U.S.
    [Show full text]