RSS

Monthly Archives: April 2009

Pyjamas is a port of Google’s Web Toolkit to Python

Pyjamas is a port of Google’s Web Toolkit to Python (GWT is a Java to AJAX compiler and Web-based Applications Widget set, where Pyjamas is a Python to AJAX compiler). More Info

Overview

Like GWT, pyjamas involves the translation of the application and libraries (including UI widgets and DOM classes) to Javascript and the packaging up of that Javascript code.

There are two core developer tools included with pyjamas.  pyjs[1] translates Python code to Javascript by walking the Python abstract syntax tree and generating Javascript.

In many cases, built-in Python types require a custom Javascript implementation.  For example, even though Python lists are similar to Javascript arrays, Python lists are converted to custom objects that implement methods such as append.  These custom objects, required for translation by pyjs, are defined in a library called pyjslib.[2]

Like GWT, pyjamas comes with a set of UI widgets as well as a library for DOM manipulation.[3] These libraries are written in Python but are, like everything else, translated to Javascript for deployment.

The overall translation of individual components is managed by build[4] which also creates the necessary boilerplate code.  The result is a set of.html and .js files that can be served up by a Web server.

There are other components planned which have not been covered here such as server-side code for communication in client-server applications. The examples do however contain JSONRPC server-side source code (in cgi python, and php) which give an idea of what’s involved.

The Pyjamas Widget set, documented here is exceptionally comprehensive and yet is easy to use, providing:

If the available widgets and the addon contributed widgets are not enough, then there is a simple tutorial on how to create your own widget. The underlying basis of all widgets is to encapsulate manipulation of an HTML DOM model, representing the screen.

Additional features, thanks to the underlying use of webkit, include:

  • Full CSS Stylesheet functionality, both local, remote and direct and simple API manipulation.
  • Option of executing javascript, for full and complete manipulation of the application.
  • Loading of complete HTML Pages, both local and remote; full URL support.
  • Plugin support for multimedia plugins such as Flash (obsoleting the need for gtk-mozplugin)
  • Access to XML, XSLT and AJAX.
  • (Future: full SVG Canvas support, like HippoCanvas)

overview

 
1 Comment

Posted by on April 22, 2009 in Web

 

Tags: , ,

GWT Component Library

GWT Component Library: A collection of third-party components created with GWT, including wrappers for Scriptaculous.

Widgets: 

http://gwt.components.googlepages.com/

 
Leave a comment

Posted by on April 12, 2009 in GWT

 

Tags: , ,

GWT- Masterview – Create master screens in GWT applications

GWT-Masterview library is an extension to Google Web Toolkit that provides widgets to filter, sort and paginate your data. It’s easy to use, it’s widgets are fast and it works right out of the box: you can display your objects with just 3-4 lines of code.

Initially I started to look for a replacement to the Displaytag library, which can’t be used in pure GWT applications. Some GWT-extending libraries provided tables, but these tables either were just wrappers of external JavaScript toolkits, or didn’t have filter or paging functionality. So I wrote my own small library, with API similar to the one that Displaytag has, and named it Masterview, because I find it simple to create master screens using it.

http://code.google.com/p/gwt-masterview/

Screenshot

 
1 Comment

Posted by on April 12, 2009 in GWT

 

Tags: , , , , , ,

cobogw – a widget library and GWT specific extensions

Home Page : http://code.google.com/p/cobogw/

Widget Library

The widget library contains the following widgets:
Note: The Button widget requires GWT 1.5.3.
  • Button – A CSS styled widget, using only CSS to create a shading effect: (demo).
  • ButtonBar – A panel to horizontally align the Button widgets.
  • RoundedPanel – A widget to create similar rounded corners as found in several google web applications (demo).
  • RoundedLinePanel – An extension to the RoundedPanel that adds a single pixel line around your rounded widget.
  • Rating – A widget that allows users to set ratings (demo).
  • Span/TextNode – Widgets to add span and a text node tags to other widgets without overhead of additional div tags (demo).
  • VerticalTabPanel – TabPanel that displays tabs stacked on the TabBar which is positioned on the left side of the tabPanel.
  • CSS – A helper class to help with CSS properties.
  • And some other simple widgets and helper classes…

