Twisted Documentation Release 14.0.2

Total Page:16

File Type:pdf, Size:1020Kb

Twisted Documentation Release 14.0.2 Twisted Documentation Release 14.0.2 Twisted Matrix Labs Aug 12, 2017 Contents 1 Twisted Core 3 1.1 Developer Guides............................................3 1.2 Examples................................................. 289 1.3 Specifications............................................... 291 1.4 Development of Twisted......................................... 294 2 Twisted Conch 321 2.1 Developer Guides............................................ 321 2.2 Examples................................................. 329 3 Twisted Lore 331 3.1 Developer Guides............................................ 331 3.2 Examples................................................. 340 4 Twisted Mail 341 4.1 Examples................................................. 341 4.2 Twisted Mail Tutorial: Building an SMTP Client from Scratch..................... 341 5 Twisted Names 353 5.1 Developer Guides............................................ 353 5.2 Examples................................................. 363 6 Twisted Pair 365 6.1 Developer Guides............................................ 365 6.2 Examples................................................. 367 7 Twisted Web 369 7.1 Developer Guides............................................ 369 7.2 Examples................................................. 436 8 Twisted Words 439 8.1 Developer Guides............................................ 439 8.2 Examples................................................. 442 9 Historical Documents 443 9.1 2003................................................... 443 9.2 Previously................................................ 444 i ii Twisted Documentation, Release 14.0.2 Contents: Contents 1 Twisted Documentation, Release 14.0.2 2 Contents CHAPTER 1 Twisted Core Developer Guides The Vision For Twisted Many other documents in this repository are dedicated to defining what Twisted is. Here, I will attempt to explain not what Twisted is, but what it should be, once I’ve met my goals with it. First, Twisted should be fun. It began as a game, it is being used commercially in games, and it will be, I hope, an interactive and entertaining experience for the end-user. Twisted is a platform for developing internet applications. While Python by itself is a very powerful language, there are many facilities it lacks which other languages have spent great attention to adding. It can do this now; Twisted is a good (if somewhat idiosyncratic) pure-python framework or library, depending on how you treat it, and it continues to improve. As a platform, Twisted should be focused on integration. Ideally, all functionality will be accessible through all proto- cols. Failing that, all functionality should be configurable through at least one protocol, with a seamless and consistent user-interface. The next phase of development will be focusing strongly on a configuration system which will unify many disparate pieces of the current infrastructure, and allow them to be tacked together by a non-programmer. Writing Servers Overview This document explains how you can use Twisted to implement network protocol parsing and handling for TCP servers (the same code can be reused for SSL and Unix socket servers). There is a separate document covering UDP. Your protocol handling class will usually subclass twisted.internet.protocol.Protocol. Most protocol handlers inherit either from this class or from one of its convenience children. An instance of the protocol class is instantiated per- connection, on demand, and will go away when the connection is finished. This means that persistent configuration is not saved in the Protocol. 3 Twisted Documentation, Release 14.0.2 The persistent configuration is kept in a Factory class, which usually inherits from twisted.internet.protocol.Factory. The buildProtocol method of the Factory is used to create a Protocol for each new connection. It is usually useful to be able to offer the same service on multiple ports or network addresses. This is why the Factory does not listen to connections, and in fact does not know anything about the network. See the endpoints documentation for more information, or IReactorTCP.listenTCP and the other IReactor*.listen* APIs for the lower level APIs that endpoints are based on. This document will explain each step of the way. Protocols As mentioned above, this, along with auxiliary classes and functions, is where most of the code is. A Twisted protocol handles data in an asynchronous manner. The protocol responds to events as they arrive from the network and the events arrive as calls to methods on the protocol. Here is a simple example: from twisted.internet.protocol import Protocol class Echo(Protocol): def dataReceived(self, data): self.transport.write(data) This is one of the simplest protocols. It simply writes back whatever is written to it, and does not respond to all events. Here is an example of a Protocol responding to another event: from twisted.internet.protocol import Protocol class QOTD(Protocol): def connectionMade(self): self.transport.write("An apple a day keeps the doctor away\r\n") self.transport.loseConnection() This protocol responds to the initial connection with a well known quote, and then terminates the connection. The connectionMade event is usually where setup of the connection object happens, as well as any initial greetings (as in the QOTD protocol above, which is actually based on RFC 865). The connectionLost event is where tearing down of any connection-specific objects is done. Here is an example: from twisted.internet.protocol import Protocol class Echo(Protocol): def __init__(self, factory): self.factory= factory def connectionMade(self): self.factory.numProtocols= self.factory.numProtocols+1 self.transport.write( "Welcome! There are currently %d open connections.\n"% (self.factory.numProtocols,)) def connectionLost(self, reason): self.factory.numProtocols= self.factory.numProtocols-1 4 Chapter 1. Twisted Core Twisted Documentation, Release 14.0.2 def dataReceived(self, data): self.transport.write(data) Here connectionMade and connectionLost cooperate to keep a count of the active protocols in a shared object, the factory. The factory must be passed to Echo.__init__ when creating a new instance. The factory is used to share state that exists beyond the lifetime of any given connection. You will see why this object is called a “factory” in the next section. loseConnection() and abortConnection() In the code above, loseConnection is called immediately after writing to the transport. The loseConnection call will close the connection only when all the data has been written by Twisted out to the operating system, so it is safe to use in this case without worrying about transport writes being lost. If a producer is being used with the transport, loseConnection will only close the connection once the producer is unregistered. In some cases, waiting until all the data is written out is not what we want. Due to network failures, or bugs or maliciousness in the other side of the connection, data written to the transport may not be deliverable, and so even though loseConnection was called the connection will not be lost. In these cases, abortConnection can be used: it closes the connection immediately, regardless of buffered data that is still unwritten in the transport, or producers that are still registered. Note that abortConnection is only available in Twisted 11.1 and newer. Using the Protocol In this section, you will learn how to run a server which uses your Protocol. Here is code that will run the QOTD server discussed earlier: from twisted.internet.protocol import Factory from twisted.internet.endpoints import TCP4ServerEndpoint from twisted.internet import reactor class QOTDFactory(Factory): def buildProtocol(self, addr): return QOTD() # 8007 is the port you want to run under. Choose something >1024 endpoint= TCP4ServerEndpoint(reactor, 8007) endpoint.listen(QOTDFactory()) reactor.run() In this example, I create a protocol Factory. I want to tell this factory that its job is to build QOTD protocol instances, so I set its buildProtocol method to return instances of the QOTD class. Then, I want to listen on a TCP port, so I make a TCP4ServerEndpoint to identify the port that I want to bind to, and then pass the factory I just created to its listen method. endpoint.listen() tells the reactor to handle connections to the endpoint’s address using a particular protocol, but the reactor needs to be running in order for it to do anything. reactor.run() starts the reactor and then waits forever for connections to arrive on the port you’ve specified. You can stop the reactor by hitting Control-C in a terminal or calling reactor.stop(). For more information on different ways you can listen for incoming connections, see the documentation for the end- points API. For more information on using the reactor, see the reactor overview. 1.1. Developer Guides 5 Twisted Documentation, Release 14.0.2 Helper Protocols Many protocols build upon similar lower-level abstractions. For example, many popular internet protocols are line-based, containing text data terminated by line breaks (commonly CR-LF), rather than containing straight raw data. However, quite a few protocols are mixed - they have line-based sections and then raw data sections. Examples include HTTP/1.1 and the Freenet protocol. For those cases, there is the LineReceiver>‘ protocol. This protocol dispatches to two different event handlers – lineReceived and rawDataReceived. By default, only lineReceived will be called, once for each line. However,
Recommended publications
  • ECDL L2 Presentation Software Powerpoint 2016 S5.0 V1
    ECDL® European Computer Driving Licence ® ECDL Presentation BCS ITQ L2 Presentation Software Using Microsoft ® PowerPoint ® 2016 Syllabus Version 5.0 This training, which has been approved by BCS, The Chartered Institute for IT, includes exercise items intended to assist learners in their training for an ECDL Certification Programme. These exercises are not ECDL certification tests. For information about Approved Centres in the UK please visit the BCS website at www.bcs.org/ecdl. Release ECDL310_UKv1 ECDL Presentation Software Contents SECTION 1 GETTING STARTED ................................................................................... 8 1 - STARTING POWER POINT ................................................................................................ 9 2 - THE POWER POINT SCREEN .......................................................................................... 10 3 - PRESENTATIONS .......................................................................................................... 11 4 - THE RIBBON ................................................................................................................ 12 5 - THE QUICK ACCESS TOOLBAR ..................................................................................... 14 6 - HELP ........................................................................................................................... 15 7 - OPTIONS ..................................................................................................................... 17 8 - CLOSING POWER
    [Show full text]
  • Coaches Handbook
    2016 Event Handbook tcoe.org/cyberquest Updated September 29, 2016 CyberQuest Event Handbook Welcome to the Region VII eighteenth annual CyberQuest, hosted by the Tulare County Office of Education. For support, we encourage you to read through the Event Handbook. The Event Handbook provides all the information school personnel need to successfully enter and participate in the Region VII CyberQuest Competition. It contains information for both new and experienced coaches. In addition, the CyberQuest website at http://www.tcoe.org/cyberquest, ​ ​ holds many valuable resources like past scenarios and videos of actual student presentations. The “What’s New for This Year” section is intended as a “heads up” for experienced coaches. It contains information about changes and additions to the competition this year. All of these changes are included in the General Information section. The “General Information” section is the place to start for first-time coaches. It answers most of your questions about procedures, rules and technology. In addition, it provides tips on making good presentations, the judge’s rubric for scoring presentations and much more. Registration forms are submitted online. These are important documents for all coaches and it is essential that procedures and timelines be adhered to carefully. The official CyberQuest website, located on the Web at http://www.tcoe.org/CyberQuest, ​ ​ provides additional information for coaches such as copies of past CyberQuest scenarios, a wealth of resources for coaches and students to use in
    [Show full text]
  • User Interface Commands
    CHAPTER 2 User Interface Commands This chapter describes the commands used to access user and privileged EXEC command modes. It provides a description of the help command and features, lists the command editing keys and functions, and details the command history feature. This chapter also includes the EXEC commands that can be used to set various terminal parameters on a temporary basis (for the duration of a session). It includes the Telnet commands you can use to make a connection from a terminal to a remote router in order to configure the router. The commands to actually configure these parameters on a more permanent basis are provided in the “Terminal Line and Modem Support Commands” chapter in the Router Products Command Reference publication. You need enter only enough characters of a command to uniquely identify the command, thereby abbreviating the command syntax you type. For user interface task information and examples, refer to the “Understanding the User Interface” chapter of the Router Products Configuration Guide. User Interface Commands 2-1 clear line clear line Use the clear line EXEC command to return a terminal line to idle state. clear line line-number Syntax Description line-number Absolute line number Default None Command Mode EXEC Usage Guidelines Use this command to log out of a specific session running on another line. If the line uses a modem, the modem will be disconnected. Example In the following example, line 3 is reset: clear line 3 2-2 Router Products Command Reference connect connect To make a Telnet connection, enter the connect EXEC command at the system prompt.
    [Show full text]
  • CSE 142 Python Slides
    CSE 390a Lecture 4 Persistent shell settings; intro to shell scripting slides created by Marty Stepp, modified by Jessica Miller & Ruth Anderson http://www.cs.washington.edu/390a/ 1 Lecture summary • persistent settings for your bash shell • basic script syntax and running scripts • shell variables and types • control statements: the for loop 2 .bash_profile and .bashrc • Every time you log in to bash, the commands in ~/.bash_profile are run . you can put any common startup commands you want into this file . useful for setting up aliases and other settings for remote login • Every time you launch a non-login bash terminal, the commands in ~/.bashrc are run . useful for setting up persistent commands for local shell usage, or when launching multiple shells . often, .bash_profile is configured to also run .bashrc, but not always Note: a dot (.) in front of a filename indicates a normally hidden file, use ls –a to see 3 Exercise:Edit your .bashrc • Exercise : Make it so that our attu alias from earlier becomes persistent, so that it will work every time we run a shell. • Exercise : Make it so that whenever you try to delete or overwrite a file during a move/copy, you will be prompted for confirmation first. 4 .plan • Another fun settings file • Stored in your home directory • Contains information you’d like others to be able to see . is displayed when the finger protocol is run • Exercise: create a quick .plan file, and make sure it works with finger 5 Shell scripts • script: A short program meant to perform a targeted task.
    [Show full text]
  • NBAR2 Standard Protocol Pack 1.0
    NBAR2 Standard Protocol Pack 1.0 Americas Headquarters Cisco Systems, Inc. 170 West Tasman Drive San Jose, CA 95134-1706 USA http://www.cisco.com Tel: 408 526-4000 800 553-NETS (6387) Fax: 408 527-0883 © 2013 Cisco Systems, Inc. All rights reserved. CONTENTS CHAPTER 1 Release Notes for NBAR2 Standard Protocol Pack 1.0 1 CHAPTER 2 BGP 3 BITTORRENT 6 CITRIX 7 DHCP 8 DIRECTCONNECT 9 DNS 10 EDONKEY 11 EGP 12 EIGRP 13 EXCHANGE 14 FASTTRACK 15 FINGER 16 FTP 17 GNUTELLA 18 GOPHER 19 GRE 20 H323 21 HTTP 22 ICMP 23 IMAP 24 IPINIP 25 IPV6-ICMP 26 IRC 27 KAZAA2 28 KERBEROS 29 L2TP 30 NBAR2 Standard Protocol Pack 1.0 iii Contents LDAP 31 MGCP 32 NETBIOS 33 NETSHOW 34 NFS 35 NNTP 36 NOTES 37 NTP 38 OSPF 39 POP3 40 PPTP 41 PRINTER 42 RIP 43 RTCP 44 RTP 45 RTSP 46 SAP 47 SECURE-FTP 48 SECURE-HTTP 49 SECURE-IMAP 50 SECURE-IRC 51 SECURE-LDAP 52 SECURE-NNTP 53 SECURE-POP3 54 SECURE-TELNET 55 SIP 56 SKINNY 57 SKYPE 58 SMTP 59 SNMP 60 SOCKS 61 SQLNET 62 SQLSERVER 63 SSH 64 STREAMWORK 65 NBAR2 Standard Protocol Pack 1.0 iv Contents SUNRPC 66 SYSLOG 67 TELNET 68 TFTP 69 VDOLIVE 70 WINMX 71 NBAR2 Standard Protocol Pack 1.0 v Contents NBAR2 Standard Protocol Pack 1.0 vi CHAPTER 1 Release Notes for NBAR2 Standard Protocol Pack 1.0 NBAR2 Standard Protocol Pack Overview The Network Based Application Recognition (NBAR2) Standard Protocol Pack 1.0 is provided as the base protocol pack with an unlicensed Cisco image on a device.
    [Show full text]
  • Router Products Configurationguide
    Software Release 9.21 Chapters to ci co OlE Router Products ConfigurationGuide Chapters to6 Software Release 9.21 Corporate Headquarters PO Box 3075 1525 OBrien Drive Menlo Park CA 94026 415 326-1941 800 553-NETS Customer Order Number DOC-RTCG9.21 Cisco Document Assembly Number 83-0120-01 Text Part Number 78-1241-01 The products and specifications configurations and other technical information regarding the products contained in this manual are subject to change without notice All statements technical information and recommendations contained in this manual are believed to be accurate and reliable but are without of and take full for their of in this presented warranty any kind express or implied users must responsibility application any products specified manual incidental or limitation how warranties so Some states do not allow limitation or exclusion of liability for consequential or damages on long implied last and also have other that the above limitations or exclusions may not apply to you This warranty gives Customers specific legal rights you may rights vary from state to state instruction This equipment generates uses and can radiate radio frequency energy and if not installed and used in accordance with the manual may cause with the limits for device interference to radio communications This equipment has been tested and found to comply Class computing pursuant to Subpart of Part 15 of FCC Rules which are designed to provide reasonable protection against such interference when operated in commercial will be environment Operation
    [Show full text]
  • Hi Quality Version Available on AMIGALAND.COM Part Five in the Fractals Series Productivity: Wordperfect Macros ^
    WOA: Pulsar's Power PC BOARD FOR THE A500 Volume 5 No. 6 June 1990 US $3.95 Canada $4.95 Your Original AMIGA* Monthly Resource Programming: Object-Oriented Programming in C++ * Amiga Turtle Graphics APL: Primitive Functions Convergence:Hi Quality Version Available on AMIGALAND.COM Part Five In The Fractals Series Productivity: WordPerfect Macros ^ . Reviews: DigiMate ill ™ PageStream 1.8 Hardware Project: 1 RAM Expansion For Your A500 PLUS! CBM'S Multimedia Launch Of The A3000 Workbench 2.0‘s Display Modes 07447074710906 CONTENTS INSIDE STORIES Cherryware 39 by Julie Petersen Extend your vocabulary with computerisms that define products and describe characterstics associated with their use. World of Amiga, New York 47 Commodore, over 40 other Amiga vendors, and more than 15,000 Amiga users gather for a special two-day event. Commodore's Launch 81 CBM defines multimedia as it presents the Amiga 3000. Workbench 2.0 87 Hi Quality Version Available on AMIGALAND.COMDisplay a la mode. PROGRAMMING Amiga Turtle Graphics 57 by Dylan McNamee Computer graphics and programming Convergence 41 with a LOGO-like by Paul Castonguay graphics system. Part Five of th e Fractal series. Pulsar's POWER PC BOARD makes your Amiga 500 PC-compatible. Read about this and other newly C++ 51 released Am iga products in our by Scott B. Steinman, O.D., Ph.D. article, World of Amiga, New York An introduction to object-oriented HARDWARE show coverage, page 47. Amiga programming. Rapid Fire Joystick 21 APL and the Amiga 69 by John lovine by Henry T. Upper!, EdD Build a rapid fire joystick circuit for game Primitive functions and their playing on the Amiga.
    [Show full text]
  • Edition with Romkey, April 16, 1986 (PDF)
    PC/IP User's Guide MASSACHUSETTS INSTITUTE OF TECHNOLOGY Laboratory For Computer Science Network programs based on the DoD Internet Protocol for the mM Personal Computer PC/~ release or March, 1986; document updated Aprill4, 1986 by: Jerome H. Saltzer John L. Romkey .• Copyright 1984, 1985, 1986 by the Massachusetts Institute or Technology Permission to use, copy, modlt'y, and distribute these programs and their documentation ror any purpose and without ree ls hereby granted, provided that this copyright and permission notice appear on all copies and supporting documentation, the name or M.I.T. not be used in advertising or publlclty pertalnlng to dlstrlbutlon or the programs without written prior permission, and notice be glven in supporting documentation that copying and distribution ls by permlsslon or M.I.T. M.I.T. makes no representations about the suitablllty or this software for any purpose. It is provided "as ls" without express or Implied warranty. - ii - CREDITS The PC/IP packages are bullt on the work of many people in the TCP/IP community, both at M.I.T. and elsewhere. Following are some of the people who directly helped in the creation of the packages. Network environment-John L. Romkey Terminal emulator and customizer-David A. Bridgham Inltlal TFTP-Kari D. Wright Inltlal telnet-Louls J. Konopelskl Teinet model-David D. Clark Tasking package-Larry W. Allen Development system-Christopher J. Terman Development environment-Wayne C. Gramlich Administrative Assistant-Muriel Webber October 3, 1985. This document is in cover .mss - iii- - iv Table of Contents 1. Overview of PC/IP network programs 1 1.1.
    [Show full text]
  • Courtroom Technology
    Courtroom Presentation Technology PowerPoint Storyboarding, Client Presentations & Courtroom Tech Paul J. Unger, Esq. ([email protected]) Copyright © 2018 by Paul J. Unger Introduction Attorneys under-utilize visual communication, and over-utilize verbal communication as compared to the general population.1 In one study, 387 attorneys and 1657 non-attorneys were surveyed over 3 years to determine how they fit into one of three learning/ communication styles: visual (seeing), auditory (speaking and hearing) or kinesthetic (feeling). 61% of the general population prefers to learn from visual information, while only 46.9% of attorneys prefer to communicate with visual information. Whether our audience is a group of attorneys, clients or jurors, it is clear that more attorneys than not prefer to not use visual information when presenting. This is a problem that must change. Whenever appropriate, we need to get attorneys and other presenters to supplement their presentations with visual information. MS PowerPoint (as well as Keynote and/or Prezi) are excellent tools to present that visual information. Unfortunately, most people grossly misuse PowerPoint and treat it as if it is the only tool in the presentation toolbox. 1 Animators at Law 2007 Study. Interestingly, according to this study, only 18% of non-attorneys learn best by hearing information, as compared to nearly 29% of attorneys. Presentation Technology Options There are many tools available that complement PowerPoint, and for good reason. PowerPoint cannot manage and display large numbers of images, documents and video with the flexibility many times needed in the courtroom. PowerPoint is very linear in nature, and was never designed to store, manage, retrieve and display a large number of images, document and video.
    [Show full text]
  • CSE 391 Lecture 4
    CSE 391 Lecture 4 Persistent shell settings; users/groups; permissions slides created by Marty Stepp, modified by Jessica Miller and Ruth Anderson http://www.cs.washington.edu/391/ 1 Lecture summary • Persistent settings for your bash shell • User accounts and groups • File permissions • The Super User 2 .bash_profile and .bashrc • Every time you log in to bash (e.g. ssh attu), the commands in ~/.bash_profile are run . you can put any common startup commands you want into this file . useful for setting up aliases and other settings for remote login • Every time you launch a non-login bash terminal (e.g. bash), the commands in ~/.bashrc are run . useful for setting up persistent commands for local shell usage, or when launching multiple shells . Do not put things that would produce output in .bashrc (e.g. echo) . often, .bash_profile is configured to also run .bashrc, but not always Note: a dot (.) in front of a filename indicates a normally hidden file, use ls –a to see 3 Exercise:Edit your .bashrc • Exercise : Make it so that our attu alias from earlier becomes persistent, so that it will work every time we run a shell. • Exercise : Make it so that whenever you try to delete or overwrite a file during a move/copy, you will be prompted for confirmation first. 4 Making Changes Visible • After editing your .bashrc or .bash_profile, how do you make the aliases etc. in the file take effect? . .bash_profile • log on again (e.g ssh attu), or • bash -l (el not one) will start a login shell, or • source .bash_profile .
    [Show full text]
  • Uncovering Network Perimeter Vulnerabilities in Cisco Routers According to Requirements Defined in Pci Dss 2.0 David E
    Regis University ePublications at Regis University All Regis University Theses Summer 2011 Uncovering Network Perimeter Vulnerabilities in Cisco Routers According to Requirements Defined in Pci Dss 2.0 David E. Naples Regis University Follow this and additional works at: https://epublications.regis.edu/theses Part of the Computer Sciences Commons Recommended Citation Naples, David E., "Uncovering Network Perimeter Vulnerabilities in Cisco Routers According to Requirements Defined in Pci Dss 2.0" (2011). All Regis University Theses. 472. https://epublications.regis.edu/theses/472 This Thesis - Open Access is brought to you for free and open access by ePublications at Regis University. It has been accepted for inclusion in All Regis University Theses by an authorized administrator of ePublications at Regis University. For more information, please contact [email protected]. Regis University College for Professional Studies Graduate Programs Final Project/Thesis Disclaimer Use of the materials available in the Regis University Thesis Collection (“Collection”) is limited and restricted to those users who agree to comply with the following terms of use. Regis University reserves the right to deny access to the Collection to any person who violates these terms of use or who seeks to or does alter, avoid or supersede the functional conditions, restrictions and limitations of the Collection. The site may be used only for lawful purposes. The user is solely responsible for knowing and adhering to any and all applicable laws, rules, and regulations relating or pertaining to use of the Collection. All content in this Collection is owned by and subject to the exclusive control of Regis University and the authors of the materials.
    [Show full text]
  • Computer Studies Term: Third Class: Jss 2
    BUBENDORFF MEMORIAL GRAMMAR SCHOOL, ADAZI- NNUKWU NAME OF TEACHER: OCHOIFEOMA CHIKA SUBJECT: COMPUTER STUDIES TERM: THIRD CLASS: JSS 2 Graphic Packages Graphics package are specially designed software that are used for graphic production of images, drawing, designs, pictures and other graphic related jobs. They are also packages use in designing professional art work. It uses lines, shapes, colours and patterns to show information. They have some special tools that enables one to design or draw any type of image like letter head paper, birth day card, wedding card, complementary card, invitation card, logos, banners etc. Graphic images can be created using computers. Examples of Graphic Packages 1. Ms-Paint 2. Instant Artist 3. Corel Draw 4. Harvard Graphics 5. Adobe Photoshop 6. Logo Graphic 7. Corel Photo-paint 8. Print Master 9. Jasc’s paint shop pro etc. 1. Ms-Paint: This is a drawing software you can use to create simple or elaborate drawings. In this software, you select the line or shape you want to draw from the paint toolbox, choose a colour, and then drag the mouse pointer over the page to create the line or shape. 2. Instant Artist: The instant photo artist lets anyone to paint like a master, and the advantage is that absolutely no experience is needed. You can add elegant artistic images to your website that are guaranteed to make your competitors and create stylish art for use in cards, calendars and so on. 3. Harvard Graphics: Harvard graphics was the first presentation program which includes text, graphs and charts in one program.
    [Show full text]