Saturday, December 17, 2011

[Gd] Stable Channel Update for Chromebooks

| More

Chrome Releases: Stable Channel Update for Chromebooks


The Google Chrome team is happy to announce the release of Chrome 16 on the Stable Channel for Chromebooks (Acer AC700, Samsung Series 5, and Cr-48). 

Chrome version 16.0.912.66 (Platform version: 1193.117)

Release highlights:
  • Read about improvements to Chrome over on the Google Chome blog
  • Support for .zip files
  • Onscreen indication when caps lock is enabled
  • Warning messages regarding low disk space
  • Telegu and Kannada languages now supported
  • Updated Pepper Flash version
  • Crash fixes
  • Security updates
If you find new issues, please let us know by visiting our help site or filing a bug. Interested in switching to the Beta channel? Find out how. You can submit feedback using ‘Report an issue’ under the wrench menu.

Danielle Drew
Google Chrome
URL: http://googlechromereleases.blogspot.com/2011/12/stable-channel-update-for-chromebooks.html

[Gd] Dev Channel Update for Chromebooks

| More

Chrome Releases: Dev Channel Update for Chromebooks


The Dev channel has been updated to 17.0.963.10 (Platform version: 1412.24) for Chromebooks (Acer AC700, Samsung Series 5 , and Cr-48).

Highlights:
  • Pepper flash: release 11.1.31.205
  • Stability improvements
  • File Browser improvements
  • New icon for guest session
If you find new issues, please let us know by visiting our help site or filing a bug. You can also submit feedback using "Report an issue" under the wrench icon. Interested in switching to the Dev channel? Find out how.

Orit Mazor
Google Chrome
URL: http://googlechromereleases.blogspot.com/2011/12/dev-channel-update-for-chromebooks_16.html

Friday, December 16, 2011

[Gd] Fridaygram: universal terms, distant space, watch where you walk

| More

The official Google Code blog: Fridaygram: universal terms, distant space, watch where you walk

Author Photo
By Scott Knaster, Google Code Blog Editor

Earlier this week, we launched a single Terms of Service for most of our APIs. You might know the Terms of Service (ToS) as those legal documents you click through quickly when you start using a new product, but they’re vitally important, as they specify exactly what you and we can expect from each other when you use our APIs. (Internally, we refer to the new terms as uToS [universal terms of service], pronounced "you toss".)

The project began some time ago as a general developer ToS cleanup. At the time, we looked at the Google Terms of Service shared across many consumer products, and figured developers deserved equal consideration. In reviewing the developer ToS documents, it became clear that there was plenty of language in common among various products. And this week, the new Terms launched, covering most APIs, with more to come in time. Of the APIs that are included, a few have additional terms, but these tend to be brief. And things overall are much simpler and cleaner than before.

This project is an example of something that affects every Google developer and Google too, and yet it’s not really a technical topic. This ToS simplification was no minor project: it was over two years in the making. Getting to simplify an important set of documents by removing over 125,000 words of text is a wonderful thing.

Speaking of universal things, the incredible Voyager 1 spacecraft is now about 18 billion kilometers from the sun and is nearing the end of our solar system. Voyager now inhabits a part of space between planets and other stars that has an intense magnetic field, among other unusual properties, and we’ll learn more about the place from Voyager itself. One scientist says that Voyager is now in a "stagnation region", and I think we all know what that feels like.

And finally, if you’re planning your holiday vacation over the weekend, you might want to see what happens if you ask Google Maps for walking directions from Rivendell to Mordor.


Fridaygram posts are just for fun, and sometimes even legal stuff can be fun. Fridaygrams are designed for your Friday afternoon and weekend enjoyment. Each Fridaygram item must pass only one test: it has to be interesting to us nerds.

URL: http://googlecode.blogspot.com/2011/12/fridaygram-universal-terms-distant.html

[Gd] Introducing AdSense Management Services in Google Apps Script

| More

The official Google Code blog: Introducing AdSense Management Services in Google Apps Script

Author Photo
By Silvano Luciani, Developer Programs Engineer, AdSense API Team

Starting today, the AdSense Management API is available as part of AdSense Services in Google Apps Script. This means that you’ll be able to automate your AdSense reporting across Google products using a JavaScript cloud scripting language to do things like:
  • Create AdSense performance reports for your AdSense accounts in a Google spreadsheet.
  • Create a chart based on your AdSense reporting data and display it in a Google spreadsheet.
  • Embed your scripts in a Google Sites page, for instance to import a chart.
  • Use triggers to schedule the execution of your scripts, for instance to periodically update the chart imported in the Google Sites page.
spreadsheet with embedded chart

You can start using the service by checking out the reference documentation, which also contains some sample scripts, and by reading this tutorial, which implements the use cases mentioned above.


Based in London, Silvano Luciani joined Google in 2011 to make the AdSense API developers happier people. Before that, he has worked in Finland, Italy, Spain and the UK, writing web based configuration management tools for ISPs, social networks, web based training materials, e-commerce apps and more. He has recently discovered that he loves charts, and has finally started to play the drums in the London’s office music room. If you can call what he does "playing the drums".

Posted by Scott Knaster, Editor






URL: http://googlecode.blogspot.com/2011/12/introducing-adsense-management-services.html

[Gd] Rich Snippets Instructional Videos

| More

Official Google Webmaster Central Blog: Rich Snippets Instructional Videos

Webmaster level: All

When users come to Google, they have a pretty good idea of what they’re looking for, but they need help deciding which result might have the information that best suits their needs. So, the challenge for Google is to make it very clear to our users what content exists on a page in both a useful and concise manner. That’s why we have rich snippets.


Essentially, rich snippets provide you with the ability to help Google highlight aspects of your page. Whether your site contains information about products, recipes, events or apps, a few simple additions to your markup can result in more engagement with your content -- and potentially more traffic to your site.

To help you get started or fine tune your rich snippets, we’ve put together a series of tutorial videos for webmasters of all experience levels. These videos provide guidance as you mark up your site so that Google is better able to understand your content. We can use that content to power the rich snippets we display for your pages. Check out the videos below to get started:



For more information on how to use rich snippets markup for your site, visit our Help Center.

Posted by , Product Manager
URL: http://googlewebmastercentral.blogspot.com/2011/12/rich-snippets-instructional-videos.html

[Gd] More administrative APIs now available to all Google Apps editions

| More

Google Apps Developer Blog: More administrative APIs now available to all Google Apps editions

Google Apps domain administrators have access to a number of APIs to automate their management activities or to integrate with third-party applications, including the Provisioning API to manage user accounts and groups, the Admin Audit API, Admin Settings API, and the Reporting API.

These APIs were only available in Google Apps for Business, Education and ISP editions but many administrators of the free version of Google Apps also requested access to them. I’m glad to say that we listened to your feedback and, starting today, we made the these APIs available to all Google Apps editions.

Please check the documentation as the starting point to explore the possibilities of the APIs and post on our forum if you have questions or comments.

Claudio Cherubino   profile | twitter | blog

Claudio is a Developer Programs Engineer working on Google Apps APIs and the Google Apps Marketplace. Prior to Google, he worked as software developer, technology evangelist, community manager, consultant, technical translator and has contributed to many open-source projects, including MySQL, PHP, Wordpress, Songbird and Project Voldemort.

URL: http://googleappsdeveloper.blogspot.com/2011/12/more-administrative-apis-now-available.html

[Gd] Important Changes to Google Apps Marketplace Billing Policies

| More

Google Apps Developer Blog: Important Changes to Google Apps Marketplace Billing Policies

When we launched the Google Apps Marketplace in March last year, one of our goals was to make it easy for developers to build, integrate, and sell their apps to Google Apps users. Since then, each vendor in the Google Apps Marketplace has handled their own billing and keeps the revenue they generate. Today, we are making that the official Marketplace policy moving forward: Google will not require vendors to adopt a Google billing API or share any portion of their revenue with us. This will keep more revenue in developers’ pockets, and brings the Google Apps Marketplace policy in line with the Chrome Web Store.

So it’s business as usual -- developers can continue to “bring their own billing” to the Marketplace. Developers retain full control over application pricing and billing, and continue to keep all revenue from Google Apps Marketplace customers.

If you’re in need of a billing solution, we encourage you to try Google Checkout and In-App Payments. Or use one of the many other commercial billing and subscription services available online.

Please join us at our next Google Apps Developer Office Hours on Google+ Hangouts on December 19th at 12 PM PST time to discuss the Google Apps Marketplace and any questions you may have about these changes.


Scott McMullan   profile | twitter

Scott is a Product Manager at Google, where he runs the Apps Marketplace and is extremely lucky to be able to work with amazing developers and companies revolutionizing the way businesses use the web.

URL: http://googleappsdeveloper.blogspot.com/2011/12/important-changes-to-google-apps.html

[Gd] Introducing Android Training

| More

Android Developers Blog: Introducing Android Training

[This post is by Reto Meier, Android Developer Relations Tech Lead. — Tim Bray]

Today I’m thrilled to announce the beta launch of Android Training — a collection of classes that we hope will help you to build better Android apps.

From designing effective navigation, to managing audio playback, to optimizing battery life, these classes are designed to demonstrate best practices for solving common Android development problems.

Each class explains the steps required to solve a problem, or implement a feature, with plenty of code snippets and sample code for you to use within your own apps.

We’re starting small and this is just the beginning for Android Training. Over the coming months we will be increasing the number of classes available, as well as introducing over-arching courses and sample apps to further help your development experience.

Helping developers build great apps is what the Android Developer Relations team is all about, so we’re excited to see how you use these classes to make your apps even better.

We’d love to know what you think of these classes, and what classes you’d like to see next.

URL: http://android-developers.blogspot.com/2011/12/introducing-android-training.html

[Gd] More Android Games that Play Nice

| More

Android Developers Blog: More Android Games that Play Nice

[This post is by Dan Galpin, who lives the Android Games lifestyle every day. — Tim Bray]

Making a game on Android is easy. Making a great game for a mobile, multitasking, often multi-core, multi-purpose system like Android is trickier. Even the best developers frequently make mistakes in the way they interact with the Android system and with other applications — mistakes that don’t affect the quality of gameplay, but which affect the quality of the user’s experience in other ways.

A truly great Android game knows how to play nice: how to fit seamlessly into the system of apps, services, and UI features that run on Android devices. In this multi-part series of posts, Android Developer Relations engineers who specialize in games explain what it takes to make your game play nice.

II: Navigation and Lifecycle

Android users get used to using the back key. We expect the volume keys to work in some intuitive fashion. We expect that the home key behaves in a manner consistent with the Android navigation paradigm. Sometimes we even expect the menu key to do something.

1. Problem: There’s no place like [Home]

I’m playing [insert favorite game here] and I accidentally hit the [Home] key or the [Back] key. This is probably happening because I’m furiously using the touchscreen to actually play the game. Whether I’ve been cutting ropes, controlling aircraft, cleaving fruit, or flinging birds, I’m almost certainly angry if I’ve suddenly lost all of my game progress.

What went wrong?

Lots of developers assume that pressing the Home key exits a game. Perhaps this is because on some mobile devices the Home key is a somewhat-difficult-to-press physical button. Depending on the device and Android release, it might be a physical, capacitive, or soft button. This means that it is relatively easy to hit accidentally. Having progress lost by such an event as an incoming call is even worse.

How to avoid Angry Users

  1. Save as much about the status of the game into the Bundle in onSaveInstanceState() as you can. This helper function will get called whenever your application receives an onPause() callback. Note that you can save byte arrays into that bundle, so it can easily be used for raw data.

  2. If your game takes lots of native system resources, consider dumping large textures (or all textures and geometry) during onPause() or onStop(). (GLSurfaceView will do this automatically unless you tell it not to — at least you can tell it not to do so starting in API level 11). This will help your title continue to reside in memory, which will typically speed task-switching back to your game for very large titles that might otherwise be swapped out of memory, but may slow things down for smaller titles that can more efficiently multitask if they don’t bother to do this.

  3. When your game resumes, restore the state from the bundle in onRestoreInstanceState(). If there is any sort of time-consuming loading that has to be done, make sure that you notify the user of what is happening to give them the best possible experience.

  4. Test thoroughly!

2. Problem: [Back] I say!

I’m in the middle of playing a game and I hit the back key. One of several bad things can happen here:

  1. The game exits immediately, losing all state and leading to Angry User Syndrome. (see Problem 1).

  2. The game does nothing.

What went wrong?

We already know what is wrong with scenario 1. It’s essentially a data loss scenario, and it’s worse than pigs stealing your eggs. What is wrong with scenario 2?

The [Back] key is an essential part of the Android navigation paradigm. If the back key doesn’t return to the previous screen in the activity stack (or in the game hierarchy) there better be a very good reason, such as an active document with no capability to save a draft.

What to do about it

If the user is in the middle of gameplay It is customary to display some sort of dialog asking the user if they intended the action:

“Are you sure you wish to exit now? That monster looks hungry.”

In an extreme action game, you might also wish to do something similar to what Replica Island (RI) did. RI assumed that any [Back] keypress that happened within 200ms of another touch event was invalid in order to make it a bit more challenging to accidentally press the key.

At the Main Menu of the game, you can decide whether it makes sense to prompt the user or not. If your game has very long load times, you might want to prompt the user.

3. Problem: Quiet [Down]!

There’s nothing worse than wanting to settle down for a good session of [insert favorite game here] in some sort of public place with your volume turned up. Suddenly everyone has learned that you prefer pummelling produce to predicting present progressions and that’s practically profane in your profession.

What went wrong?

By default, volume keys in most Android devices will control the ringer volume, and your application must pass the volume keys through to the super class so this continues to work.

What to do about it

In order to make these keys control the music volume (which is the channel that your game will be using), you need to call setVolumeControlStream(AudioManager.STREAM_MUSIC). As stated previously, all you need to do is pass these keys through to the framework and you’ll get control of the audio in the standard and proper way. Do it as early as possible so a user can start changing the volume far before you begin playing anything.

URL: http://android-developers.blogspot.com/2011/12/more-android-games-that-play-nice.html

[Gd] Dev Channel Update

| More

Chrome Releases: Dev Channel Update