GWT emulation of java.sql

Fix for GWT emulation support for the following standard classes:

  • java.sql.Date
  • java.sql.Time
  • java.sql.Timestap



 
Leave a comment

Posted by on April 12, 2009 in GWT

 

Tags: ,

Introducing GWT 1.6, App Engine for Java and GWT Eclipse plugin

Starting today, there is a simpler way to use the JavaTM language to develop and deploy world-scalable web applications. We are very happy to announce today:

  • Google Plugin for Eclipse that supports a productive integration of the two.
  • Eclipse plugin ( Supports GWT & APP Engine)

    Eclipse 3.3 (Europa)

    http://dl.google.com/eclipse/plugin/3.3

    Eclipse 3.4 (Ganymede)

    http://dl.google.com/eclipse/plugin/3.4

    Detailed installation instructions

    If you are new to Eclipse, the following detailed installation instructions should be useful.

    Google Plugin for Eclipse 3.3 (Europa).

    Google Plugin for Eclipse 3.4 (Ganymede).

    Screenshots

    GWT - Creating modules

    New GWT Module wizard

    Creating Entry point

    New Entry Point wizard

    Creating New HTML Pages

    New HTML wizard

     
    5 Comments

    Posted by on April 12, 2009 in GWT, GWT Frameworks

     

    Tags: ,

    Cloud Computing

    What is Cloud Computing?

    Cloud Computing is basically Internet based development and making use of computer technology. The Cloud here stands for the Internet and Computing basically refers to the Computer Technology to be used.

    It is a style of computing in which typically real time scalable resources are provided as a service over the Internet to users who need not have knowledge of, expertise in, or control over the technology infrastructure that supports them.

    This concept incorporates Software as a Service (SaaS), Web 2.0 and other recent well-known technology trends, in which the common theme is reliance on the Internet for satisfying the computing needs of the users.

    Companies in Cloud Computing

    The companies providing Cloud Computing services are: Amazon, Google, and Yahoo. And few of the companies who have adopted Cloud computing are: General Electric, L’Or’eal and Procter & Gamble.

    History of cloud Computing:

    The concept of Cloud Computing dates back to 1960 when John McCarthy opined that “computation may someday be organized as a public utility”. Then in early 1990s, this concept was put to commercial use in the form large ATM Networks.

    Amazon.com played a key role in the development of cloud computing by modernizing their data centers after the dot-com bubble and, having found that the new cloud architecture resulted in significant internal efficiency improvements, providing access to their systems by way of Amazon Web Services in 2002 on a utility computing basis.
    2007 saw increased activity, with Google, IBM, and a number of universities embarking on a large scale cloud computing research project, around the time the term started gaining popularity in the mainstream press. It was a hot topic by mid-2008 and numerous cloud computing events had been scheduled.
    In August 2008, Gartner observed that “organizations are switching from company-owned hardware and software assets to per-use service-based models” and that the “projected shift to cloud computing will result in dramatic growth in IT products in some areas and in significant reductions in other areas.”

    Key Characteristics:
    •    Customers minimize capital expenditure; this lowers barriers to entry, as infrastructure is owned by the provider and does not need to be purchased for one-time or infrequent intensive computing tasks. Services are typically available to or specifically targeted to retail consumers and small businesses.
    •    Device and location independence enable users to access systems regardless of their location or what device they are using, e.g., PC, mobile.
    •    Multi-tenancy enables sharing of resources and costs among a large pool of users, allowing for:

    • Centralization of infrastructure in areas with lower costs (such as real estate, electricity, etc.)
    • Peak-load capacity increases (users need not engineer for highest possible load-levels)
    • Utilization and efficiency improvements for systems that are often only 10-20% utilized.

    •    On-demand allocation and de-allocation of CPU, storage and network bandwidth
    •    Performance is monitored and consistent, but can suffer from insufficient bandwidth or high network load.
    •    Reliability improves through the use of multiple redundant sites, which makes it suitable for business continuity and disaster recovery. Nonetheless, most major cloud computing services have suffered outages and IT and business managers are able to do little when they are affected.
    •    Scalability meets changing user demands quickly without users having to engineer for peak loads.
    •    Security typically improves due to centralization of data, increased security-focused resources, etc., but raises concerns about loss of control over certain sensitive data. Security is often as good as or better than traditional systems, in part because providers are able to devote shared resources that most customers cannot afford. Providers typically log accesses, but accessing the audit logs themselves can be difficult or impossible.
    •    Sustainability comes about through improved resource utilization, more efficient systems, and carbon neutrality. Nonetheless, computers and associated infrastructure are major consumers of energy.

    Architecture:

    1

    Cloud architecture, the systems architecture of the software systems involved in the delivery of cloud computing, comprises hardware and software designed by a cloud architect who typically works for a cloud integrator. It typically involves multiple cloud components communicating with each other over application programming interfaces, usually web services.
    This closely resembles the Unix philosophy of having multiple programs doing one thing well and working together over universal interfaces. Complexity is controlled and the resulting systems are more manageable than their monolithic counterparts.
    Cloud architecture extends to the client, where web browsers and/or software applications access cloud applications.
    Cloud storage architecture is loosely coupled, where metadata operations are centralized enabling the data nodes to scale into the hundreds, each independently delivering data to applications or users.

    Components:

    2

    Application

    A cloud application leverages the Cloud in software architecture, often eliminating the need to install and run the application on the customer’s own computer, thus alleviating the burden of software maintenance, ongoing operation, and support. For example:
    •    Peer-to-peer / volunteer computing (Bittorrent, BOINC Projects, Skype)
    •    Web application (Facebook)
    •    Software as a service (Google Apps, Salesforce)
    •    Software plus services (Microsoft Online Services)

    Client

    A cloud client consists of computer hardware and/or computer software which relies on The Cloud for application delivery, or which is specifically designed for delivery of cloud services, and which in either case is essentially useless without it. For example:
    •    Mobile (Android, iPhone, Windows Mobile)
    •    Thin client (CherryPal, Zonbu, gOS-based systems)
    •    Thick client / Web browser (Google Chrome, Mozilla Firefox)

    Infrastructure

    Cloud infrastructure, such as Infrastructure as a service, is the delivery of computer infrastructure, typically a platform virtualization environment, as a service. For example:
    •    Full virtualization (GoGrid, Skytap)
    •    Grid computing (Sun Grid)
    •    Management (RightScale)
    •    Compute (Amazon Elastic Compute Cloud)

    Platform

    A cloud platform, such as Platform as a service, the delivery of a computing platform, and/or solution stack as a service facilitates deployment of applications without the cost and complexity of buying and managing the underlying hardware and software layers. For example:
    •    Web application frameworks

    • Ajax (Caspio)
    • Python Django (Google App Engine)
    • Ruby on Rails (Heroku)

    •    Web hosting (Mosso)
    •    Proprietary (Azure, Force.com)

    Service

    A cloud service, such as Web Service, is “software system[s] designed to support interoperable machine-to-machine interaction over a network” which may be accessed by other cloud computing components, software, e.g., Software plus services, or end users directly. For example:
    •    Identity (OAuth, OpenID)
    •    Integration (Amazon Simple Queue Service)
    •    Payments (Amazon Flexible Payments Service, Google Checkout, PayPal)
    •    Mapping (Google Maps, Yahoo! Maps)
    •    Search (Alexa, Google Custom Search, Yahoo! BOSS)
    •    Others (Amazon Mechanical Turk)

    Storage

    Cloud storage involves the delivery of data storage as a service, including database-like services, often billed on a utility computing basis, e.g., per gigabyte per month. For example:
    •    Database (Amazon SimpleDB, Google App Engine’s BigTable datastore)
    •    Network attached storage (MobileMe iDisk, CTERA Cloud Attached Storage, Nirvanix CloudNAS, IBM Scale out File Servicessofs )
    •    Synchronisation (Live Mesh Live Desktop component, MobileMe push functions)
    •    Web service (Amazon Simple Storage Service, Nirvanix SDN)

    Roles:
    Provider

    A cloud computing provider or cloud computing service provider owns and operates live cloud computing systems to deliver service to third parties. Usually this requires significant resources and expertise in building and managing next-generation data centers. Some organisations realise a subset of the benefits of cloud computing by becoming “internal” cloud providers and servicing themselves, although they do not benefit from the same economies of scale and still have to engineer for peak loads. The barrier to entry is also significantly higher with capital expenditure required and billing and management creates some overhead. Nonetheless, significant operational efficiency and agility advantages can be realised, even by small organisations, and server consolidation and virtualization rollouts are already well underway. Amazon.com was the first such provider, modernising its data centers which, like most computer networks, were using as little as 10% of its capacity at any one time just to leave room for occasional spikes. This allowed small, fast-moving groups to add new features faster and easier, and they went on to open it up to outsiders as Amazon Web Services in 2002 on a utility computing basis.

    User

    A user is a consumer of cloud computing. The privacy of users in cloud computing has become of increasing concern. The rights of users are also an issue, which is being addressed via a community effort to create a bill of rights.

    Vendor

    A vendor sells products and services that facilitate the delivery, adoption and use of cloud computing. For example:
    •    Computer hardware (Dell, HP, IBM, Sun Microsystems)

    • Storage  (3PAR, EMC, MogileFS, CTERA Networks, IBM)
    • Infrastructure (Solace Systems, Layer 7 Technologies, F5 Networks)

    •    Computer software (3tera, GigaSpaces, Gooroo Software, Hadoop, IBM, RightScale, Terracotta), SOASTA

    • Operating systems (Solaris; AIX, Linux including Red Hat)
    • Platform virtualization (Citrix, Microsoft, VMware, Sun xVM, IBM)

    Types of Cloud Computing:
    1. SaaS

    This type of cloud computing delivers a single application through the browser to thousands of customers using a multitenant architecture. On the customer side, it means no upfront investment in servers or software licensing; on the provider side, with just one app to maintain, costs are low compared to conventional hosting. Salesforce.com is by far the best-known example among enterprise applications, but SaaS is also common for HR apps and has even worked its way up the food chain to ERP, with players such as Workday. And who could have predicted the sudden rise of SaaS “desktop” applications, such as Google Apps and Zoho Office?

    2. Utility computing

    The idea is not new, but this form of cloud computing is getting new life from Amazon.com, Sun, IBM, and others who now offer storage and virtual servers that IT can access on demand. Early enterprise adopters mainly use utility computing for supplemental, non-mission-critical needs, but one day, they may replace parts of the datacenter. Other providers offer solutions that help IT create virtual datacenters from commodity servers, such as 3Tera’s AppLogic and Cohesive Flexible Technologies’ Elastic Server on Demand. Liquid Computing’s LiquidQ offers similar capabilities, enabling IT to stitch together memory, I/O, storage, and computational capacity as a virtualized resource pool available over the network.

    3. Web services in the cloud

    Closely related to SaaS, Web service providers offer APIs that enable developers to exploit functionality over the Internet, rather than delivering full-blown applications. They range from providers offering discrete business services — such as Strike Iron and Xignite — to the full range of APIs offered by Google Maps, ADP payroll processing, the U.S. Postal Service, Bloomberg, and even conventional credit card processing services.

    4. Platform as a service

    Another SaaS variation, this form of cloud computing delivers development environments as a service. You build your own applications that run on the provider’s infrastructure and are delivered to your users via the Internet from the provider’s servers. Like Legos, these services are constrained by the vendor’s design and capabilities, so you don’t get complete freedom, but you do get predictability and pre-integration. Prime examples include Salesforce.com’s Force.com, Coghead and the new Google App Engine. For extremely lightweight development, cloud-based mashup platforms abound, such as Yahoo Pipes or Dapper.net.

    5. MSP (managed service providers)

    One of the oldest forms of cloud computing, a managed service is basically an application exposed to IT rather than to end-users, such as a virus scanning service for e-mail or an application monitoring service (which Mercury, among others, provides). Managed security services delivered by SecureWorks, IBM, and Verizon fall into this category, as do such cloud-based anti-spam services as Postini, recently acquired by Google. Other offerings include desktop management services, such as those offered by CenterBeam or Everdream.

    6. Service commerce platforms

    A hybrid of SaaS and MSP, this cloud computing service offers a service hub that users interact with. They’re most common in trading environments, such as expense management systems that allow users to order travel or secretarial services from a common platform that then coordinates the service delivery and pricing within the specifications set by the user. Think of it as an automated service bureau. Well-known examples include Rearden Commerce and Ariba.

    7. Internet integration

    The integration of cloud-based services is in its early days. OpSource, which mainly concerns itself with serving SaaS providers, recently introduced the OpSource Services Bus, which employs in-the-cloud integration technology from a little startup called Boomi. SaaS provider Workday recently acquired another player in this space, CapeClear, an ESB (enterprise service bus) provider that was edging toward b-to-b integration. Way ahead of its time, Grand Central — which wanted to be a universal “bus in the cloud” to connect SaaS providers and provide integrated solutions to customers — flamed out in 2005.

    Risk Mitigation:

    Corporations or end-users wishing to avoid losing or not being able to access their data should research vendors’ policies on data security before using vendor services. The technology analyst and consulting firm, Gartner, lists seven security issues which one should discuss with a cloud-computing vendor:
    1.    Privileged user access—inquire about who has specialized access to data and about the hiring and management of such administrators
    2.    Regulatory compliance—make sure a vendor is willing to undergo external audits and/or security certifications
    3.    Data location—ask if a provider allows for any control over the location of data
    4.    Data segregation—make sure that encryption is available at all stages and that these “encryption schemes were designed and tested by experienced professionals”
    5.    Recovery—find out what will happen to data in the case of a disaster; do they offer complete restoration and, if so, how long that would take
    6.    Investigative Support—inquire as to whether a vendor has the ability to investigate any inappropriate or illegal activity
    7.    Long-term viability—ask what will happen to data if the company goes out of business; how will data be returned and in what format
    In practice, one can best determine data-recovery capabilities by experiment: asking to get back old data, seeing how long it takes, and verifying that the checksums match the original data. Determining data security is harder. A tactic not covered by Gartner is to encrypt the data yourself. If you encrypt the data using a trusted algorithm, then regardless of the service provider’s security and encryption policies, the data will only be accessible with the decryption keys. This leads to a follow-on problem: managing private keys in a pay-on-demand computing infrastructure.

    Standards:

    Cloud standards, a number of existing, typically lightweight, open standards, have facilitated the growth of cloud computing, including:
    •    Application

    • Communications (HTTP, XMPP)
    • Security (OAuth, OpenID, SSL/TLS)
    • Syndication (Atom)

    •    Client

    • Browsers (AJAX)
    • Offline (HTML 5)

    •    Implementations

    • Virtualization (OVF)

    •    Platform

    • Solution stacks (LAMP, Space-based architecture)

    •    Service

    • Data (XML, JSON)
    • Web Services (REST)

    •    Storage

    References:

    http://en.wikipedia.org/wiki/Cloud_computing
    http://www.infoworld.com/article/08/04/07/15FE-cloud-computing-reality_1.html

     
    2 Comments

    Posted by on April 2, 2009 in Web

     

    Tags:

     
    Follow

    Get every new post delivered to your Inbox.

    %d bloggers like this: