Python Guide Documentation Publicación 0.0.1

Total Page:16

File Type:pdf, Size:1020Kb

Python Guide Documentation Publicación 0.0.1 Python Guide Documentation Publicación 0.0.1 Kenneth Reitz 15 de November de 2016 Índice general 1. Getting Started with Python 3 1.1. Eligiendo un Interprete..........................................3 1.2. Properly Installing Python........................................5 1.3. Installing Python on Mac OS X.....................................6 1.4. Installing Python on Windows......................................7 1.5. Installing Python on Linux........................................8 2. Writing Great Python Code 11 2.1. Structuring Your Project......................................... 11 2.2. Code Style................................................ 21 2.3. Reading Great Code........................................... 31 2.4. Documentation.............................................. 31 2.5. Testing Your Code............................................ 33 2.6. Logging.................................................. 37 2.7. Common Gotchas............................................ 40 2.8. Choosing a License............................................ 43 3. Scenario Guide for Python Applications 45 3.1. Network Applications.......................................... 45 3.2. Web Applications............................................ 46 3.3. HTML Scraping............................................. 52 3.4. Command-line Applications....................................... 54 3.5. GUI Applications............................................. 55 3.6. Databases................................................. 57 3.7. Networking................................................ 58 3.8. Systems Administration......................................... 59 3.9. Continuous Integration.......................................... 64 3.10. Speed................................................... 65 3.11. Scientific Applications.......................................... 68 3.12. Image Manipulation........................................... 70 3.13. Data Serialization............................................ 72 3.14. XML parsing............................................... 73 3.15. JSON................................................... 74 3.16. Cryptography............................................... 74 3.17. Interfacing with C/C++ Libraries.................................... 75 4. Shipping Great Python Code 79 4.1. Packaging Your Code.......................................... 79 I 4.2. Freezing Your Code........................................... 81 5. Python Development Environments 85 5.1. Your Development Environment..................................... 85 5.2. Virtual Environments........................................... 90 5.3. Further Configuration of Pip and Virtualenv............................... 93 6. Additional Notes 95 6.1. Introduction............................................... 95 6.2. The Community............................................. 96 6.3. Learning Python............................................. 98 6.4. Documentation.............................................. 102 6.5. News................................................... 103 6.6. Contribute................................................ 104 6.7. License.................................................. 105 6.8. The Guide Style Guide.......................................... 105 II Python Guide Documentation, Publicación 0.0.1 Saludos, Terrícola! Bienvenido a la Guía Hitchhiker para Python. Esto es una guía activa. Si deseas contribuir, crea una copia en GitHub! Esta guía hecha a mano existe para proveer para ambos: novatos y expertos desarrolladores de Python un manual de mejores prácticas para instalación, configuración y uso de Python diariamente. Esta guía es obstinada en la manera que casi todo, pero no del todo, es diferente a la documentación oficial de Python. No encontrarás una lista de cada framwork web disponible aquí. Más bien, encontrarás una lista concissa de opciones altamente recomendadas. Vamos a empezar! Pero primeroxs, vamos a asegurarnos que sabes donde estas. Índice general 1 Python Guide Documentation, Publicación 0.0.1 2 Índice general CAPÍTULO 1 Getting Started with Python New to Python? Let’s properly setup up your Python environment. 1.1 Eligiendo un Interprete 1.1.1 El estado de Python (2 vs 3) Cuando vamos a elegir un interprete de Python, una pregunta esta siempre presente: “Debo elegir Python 2 o Python 3”? La respuesta no esta tan obvia como uno podría pensar. La esencia básica de las cosas es la siguiente: 1. Python 2.7 ha sido un estandar por un largo tiempo. 2. Python 3 introduce mayores cambios al lenguaje, que muchos desarrolladores no están felices con eso. 3. Python 2.7 recibirá actualizaciones de seguridad necesarias hasta 2020 5. 4. Python 3 está continuamente evolucionando, como Python 2 lo hizo en años pasados. Así, puedes ver porque no es una desición fácil. 1.1.2 Recommendaciones Voy a ser franco: Usa Python 3 si... No te importa. Te encanta Python 3. Eres indiferente a 2 vs 3. No sabes cual utilizar Te gusta el cambio Usa Python 2 si... Te encanta Python 2 y estas triste por el futuro de Python 3. Los requisitos de estabilidad de tu software podrían mejorarse con un lenguaje y ejecución que nunca cambia. 5 https://www.python.org/dev/peps/pep-0373/#id2 3 Python Guide Documentation, Publicación 0.0.1 El software que dependes los usará. 1.1.3 Asi que.... 3? Si estas eligiendo un interprete de Python para usar, y no eres obstinado, entonces te recomiendo usar la versión más nueva de Python 3.x, ya que cada versión trae nuevos y mejorados módulos de la biblioteca estandar, correcciones de seguridad y errores. Progreso es progreso. Dado tal, sólo use Python 2 si tienes una fuerte razón para hacerlo, tal como una librería exclusiva de Python 2 que no tiene una adecuada alternativa en Python 3, o si (como yo) ama absolutmente y está inspirado en Python 2. Revisa Puedo usar Python 3? para ver si el software del que dependes bloqueará tu adopción de Python 3. Otras lecturas Es posible It is possible escribir código que funcionará en Python 2.6, 2.7, y Python 3. Estos rangos de trivial a difícil dependerá del tipo de software que estás escribiendo; si eres principiante hay cosas más importantes por las que preocuparse. 1.1.4 Implementaciones Cuando la gente habla de Python ellos a menudo no sólo se refieren al lenguaje sino a la implementación CPython. Python es actualmente una especificación para un lenguaje que puede ser implementado en diferentes maneras. CPython CPython es la referencia de la implmementación de Python, escrita en C. Este compila código Python a bytecode intermedio que luego es interpretado por la máquina virtual. CPython provee el nivel más alto de compatibilidad con paquetes Python y módulos de extensión C. Si estas escribiendo código abierto Python y deseas alcanzar una amplia audiencia posible, apuntar a CPython es lo mejor. Para usar paquetes que recaen en extensiones C para funcionar, CPython es tu única implementación como opción. Todas las versiones de Python son implementadas en C porque CPython es la implementación de referencia. PyPy PyPy es un interprete de Python implementado en un subgrupo restringido de tipo estático del lenguaje de Python llamado RPython. El interprete cuenta con un compilador just-in-time y soporta múltiples back-ends (C, CLI, JVM). PyPy apunta a la máxima compatibilidad con la referencia de implementación CPython mientras mejora su rendimien- to. Si estas buscando incrementar el rendimiento de tu código Python, vale la pena darle una oportunidad a PyPy. En un conjunto de puntos de referencia, es actualmente más de 5 veces más rápido que CPython. PyPy soporta Python 2.7. PyPy3 1, liberado como beta, apunta a Python 3. 1 http://pypy.org/compat.html 4 Capítulo 1. Getting Started with Python Python Guide Documentation, Publicación 0.0.1 Jython Jython es una implementación de Python que compila código Python a Java bytecode que es ejecutado por la JVM (Java Virtual Machine). Adicionalmente, esta habilitado para importar y usar cualquier clase de Java como un módulo de Python. Si necesitas interactuar con código Java o tienes otras razones para escribir código Python para la JVM, Jython es tu mejor opción. Jython actualmente soporta hasta Python 2.7. 2 IronPython IronPython es una implementación de Python para el framework .NET. Puede ser usada por ambas librerías Python y .NET framework, y también puede exponer código Pytohn para otros lenguajes en el framwork .NET. Python Tools para Visual Studio integra IronPython directamente en el ambiente de desarrollo Visual Stu- dio,convirtiéndolo en una elección ideal para desarrolladores Windows. IronPython soporta Python 2.7. 3 PythonNet Python for .NET es un paquete que provee una integración sin puntos rotos de una instalación de Python con una instalación de .NET Common Language Runtime (CLR). Es un enfoque inverso al tomado por IronPython (ver antes), lo que es es más complementario que competitivo. En conjunto con Mono, PythonNet permite de forma nativa instalaciones de Python en sistemas operativos no- Windows, tales como OS X y Linux, para operar con .NET framework. Puede correr con IronPython sin conflicto. PythonNet soporta desde Python 2.3 hasta Python 2.7. 4 Properly Install Python 1.2 Properly Installing Python There’s a good chance that you already have Python on your operating system. If so, you do not need to install or configure anything else to use Python. Having said that, I would strongly re- commend that you install the tools and libraries described in the guides below before you start building
Recommended publications
  • Epydoc: API Documentation Extraction in Python
    Epydoc: API Documentation Extraction in Python Edward Loper Department of Computer and Information Science University of Pennsylvania, Philadelphia, PA 19104-6389, USA Abstract • All API documentation must be written (and read) in plaintext. Epydoc is a tool for generating API documentation for Python modules, based on their docstrings. It • There is no easy way to navigate through the supports several output formats (including HTML API documentation. and PDF), and understands four different markup • The API documentation is not searchable. languages (Epytext, Javadoc, reStructuredText, and plaintext). A wide variety of fields can be used to • A library's API documentation cannot be viewed supply specific information about individual objects, until that library is installed. such as descriptions of function parameters, type sig- natures, and groupings of related objects. • There is no mechanism for documenting vari- ables. 1 Introduction • There is no mechanism for \inheriting" docu- mentation (e.g. in a method that overrides its Documentation is a critical contributor to a library's base class method). This can lead to dupli- usability. Thorough documentation shows new users cation of documentation, which can often get how to use a library; and details the library's specific out-of-sync. behavior for advanced users. Most libraries can ben- efit from three different types of documentation: tu- Epydoc is a tool that automatically extracts a li- torial documentation, which introduces new users to brary's docstrings, and uses them to create API doc- the library by showing them how to perform typical umentation for the library in a variety of formats. tasks; reference documentation, which explains the li- Epydoc addresses all of these limitations: brary's overall design, and describes how the different • pieces of the library fit together; and API documenta- Docstrings can be written in a variety of markup tion, which describes the individual objects (classes, languages, including reStructuredText and Javadoc.
    [Show full text]
  • Python Qt Tutorial Documentation Release 0.0
    Python Qt tutorial Documentation Release 0.0 Thomas P. Robitaille Jun 11, 2018 Contents 1 Installing 3 2 Part 1 - Hello, World! 5 3 Part 2 - Buttons and events 7 4 Part 3 - Laying out widgets 9 5 Part 4 - Dynamically updating widgets 13 i ii Python Qt tutorial Documentation, Release 0.0 This is a short tutorial on using Qt from Python. There are two main versions of Qt in use (Qt4 and Qt5) and several Python libraries to use Qt from Python (PyQt and PySide), but rather than picking one of these, this tutorial makes use of the QtPy package which provides a way to use whatever Python Qt package is available. This is not meant to be a completely exhaustive tutorial but just a place to start if you’ve never done Qt development before, and it will be expanded over time. Contents 1 Python Qt tutorial Documentation, Release 0.0 2 Contents CHAPTER 1 Installing 1.1 conda If you use conda to manage your Python environment (for example as part of Anaconda or Miniconda), you can easily install Qt, PyQt5, and QtPy (a common interface to all Python Qt bindings) using: conda install pyqt qtpy 1.2 pip If you don’t make use of conda, an easy way to install Qt, PyQt5, and QtPy is to do: pip install pyqt5 qtpy 3 Python Qt tutorial Documentation, Release 0.0 4 Chapter 1. Installing CHAPTER 2 Part 1 - Hello, World! To start off, we need to create a QApplication object, which represents the overall application: from qtpy.QtWidgets import QApplication app= QApplication([]) You will always need to ensure that a QApplication object exists, otherwise your Python script will terminate with an error if you try and use any other Qt objects.
    [Show full text]
  • Testing Pyside/Pyqt Code Using the Pytest Framework and Pytest-Qt
    Testing PySide/PyQt Code Using the pytest framework and pytest-qt Florian Bruhin “The Compiler” Bruhin Software 06. November 2019 Qt World Summit, Berlin About me • 2011: Started using Python • 2013: Started using PyQt and developing qutebrowser • 2015: Switched to pytest, ended up as a maintainer • 2017: qutebrowser v1.0.0, QtWebEngine by default • 2019: 40% employed, 60% open-source and freelancing (Bruhin Software) Giving trainings and talks at various conferences and companies! Relevant Python features Decorators registered_functions: List[Callable] = [] def register(f: Callable) -> Callable: registered_functions.append(f) return f @register def func() -> None: .... Relevant Python features Context Managers def write_file() -> None: with open("test.txt", "w") as f: f.write("Hello World") Defining your own: Object with special __enter__ and __exit__ methods. Relevant Python features Generators/yield def gen_values() -> Iterable[int] for i in range(4): yield i print(gen_values()) # <generator object gen_values at 0x...> print(list(gen_values())) # [0, 1, 2, 3] PyQt • Started in 1998 (!) by Riverbank Computing • GPL/commercial • Qt4 $ PyQt4 Qt5 $ PyQt5 PySide / Qt for Python • Started in 2009 by Nokia • Unmaintained for a long time • Since 2016: Officially maintained by the Qt Company again • LGPL/commercial • Qt4 $ PySide Qt5 $ PySide2 (Qt for Python) Qt and Python import sys from PySide2.QtWidgets import QApplication, QWidget, QPushButton if __name__ == "__main__": app = QApplication(sys.argv) window = QWidget() button = QPushButton("Don't
    [Show full text]
  • THE FUTURE of SCREENS from James Stanton a Little Bit About Me
    THE FUTURE OF SCREENS From james stanton A little bit about me. Hi I am James (Mckenzie) Stanton Thinker / Designer / Engineer / Director / Executive / Artist / Human / Practitioner / Gardner / Builder / and much more... Born in Essex, United Kingdom and survived a few hair raising moments and learnt digital from the ground up. Ok enough of the pleasantries I have been working in the design field since 1999 from the Falmouth School of Art and onwards to the RCA, and many companies. Ok. less about me and more about what I have seen… Today we are going to cover - SCREENS CONCEPTS - DIGITAL TRANSFORMATION - WHY ASSETS LIBRARIES - CODE LIBRARIES - COST EFFECTIVE SOLUTION FOR IMPLEMENTATION I know, I know, I know. That's all good and well, but what does this all mean to a company like mine? We are about to see a massive change in consumer behavior so let's get ready. DIGITAL TRANSFORMATION AS A USP Getting this correct will change your company forever. DIGITAL TRANSFORMATION USP-01 Digital transformation (DT) – the use of technology to radically improve performance or reach of enterprises – is becoming a hot topic for companies across the globe. VERY DIGITAL CHANGING NOT VERY DIGITAL DIGITAL TRANSFORMATION USP-02 Companies face common pressures from customers, employees and competitors to begin or speed up their digital transformation. However they are transforming at different paces with different results. VERY DIGITAL CHANGING NOT VERY DIGITAL DIGITAL TRANSFORMATION USP-03 Successful digital transformation comes not from implementing new technologies but from transforming your organisation to take advantage of the possibilities that new technologies provide.
    [Show full text]
  • The Snap Framework: a Web Toolkit for Haskell
    The Functional Web The Snap Framework A Web Toolkit for Haskell Gregory Collins • Google Switzerland Doug Beardsley • Karamaan Group askell is an advanced functional pro- the same inputs, always produce the same out- gramming language. The product of more put. This property means that you almost always H than 20 years of research, it enables rapid decompose a Haskell program into smaller con- development of robust, concise, and fast soft- stituent parts that you can test independently. ware. Haskell supports integration with other Haskell’s ecosystem also includes many power- languages and has loads of built-in concurrency, ful testing and code-coverage tools. parallelism primitives, and rich libraries. With Haskell also comes out of the box with a set its state-of-the-art testing tools and an active of easy-to-use primitives for parallel and con- community, Haskell makes it easier to produce current programming and for performance pro- flexible, maintainable, high-quality software. filing and tuning. Applications built with GHC The most popular Haskell implementation is enjoy solid multicore performance and can han- the Glasgow Haskell Compiler (GHC), a high- dle hundreds of thousands of concurrent net- performance optimizing native-code compiler. work connections. We’ve been delighted to find Here, we look at Snap, a Web-development that Haskell really shines for Web programming. framework for Haskell. Snap combines many other Web-development environments’ best fea- What’s Snap? tures: writing Web code in an expressive high- Snap offers programmers a simple, expressive level language, a rapid development cycle, fast Web programming interface at roughly the same performance for native code, and easy deploy- level of abstraction as Java servlets.
    [Show full text]
  • Asyncprotect T1 Extunderscore Gui Documentation
    async_gui Documentation Release 0.1.1 Roman Haritonov Aug 21, 2017 Contents 1 Usage 1 1.1 Installation................................................1 1.2 First steps.................................................1 1.3 Tasks in threads.............................................2 1.4 Tasks in processes............................................3 1.5 Tasks in greenlets.............................................3 1.6 Returning result.............................................3 2 Supported GUI toolkits 5 3 API 7 3.1 engine..................................................7 3.2 tasks...................................................8 3.3 gevent_tasks...............................................9 4 Indices and tables 11 Python Module Index 13 i ii CHAPTER 1 Usage Installation Install with pip or easy_install: $ pip install --upgrade async_gui or download latest version from GitHub: $ git clone https://github.com/reclosedev/async_gui.git $ cd async_gui $ python setup.py install To run tests: $ python setup.py test First steps First create Engine instance corresponding to your GUI toolkit (see Supported GUI toolkits): from async_gui.tasks import Task from async_gui.toolkits.pyqt import PyQtEngine engine= PyQtEngine() It contains decorator @engine.async which allows you to write asynchronous code in serial way without callbacks. Example button click handler: @engine.async def on_button_click(self, *args): self.status_label.setText("Downloading image...") 1 async_gui Documentation, Release 0.1.1 # Run single task in separate thread
    [Show full text]
  • Analysing the Use of Outdated Javascript Libraries on the Web
    Updated in September 2017: Require valid versions for library detection throughout the paper. The vulnerability analysis already did so and remains identical. Modifications in Tables I, III and IV; Figures 4 and 7; Sections III-B, IV-B, IV-C, IV-F and IV-H. Additionally, highlight Ember’s security practices in Section V. Thou Shalt Not Depend on Me: Analysing the Use of Outdated JavaScript Libraries on the Web Tobias Lauinger, Abdelberi Chaabane, Sajjad Arshad, William Robertson, Christo Wilson and Engin Kirda Northeastern University {toby, 3abdou, arshad, wkr, cbw, ek}@ccs.neu.edu Abstract—Web developers routinely rely on third-party Java- scripts or HTML into vulnerable websites via a crafted tag. As Script libraries such as jQuery to enhance the functionality of a result, it is of the utmost importance for websites to manage their sites. However, if not properly maintained, such dependen- library dependencies and, in particular, to update vulnerable cies can create attack vectors allowing a site to be compromised. libraries in a timely fashion. In this paper, we conduct the first comprehensive study of To date, security research has addressed a wide range of client-side JavaScript library usage and the resulting security client-side security issues in websites, including validation [30] implications across the Web. Using data from over 133 k websites, we show that 37 % of them include at least one library with a and XSS ([17], [36]), cross-site request forgery [4], and session known vulnerability; the time lag behind the newest release of fixation [34]. However, the use of vulnerable JavaScript libraries a library is measured in the order of years.
    [Show full text]
  • Cross-Platform Mobile Application for the Cothority
    Cross-Platform Mobile Application for the Cothority Vincent Petri & Cedric Maire School of Computer and Communication Sciences Decentralized and Distributed Systems Lab Semester Project January 2018 Responsible Supervisor Prof. Bryan Ford Linus Gasser EPFL / DeDiS EPFL / DeDiS 2 Acknowledgements We would like to express our special thanks to Linus Gasser who gave us the opportunity to do this very interesting project related to the collec- tive authority (Cothority) framework developed by the DeDiS laboratory at EPFL. We would like to thank him for the valuable help he gave us whenever we needed and for the knowledge he provided to us throughout the semester. Secondly, we would also like to thank our parents and friends who helped us through the hard times of finalising the project within the limited time frame. 3 1 Abstract The Cothority2 framework has been developed and maintained by the DeDiS laboratory at EPFL. This project provides a framework for develop- ing, analysing, and deploying decentralised and distributed cryptographic protocols. A set of servers that runs these protocols and communicates among each other is referred to as a collective authority, or cothority, and the individual servers are called cothority servers or conodes. A cothority that executes decentralised protocols could be used for collective signing, threshold signing, or the generation of public-randomness, to name only a few options. The highest level of abstraction can be created by protocols like the collective signature (CoSi) protocol, the random numbers (Rand- Hound) protocol, or the communication (Messaging) protocol used by the conodes to exchange data. Then come the services, which rely on these pro- tocols.
    [Show full text]
  • The Effect of Ajax on Performance and Usability in Web Environments
    The effect of Ajax on performance and usability in web environments Y.D.C.N. op ’t Roodt, BICT Date of acceptance: August 31st, 2006 One Year Master Course Software Engineering Thesis Supervisor: Dr. Jurgen Vinju Internship Supervisor: Ir. Koen Kam Company or Institute: Hyves (Startphone Limited) Availability: public domain Universiteit van Amsterdam, Hogeschool van Amsterdam, Vrije Universiteit 2 This page intentionally left blank 3 Table of contents 1 Foreword ................................................................................................... 6 2 Motivation ................................................................................................. 7 2.1 Tasks and sources................................................................................ 7 2.2 Research question ............................................................................... 9 3 Research method ..................................................................................... 10 3.1 On implementation........................................................................... 11 4 Background and context of Ajax .............................................................. 12 4.1 Background....................................................................................... 12 4.2 Rich Internet Applications ................................................................ 12 4.3 JavaScript.......................................................................................... 13 4.4 The XMLHttpRequest object..........................................................
    [Show full text]
  • Web Development Frameworks Ruby on Rails VS Google Web Toolkit
    Bachelor thesis Web Development Frameworks Ruby on Rails VS Google Web Toolkit Author: Carlos Gallardo Adrián Extremera Supervisor: Welf Löwe Semester: Spring 2011 Course code: 2DV00E SE-391 82 Kalmar / SE-351 95 Växjö Tel +46 (0)772-28 80 00 [email protected] Lnu.se/dfm Abstract Web programming is getting more and more important every day and as a consequence, many new tools are created in order to help developers design and construct applications quicker, easier and better structured. Apart from different IDEs and Technologies, nowadays Web Frameworks are gaining popularity amongst users since they offer a large range of methods, classes, etc. that allow programmers to create and maintain solid Web systems. This research focuses on two different Web Frameworks: Ruby on Rails and Google Web Toolkit and within this document we will examine some of the most important differences between them during a Web development. Keywords web frameworks, Ruby, Rails, Model-View-Controller, web programming, Java, Google Web Toolkit, web development, code lines i List of Figures Figure 2.1. mraible - History of Web Frameworks....................................................4 Figure 2.2. Java BluePrints - MVC Pattern..............................................................6 Figure 2.3. Libros Web - MVC Architecture.............................................................7 Figure 2.4. Ruby on Rails - Logo.............................................................................8 Figure 2.5. Windaroo Consulting Inc - Ruby on Rails Structure.............................10
    [Show full text]
  • CIS192 Python Programming Graphical User Interfaces
    CIS192 Python Programming Graphical User Interfaces Robert Rand University of Pennsylvania November 19, 2015 Robert Rand (University of Pennsylvania) CIS 192 November 19, 2015 1 / 20 Outline 1 Graphical User Interface Tkinter Other Graphics Modules 2 Text User Interface curses Other Text Interface Modules Robert Rand (University of Pennsylvania) CIS 192 November 19, 2015 2 / 20 Tkinter The module Tkinter is a wrapper of the graphics library Tcl/Tk Why choose Tkinter over other graphics modules I It’s bundled with Python so you don’t need to install anything I It’s fast I Guido van Rossum helped write the Python interface The docs for Tkinter aren’t that good I The docs for Tk/Tcl are much better I Tk/Tcl functions translate well to Tkinter I It’s helpful to learn the basic syntax of Tk/Tcl Tk/Tcl syntax ! Python: I class .var_name -key1 val1 -key2 val2 ! var_name = class(key1=val1, key2=val2) I .var_name method -key val ! var_name.method(key=val) Robert Rand (University of Pennsylvania) CIS 192 November 19, 2015 3 / 20 Bare Bones Tkinter from Tkinter import Frame class SomeApp(Frame): def __init__(self, master=None): tk.Frame.__init__(self, master) def main(): root = tk.Tk() app = SomeApp(master=root) app.mainloop() if __name__ ==’__main__’: main() Robert Rand (University of Pennsylvania) CIS 192 November 19, 2015 4 / 20 Images By default, Tkinter only supports bitmap, gif, and ppm/pgm images More images are supported with Pillow Pillow is a fork of Python Imaging Library pip install pillow from PIL import Image, ImageTk Create a PIL
    [Show full text]
  • CS 683 Emerging Technologies Fall Semester, 2006 Doc 23 Rails 7 AJAX Nov 16, 2006
    CS 683 Emerging Technologies Fall Semester, 2006 Doc 23 Rails 7 AJAX Nov 16, 2006 Copyright ©, All rights reserved. 2006 SDSU & Roger Whitney, 5500 Campanile Drive, San Diego, CA 92182-7700 USA. OpenContent (http:// www.opencontent.org/opl.shtml) license defines the copyright on this document. References script.aculo.us, Common Ajax Javascript library, http://script.aculo.us/ Surveying open-source AJAX toolkits, Peter Wayner, Inforworld, July 31, 2006, http://www.infoworld.com/article/ 06/07/31/31FEajax_1.html Proprietary AJAX toolkits: The other side of the coin, Peter Wayner, Inforworld, July 31, 2006, http://www.infoworld.com/ infoworld/article/06/07/31/31FEajaxsb_1.html Ajax/DHTML Library Scorecard:How Cross Platform Are They? Musings from Mars ,March 4th, 2006, http:// www.musingsfrommars.org/2006/03/ajax-dhtml-library-scorecard.html Wikipedia, http://en.wikipedia.org/wiki/Main_Page Agile Web Development with Rails 2nd Ed Bl.16 October 25, Thomas & Hanson, The Pragmatic Bookshelf, PDF Rails API, http://api.rubyonrails.org/ Some Ajax Reading Why Ajax Sucks (Most of the Time) Jacob Nielson http://www.usabilityviews.com/ajaxsucks.html Ajax SWik http://swik.net/Ajax Ajax Mistakes How to use XMLHttpRequest Places to use Ajax 2 Web Browsers suck for developing applications HTML is very limited as UI Delay in response from server 3 Reducing Suckiness CSS Javascript XMLHttpRequest 4 Cascading Style Sheets - CSS stylesheet language that describes layout of HTML & XML Provides HTML better control over layout body { background-color: #fff;
    [Show full text]