The Dev channel has been updated to 17.0.963.12 for Windows, Mac, and Linux.  This release contains stability and feature improvements. Full details about what changes are in this release are available in the SVN revision log.  Interested in switching to a different release channel?  Find out how.  If you find a new issue, please let us know by filing a bug.

Jason Kersey
Google Chrome
URL: http://googlechromereleases.blogspot.com/2011/12/dev-channel-update_15.html

[Gd] Mobile Web performance challenges and strategies

| More

The official Google Code blog: Mobile Web performance challenges and strategies

Author Photo
By Ramki Krishnan, Technical Program Manager

Consumers are increasingly relying on their mobile devices to access the Web, thrusting mobile web performance into the limelight. Mobile users expect web pages to display on their mobile devices as fast as or faster than on their desktops.

As part of Google’s effort to Make The Web Faster, we invited Guy Podjarny, CTO of Blaze.io, to talk about some of the major performance concerns in the mobile web and ways to alleviate these issues. Guy’s talk focused on Front-End Optimization and highlighted 3 areas: mobile network, software, and hardware. Each of these impacts performance in myriad ways. The full video is available here, and runs just under an hour. If you don’t have time to watch this enlightening talk, this post discusses some key takeaways.

Mobile networks have high latency, and reducing the number of requests and the size of downloads are well-known optimization strategies. Guy also mentions using on-demand image displays such as loading above-the-fold images by default and other images only as they scroll into view. To handle network reliability, he recommends non-blocking requests eliminating single points of failure, with a selective aggregation of files needed for content display. Periodic pinging of the cell tower by the client can also reduce latency associated with dropped connections, but judicious timeouts and battery drain on the mobile device need to be factored in.

Modern mobile browsers are built mobile-friendly, and they can be helped further by exploiting localStorage to store CSS and JavaScript files. Pipelining multiple requests on a connection is an option, but developers need to work around head-of-line blocking by using techniques such as splitting dynamic and static resource requests on different domains.

Mobile hardware CPUs are weaker than their desktop counterparts. Guy points out the need to minimize JavaScript when designing mobile-friendly web pages and avoid reflows or defer JavaScript until after page loads. Clever image rendering techniques such as automatically resizing images to devices and loading full resolution only on zoom can also help.

Guy’s presentation makes clear that mobile web optimizations need to mitigate latencies introduced by mobile networks, software, and hardware. Rapidly changing OSes and browsers add to the challenges facing publishers. New and evolved tools and technologies will help ensure an optimal web browsing experience for mobile users.


Ramki Krishnan works at Google on the "Make The Web Faster" team. When not at work, he dreams of being a tennis pro, a humorist, and a rock drummer all rolled into one.

Posted by Scott Knaster, Editor

URL: http://googlecode.blogspot.com/2011/12/mobile-web-performance-challenges-and.html

[Gd] In-App Payments expands its borders

| More

The official Google Code blog: In-App Payments expands its borders


By Pali Bhat, Group Product Manager

Cross-posted on the Google Commerce Blog and Chromium Blog

Since Google In-App Payments launched in July for developers in the United States, we’ve received great feedback on how easy it is to integrate as well as how simple it is for consumers to use. While the API has been off to a strong start, there’s been a growing demand for availability outside of the United States.

So starting today, we are opening developer enrollment for Google In-App Payments to 17 additional countries. In addition to the United States, developers from Australia, Austria, Belgium, Canada, Denmark, Finland, France, Germany, Ireland, Italy, Japan, the Netherlands, Norway, Portugal, Spain, Sweden, and the United Kingdom can now use the Google In-App Payments API to incorporate an in-context payment experience into applications on the Chrome Web Store and their own sites.


Developers using In-App Payments are seeing strong conversions and revenue streams thanks to these key features:
  • Ease of use: the short payment process for consumers takes place right in the developer’s app or site.
  • Large existing user base: there are millions of Google Wallet online users in over 140 countries.
  • Low fees: developers pay just 5% on all transactions.
You can get started accepting payments in your web apps by following the tutorial and get answers to any questions in the forum. We look forward to expanding to even more countries in the future, as well as continuously working to improve the Google In-App Payments experience.


Posted by Scott Knaster, Editor
URL: http://googlecode.blogspot.com/2011/12/in-app-payments-expands-its-borders.html

[Gd] In-App Payments Expands its Borders

| More

Chromium Blog: In-App Payments Expands its Borders

(Cross-posted on the Official Google Code and Commerce Blogs)

Since Google In-App Payments launched in July for developers in the United States, we’ve received great feedback on how easy it is to integrate as well as how simple it is for consumers to use. While the API has been off to a strong start, there’s been a growing demand for availability outside of the United States.

So starting today, we are opening developer enrollment for Google In-App Payments to 17 additional countries. In addition to the United States, developers from Australia, Austria, Belgium, Canada, Denmark, Finland, France, Germany, Ireland, Italy, Japan, the Netherlands, Norway, Portugal, Spain, Sweden, and the United Kingdom can now use the Google In-App Payments API to incorporate an in-context payment experience into applications on the Chrome Web Store and their own sites.
Developers using In-App Payments are seeing strong conversions and revenue streams thanks to these key features:
  • Ease of use: the short payment process for consumers takes place right in the developer’s app or site.
  • Large existing user base: there are millions of Google Wallet online users in over 140 countries.
  • Low fees: developers pay just 5% on all transactions.
You can get started accepting payments in your web apps by following the tutorial and get answers to any questions in the forum. We look forward to expanding to even more countries in the future, as well as continuously working to improve the Google In-App Payments experience.

Posted by Pali Bhat, Product Manager, Google Commerce Team
URL: http://blog.chromium.org/2011/12/in-app-payments-expands-its-borders.html

Thursday, December 15, 2011

[Gd] Introducing smartphone Googlebot-Mobile

| More

Official Google Webmaster Central Blog: Introducing smartphone Googlebot-Mobile

Webmaster level: All

With the number of smartphone users rapidly rising, we’re seeing more and more websites providing content specifically designed to be browsed on smartphones. Today we are happy to announce that Googlebot-Mobile now crawls with a smartphone user-agent in addition to its previous feature phone user-agents. This is to increase our coverage of smartphone content and to provide a better search experience for smartphone users.

Here are the main user-agent strings that Googlebot-Mobile now uses:

  • Feature phones Googlebot-Mobile:

    • SAMSUNG-SGH-E250/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)
    • DoCoMo/2.0 N905i(c100;TB;W24H16) (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)
  • Smartphone Googlebot-Mobile:

    • Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B117 Safari/6531.22.7 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)

The content crawled by smartphone Googlebot-Mobile will be used primarily to improve the user experience on mobile search. For example, the new crawler may discover content specifically optimized to be browsed on smartphones as well as smartphone-specific redirects.

One new feature we’re also launching that uses these signals is Skip Redirect for Smartphone-Optimized Pages. When we discover a URL in our search results that redirects smartphone users to another URL serving smartphone-optimized content, we change the link target shown in the search results to point directly to the final destination URL. This removes the extra latency the redirect introduces leading to a saving of 0.5-1 seconds on average when visiting landing page for such search results.

Since all Googlebot-Mobile user-agents identify themselves as a specific kind of mobile, please treat each Googlebot-Mobile request as you would a human user with the same phone user-agent. This, and other guidelines are described in our previous blog post and they still apply, except for those referring to smartphones which we are updating today. If your site has treated Googlebot-Mobile specially based on the fact that it only crawls with feature phone user-agents, we strongly recommend reviewing this policy and serving the appropriate content based on the Googlebot-Mobile’s user-agent, so that both your feature phone and smartphone content will be indexed properly.

If you have more questions, please ask on our Webmaster Help forums.

Posted by Yoshikiyo Kato, Software Engineer

URL: http://googlewebmastercentral.blogspot.com/2011/12/introducing-smartphone-googlebot-mobile.html

[Gd] Automate with the Google Affiliate Network API

| More

The official Google Code blog: Automate with the Google Affiliate Network API

Author Photo
By Ali Pasha, Google Affiliate Network Product Manager

Google Affiliate Network is a free program that makes it easy for website publishers to connect with quality advertisers and get rewarded for driving conversions.

Today we’re making it even easier for affiliates and advertisers to work with Google Affiliate Network by launching the Google Affiliate Network API, which enables publishers and advertisers to automate various tasks related to Google Affiliate Network.

For more information, please see the Google Affiliate Network blog.


Ali Pasha has been a Google Product Manager for several years and now works on Google Affiliate Network. Ali has also made key contributions to Android App Inventor, Google Code, Google Code Search, and Google AJAX APIs.

Posted by Scott Knaster, Editor

URL: http://googlecode.blogspot.com/2011/12/automate-with-google-affiliate-network.html

[Gd] Calendar API v3, 2-legged OAuth & Java

| More

Google Apps Developer Blog: Calendar API v3, 2-legged OAuth & Java

2-Legged OAuth is a useful authorization mechanism for apps that need to manipulate calendars on behalf of users in an organization. Both developers building apps for the Google Apps Marketplace and domain administrators writing tools for their own domains can benefit. Let’s take a look at how to do this with the new Calendar API v3 and Java client library 1.6.0 beta.

To get started as a domain administrator, you need to explicitly enable the new Google Calendar API scopes under Google Apps cPanel > Advanced tools > Manage your OAuth access > Manage third party OAuth Client access:

The scope to include is:


https://www.googleapis.com/auth/calendar

To do the same for a Marketplace app, include the scope in your application's manifest.

Calendar API v3 also needs an API access key that can be retrieved in the APIs Console. Once these requirements are taken care of, a new Calendar service object can be initialized:


public Calendar buildService() {
HttpTransport transport = AndroidHttp.newCompatibleTransport();
JacksonFactory jsonFactory = new JacksonFactory();

// The 2-LO authorization section
OAuthHmacSigner signer = new OAuthHmacSigner();
signer.clientSharedSecret = "<CONSUMER_SECRET>";

final OAuthParameters oauthParameters = new OAuthParameters();
oauthParameters.version = "1";
oauthParameters.consumerKey = "<CONSUMER_KEY>";
oauthParameters.signer = signer;

Calendar service = Calendar.builder(transport, jsonFactory)
.setApplicationName("<YOUR_APPLICATION_NAME>")
.setJsonHttpRequestInitializer(new JsonHttpRequestInitializer() {
@Override
public void initialize(JsonHttpRequest request) {
CalendarRequest calendarRequest = (CalendarRequest) request;
calendarRequest.setKey("<YOUR_API_KEY>");
}
}).setHttpRequestInitializer(oauthParameters).build();
return service;
}

Once the Calendar service object is properly initialized, it can be used to send authorized requests to the API. To access calendar data for a particular user, set the query parameter xoauth_requestor_id to a user’s email address:


public void printEvents() {
Calendar service = buildService();

// Add the xoauth_requestor_id query parameter to let the API know
// on behalf of which user the request is being made.
ArrayMap customKeys = new ArrayMap();
customKeys.add("xoauth_requestor_id", "<USER_EMAIL_ADDRESS>");

List listEventsOperation = service.events().list("primary");
listEventsOperation.setUnknownKeys(customKeys);
Events events = listEventsOperation.execute();

for (Event event : events.getItems()) {
System.out.println("Event: " + event.getSummary());
}
}

Additionally, if the same service will be used to send requests on behalf of the same user, the xoauth_requestor_id query parameter can be set in the initializer:


// …
Calendar service = Calendar.builder(transport, jsonFactory)
.setApplicationName("<YOUR_APPLICATION_NAME>")
.setJsonHttpRequestInitializer(new JsonHttpRequestInitializer() {
@Override
public void initialize(JsonHttpRequest request) {
ArrayMap customKeys = new ArrayMap();
customKeys.add("xoauth_requestor_id", "<USER_EMAIL_ADDRESS>");
calendarRequest.setKey("<YOUR_API_KEY>");
calendarRequest.setUnknownKeys(customKeys);
}
}).setHttpRequestInitializer(oauthParameters).build();
// ...

We hope you’ll try out 2-Legged OAuth and let us know what you think in the Google Calendar API forum.


Alain Vongsouvanh   profile

Alain is a Developer Programs Engineer for Google Apps with a focus on Google Calendar and Google Contacts. Before Google, he graduated with his Masters in Computer Science from EPITA, France.

URL: http://googleappsdeveloper.blogspot.com/2011/12/calendar-api-v3-2-legged-oauth-java.html

[Gd] Documents List API Best Practices: Typed and untyped resource IDs

| More

Google Apps Developer Blog: Documents List API Best Practices: Typed and untyped resource IDs

With the Google Documents List API, there are two ways to identify resources: typed and untyped resource identifiers. Typed resource identifiers prefix a string of characters with the resource type. Untyped resource identifiers are similar, but do not have a type prefix. For example:

  • a typed resource identifier is drawing:0Aj01z0xcb9.
  • an untyped resource identifier is 0Aj01z0xcb9.

Client applications often need one type of identifier or the other. For instance, some applications use untyped resource IDs to access spreadsheets using the Google Spreadsheets API. Automatically generated API URLs in the Documents List API use typed or untyped resource IDs in certain situations.

Having two types of resource IDs is something that we will resolve in a future version of the API. Meanwhile, we strongly recommend that instead of using resource identifiers, clients always use URLs provided in feeds and entries of the Google Documents List API. The only time that manual URL modification is required is to add special parameters to a URL given by the API, for instance to search for a resource by title.

For example, the API issues self links along with each entry. To request an entry again, simply GET the self link of the entry. We recommend against constructing the link manually, by inserting the entry’s resource ID into the link.

Common links on entries include:

  • self: Link at which to fetch a resource again.
  • edit: Link at which to PUT metadata changes for a resource.
  • parent: Links to the set of collections that may contain a given resource.
  • next: Link to the next page of results from the API.
  • batch: Link to POST batch operations.
  • resumable-create-media: Link at which to upload resources to the API or straight into a collection.
  • resumable-edit-media: Link at which to perform resumable upload to modify a resource’s metadata and content.
  • thumbnail: Link at which to get a thumbnail of a resource.
  • content: Link at which to download (export) a resource.
  • alternate: Link to which to redirect a user in a web browser to view a resource in Google Docs.
  • accessControlList: Link to a resource’s ACL feed.
  • revisions: Link to a resource’s revisions feed.

Accessing these links from a client library is simple. For instance, to retrieve the alternate link in Python, one uses:

resource = client.GetAllResources()[0]
print resource.GetHtmlLink()

More information on these links is available in the documentation. For any questions, please post in the forum.


Vic Fryzel   profile | twitter | blog

Vic is a Google engineer and open source software developer in the United States. His interests are generally in the artificial intelligence domain, specifically regarding neural networks and machine learning. He's an amateur robotics and embedded systems engineer, and also maintains a significant interest in the security of software systems and engineering processes behind large software projects.
URL: http://googleappsdeveloper.blogspot.com/2011/12/documents-list-api-best-practices-typed.html

[Gd] Enhanced object properties in the PHP and Ruby libraries

| More

Google Apps Developer Blog: Enhanced object properties in the PHP and Ruby libraries

The newest versions of the Google Calendar API and Google Tasks API use JSON as their data format. In languages like PHP and Ruby, it’s simple to turn a JSON object into something that can be easily read and modified, like an associative array or hash.

While creating and modifying hashes is straightforward, sometimes you want a true object and the benefits that come with using one, such as type checking or introspection. To enable this, the PHP and Ruby client libraries can now provide objects as the results of API calls, in addition to supporting hash responses.

Ruby gets this for free with the latest version of the gem. For PHP, you have to enable support in the client instance:
$apiClient = new apiClient();
$apiClient->setUseObjects(true);
The following examples for PHP and Ruby retrieve an event via the Calendar API, and use data from the new resulting object:

PHP:
$event = $service->events->get("primary", "eventId");
echo $event->getSummary();
Ruby:
result = client.execute(
:api_method => service.events.get,
:parameters => {'calendarId' => 'primary',
'eventId' => 'eventId'})
print result.data.summary
If you have general questions about the client libraries, be sure to check out the client library forums (PHP and Ruby). For questions on specific Apps APIs come find us in the respective Apps API forum.

Dan Holevoet   profile

Dan joined the Google Developer Relations team in 2007. When not playing Starcraft, he works on Google Apps, with a focus on the Calendar and Contacts APIs. He's previously worked on iGoogle, OpenSocial, Gmail contextual gadgets, and the Google Apps Marketplace.

URL: http://googleappsdeveloper.blogspot.com/2011/12/enhanced-object-properties-in-php-and.html

[Gd] Clicks and impressions for authors

| More

Official Google Webmaster Central Blog: Clicks and impressions for authors

Webmaster Level: All
(Cross-posted on the Inside Search Blog)

With the latest improvements to the way authorship annotations look in search and the addition of authorship to Google News, authors have been really excited about getting more visibility, and users benefit from seeing the name, photo, and way to connect with the person who created the content.

Authors have also been giving us a lot of feedback on what else they'd like to see, so today we're introducing “Author Stats” in Webmaster Tools that shows you how often your content is showing up on the Google search results page. If you associate your content with your Google Profile either via e-mail verification or a simple link, you can visit Webmaster Tools to see how many impressions and clicks your content got on the Google search results page. Check out what Matt Cutts would see for his content:

To see your information, go to google.com/webmasters and login with the same username you use for your Google+ Profile. On the left hand panel, you can see “Author Stats” under the “Labs” section. This is an experimental feature so we’re continuing to iterate and improve, but we wanted to get early feedback from you. You can e-mail us at authorship-pilot@google.com if you run into any issues or have feedback.

If you’re a content creator interested in learning more about authorship, check out our Help Center.

Posted by Javier Tordable, Software Engineer
URL: http://googlewebmastercentral.blogspot.com/2011/12/clicks-and-impressions-for-authors.html

Wednesday, December 14, 2011

[Gd] App Engine 1.6.1 Released

| More

Google App Engine Blog: App Engine 1.6.1 Released

We have one more release this year to make our developers merry, and while some members of our team enjoy the summer sunshine down under, we’ll be taking a short winter break from releases. Don’t worry, we’ll be back to our normal schedule in January, but we couldn’t resist tempting you with some new features that will keep you up tinkering well past midnight on January 1st.



Platform Changes



  • Frontend Instance Classes - For applications that need more CPU and/or memory to serve requests, we’ve introduced two larger frontend instance classes. Before today, all apps were allocated a fixed instance size no matter what the app was computing in its requests. Now, apps that need more computing power can upgrade the size of their instances.

  • High Replication Datastore (HRD) Migration Tool Has Graduated - The HRD migration tool is now a fully supported feature. The tool allows you to easily migrate your data, limits the downtime required to complete the migration, and also allows you to choose its precise time. Every app can now start the new year off right, improving their uptime and reliability by migrating to HRD!



New APIs

  • Conversion API (Experimental) - Converting between formats within your application can be a pain, but with the experimental Conversion API you can now easily convert between PDF, HTML, text and images. Generating PDF invoices from HTML, displaying PDF menus as HTML or extracting text from images using OCR is now as simple as an API call.

  • Logs Reader API (Experimental) - Want to summarize latency by handler? Summarize request statistics by user? The new logs reader API allows you to programmatically access your logs to build reports, gather statistics, and analyze requests to your heart’s content.



Read the full release notes for Java and Python to get all the details on 1.6.1. We always love to hear what you think, so keep the feedback on our groups coming. App Engine releases will resume again with our regular schedule around the end of January.








Posted by The App Engine Team
URL: http://googleappengine.blogspot.com/2011/12/app-engine-161-released.html

[Gd] Dev Channel Update for Chromebooks

| More

Chrome Releases: Dev Channel Update for Chromebooks

The Dev channel has been updated to 17.0.963.6 (Platform versions: 1412.18.0) for Chromebooks (Acer AC700, Samsung Series 5 , and Cr-48).  This release contains stability and feature improvement.

If you find new issues, please let us know by visiting our help site or filing a bug. You can also submit feedback using "Report an issue" under the wrench icon. Interested in switching to the Dev channel? Find out how.

Orit Mazor
Google Chrome
URL: http://googlechromereleases.blogspot.com/2011/12/dev-channel-update-for-chromebooks_13.html

Tuesday, December 13, 2011

[Gd] How Google Tests Software

| More

Google Testing Blog: How Google Tests Software

By James Whittaker

The publishing industry may be slow, but eventually they deliver. Amazon is now listing How Google Tests Software that I wrote with Jason Arbon and Jeff Carollo for presale. Find it at: http://goo.gl/Dg3qG

URL: http://googletesting.blogspot.com/2011/12/how-google-tests-software.html

[Gd] Stable Channel Update

| More

Chrome Releases: Stable Channel Update


The Google Chrome team is happy to announce the arrival of Chrome 16.0.912.63 to the Stable Channel for Windows, Mac, Linux, and Chrome Frame.  Chrome 16 contains some really great improvements including enhancements to Sync and the ability to create multiple profiles on a single instance of Chrome. You can read about it more on the Google Chome blog. 

Security fixes and rewards:
Please see the Chromium security page for more detail. Note that the referenced bugs may be kept private until a majority of our users are up to date with the fix

  • [81753] Medium CVE-2011-3903: Out-of-bounds read in regex matching. Credit to David Holloway of the Chromium development community.
  • [95465] Low CVE-2011-3905: Out-of-bounds reads in libxml. Credit to Google Chrome Security Team (Inferno).
  • [$500] [98809] Medium CVE-2011-3906: Out-of-bounds read in PDF parser. Credit to Aki Helin of OUSPG.
  • [$1000] [99016] High CVE-2011-3907: URL bar spoofing with view-source. Credit to Luka Treiber of ACROS Security.
  • [100863] Low CVE-2011-3908: Out-of-bounds read in SVG parsing. Credit to Aki Helin of OUSPG.
  • [101010] Medium CVE-2011-3909: [64-bit only] Memory corruption in CSS property array. Credit to Google Chrome Security Team (scarybeasts) and Chu.
  • [101494] Medium CVE-2011-3910: Out-of-bounds read in YUV video frame handling. Credit to Google Chrome Security Team (Cris Neckar).
  • [101779] Medium CVE-2011-3911: Out-of-bounds read in PDF. Credit to Google Chrome Security Team (scarybeasts) and Robert Swiecki of the Google Security Team.
  • [$1000] [102359] High CVE-2011-3912: Use-after-free in SVG filters. Credit to Arthur Gerkis.
  • [$1000] [103921] High CVE-2011-3913: Use-after-free in Range handling. Credit to Arthur Gerkis.
  • [$1000] [104011] High CVE-2011-3914: Out-of-bounds write in v8 i18n handling. Credit to Sławomir Błażek.
  • [$1000] [104529] High CVE-2011-3915: Buffer overflow in PDF font handling. Credit to Atte Kettunen of OUSPG.
  • [$500] [104959] Medium CVE-2011-3916: Out-of-bounds reads in PDF cross references. Credit to Atte Kettunen of OUSPG.
  • [105162] Medium CVE-2011-3917: Stack-buffer-overflow in FileWatcher. Credit to Google Chrome Security Team (Marty Barbella).
  • [107258] High CVE-2011-3904: Use-after-free in bidi handling. Credit to Google Chrome Security Team (Inferno) and miaubiz.


The bugs [95465], [100863], [101494], [102359], [103921] and [105162] were detected using AddressSanitizer.

In addition, we would like to thank miaubiz, Eric Bidelman, and Sławomir Błażek for working with us in the development cycle and preventing bugs from ever reaching the stable channel. Various rewards were issued.

Thanks for using Chrome! If you find a new issue, please let us know by filing a bug.

Have a happy holiday season!

Anthony Laforge
Google Chrome
URL: http://googlechromereleases.blogspot.com/2011/12/stable-channel-update.html