Maybe they should get design tips from Snooki!
Tag: google docs
Using Google Fusion Tables from #rstats
But after all that- I was quite happy to see Google Fusion Tables within Google Docs. Databases as a service ? Not quite but still quite good, and lets see how it goes.
https://www.google.com/fusiontables/DataSource?dsrcid=implicit&hl=en_US&pli=1
http://googlesystem.blogspot.com/2011/09/fusion-tables-new-google-docs-app.html
But what interests me more is
http://code.google.com/apis/fusiontables/docs/developers_guide.html
The Google Fusion Tables API is a set of statements that you can use to search for and retrieve Google Fusion Tables data, insert new data, update existing data, and delete data. The API statements are sent to the Google Fusion Tables server using HTTP GET requests (for queries) and POST requests (for inserts, updates, and deletes) from a Web client application. The API is language agnostic: you can write your program in any language you prefer, as long as it provides some way to embed the API calls in HTTP requests.
The Google Fusion Tables API does not provide the mechanism for submitting the GET and POST requests. Typically, you will use an existing code library that provides such functionality; for example, the code libraries that have been developed for the Google GData API. You can also write your own code to implement GET and POST requests.
Also see http://code.google.com/apis/fusiontables/docs/sample_code.html
Google Fusion Tables API Sample Code
Libraries
SQL API
Language | Library | Public repository | Samples |
---|---|---|---|
Python | Fusion Tables Python Client Library | fusion-tables-client-python/ | Samples |
PHP | Fusion Tables PHP Client Library | fusion-tables-client-php/ | Samples |
Featured Samples
An easy way to learn how to use an API can be to look at sample code. The table above provides links to some basic samples for each of the languages shown. This section highlights particularly interesting samples for the Fusion Tables API.
SQL API
Language | Featured samples | API version |
---|---|---|
cURL |
|
SQL API |
Google Apps Script |
|
SQL API |
Java |
|
SQL API |
Python |
|
Docs List API |
Android (Java) |
|
SQL API |
JavaScript – FusionTablesLayer | Using the FusionTablesLayer, you can display data on a Google Map
Also check out FusionTablesLayer Builder, which generates all the code necessary to include a Google Map with a Fusion Table Layer on your own website. |
FusionTablesLayer, Google Maps API |
JavaScript – Google Chart Tools | Using the Google Chart Tools, you can request data from Fusion Tables to use in visualizations or to display directly in an HTML page. Note: responses are limited to 500 rows of data. | Google Chart Tools |
External Resources
Google Fusion Tables is dedicated to providing code examples that illustrate typical uses, best practices, and really cool tricks. If you do something with the Google Fusion Tables API that you think would be interesting to others, please contact us at googletables-feedback@google.com about adding your code to our Examples page.
- Shape EscapeA tool for uploading shape files to Fusion Tables.
- GDALOGR Simple Feature Library has incorporated Fusion Tables as a supported format.
- Arc2CloudArc2Earth has included support for upload to Fusion Tables via Arc2Cloud.
- Java and Google App EngineODK Aggregate is an AppEngine application by the Open Data Kit team, uses Google Fusion Tables to store survey data that is collected through input forms on Android mobile phones. Notable code:
- Create a Fusion Table – FusionTableServlet.java
- Insert data into a Fusion Table – SubmissionFusionTable.java
- R packageAndrei Lopatenko has written an R interface to Fusion Tables so Fusion Tables can be used as the data store for R.
- RubySimon Tokumine has written a Ruby gem for access to Fusion Tables from Ruby.
Updated-You can use Google Fusion Tables from within R from http://andrei.lopatenko.com/rstat/fusion-tables.R
ft.connect <- function(username, password) { url = "https://www.google.com/accounts/ClientLogin"; params = list(Email = username, Passwd = password, accountType="GOOGLE", service= "fusiontables", source = "R_client_API") connection = postForm(uri = url, .params = params) if (length(grep("error", connection, ignore.case = TRUE))) { stop("The wrong username or password") return ("") } authn = strsplit(connection, "\nAuth=")[[c(1,2)]] auth = strsplit(authn, "\n")[[c(1,1)]] return (auth) } ft.disconnect <- function(connection) { } ft.executestatement <- function(auth, statement) { url = "http://tables.googlelabs.com/api/query" params = list( sql = statement) connection.string = paste("GoogleLogin auth=", auth, sep="") opts = list( httpheader = c("Authorization" = connection.string)) result = postForm(uri = url, .params = params, .opts = opts) if (length(grep("<HTML>\n<HEAD>\n<TITLE>Parse error", result, ignore.case = TRUE))) { stop(paste("incorrect sql statement:", statement)) } return (result) } ft.showtables <- function(auth) { url = "http://tables.googlelabs.com/api/query" params = list( sql = "SHOW TABLES") connection.string = paste("GoogleLogin auth=", auth, sep="") opts = list( httpheader = c("Authorization" = connection.string)) result = getForm(uri = url, .params = params, .opts = opts) tables = strsplit(result, "\n") tableid = c() tablename = c() for (i in 2:length(tables[[1]])) { str = tables[[c(1,i)]] tnames = strsplit(str,",") tableid[i-1] = tnames[[c(1,1)]] tablename[i-1] = tnames[[c(1,2)]] } tables = data.frame( ids = tableid, names = tablename) return (tables) } ft.describetablebyid <- function(auth, tid) { url = "http://tables.googlelabs.com/api/query" params = list( sql = paste("DESCRIBE", tid)) connection.string = paste("GoogleLogin auth=", auth, sep="") opts = list( httpheader = c("Authorization" = connection.string)) result = getForm(uri = url, .params = params, .opts = opts) columns = strsplit(result,"\n") colid = c() colname = c() coltype = c() for (i in 2:length(columns[[1]])) { str = columns[[c(1,i)]] cnames = strsplit(str,",") colid[i-1] = cnames[[c(1,1)]] colname[i-1] = cnames[[c(1,2)]] coltype[i-1] = cnames[[c(1,3)]] } cols = data.frame(ids = colid, names = colname, types = coltype) return (cols) } ft.describetable <- function (auth, table_name) { table_id = ft.idfromtablename(auth, table_name) result = ft.describetablebyid(auth, table_id) return (result) } ft.idfromtablename <- function(auth, table_name) { tables = ft.showtables(auth) tableid = tables$ids[tables$names == table_name] return (tableid) } ft.importdata <- function(auth, table_name) { tableid = ft.idfromtablename(auth, table_name) columns = ft.describetablebyid(auth, tableid) column_spec = "" for (i in 1:length(columns)) { column_spec = paste(column_spec, columns[i, 2]) if (i < length(columns)) { column_spec = paste(column_spec, ",", sep="") } } mdata = matrix(columns$names, nrow = 1, ncol = length(columns), dimnames(list(c("dummy"), columns$names)), byrow=TRUE) select = paste("SELECT", column_spec) select = paste(select, "FROM") select = paste(select, tableid) result = ft.executestatement(auth, select) numcols = length(columns) rows = strsplit(result, "\n") for (i in 3:length(rows[[1]])) { row = strsplit(rows[[c(1,i)]], ",") mdata = rbind(mdata, row[[1]]) } output.frame = data.frame(mdata[2:length(mdata[,1]), 1]) for (i in 2:ncol(mdata)) { output.frame = cbind(output.frame, mdata[2:length(mdata[,i]),i]) } colnames(output.frame) = columns$names return (output.frame) } quote_value <- function(value, to_quote = FALSE, quote = "'") { ret_value = "" if (to_quote) { ret_value = paste(quote, paste(value, quote, sep=""), sep="") } else { ret_value = value } return (ret_value) } converttostring <- function(arr, separator = ", ", column_types) { con_string = "" for (i in 1:(length(arr) - 1)) { value = quote_value(arr[i], column_types[i] != "number") con_string = paste(con_string, value) con_string = paste(con_string, separator, sep="") } if (length(arr) >= 1) { value = quote_value(arr[length(arr)], column_types[length(arr)] != "NUMBER") con_string = paste(con_string, value) } } ft.exportdata <- function(auth, input_frame, table_name, create_table) { if (create_table) { create.table = "CREATE TABLE " create.table = paste(create.table, table_name) create.table = paste(create.table, "(") cnames = colnames(input_frame) for (columnname in cnames) { create.table = paste(create.table, columnname) create.table = paste(create.table, ":string", sep="") if (columnname != cnames[length(cnames)]){ create.table = paste(create.table, ",", sep="") } } create.table = paste(create.table, ")") result = ft.executestatement(auth, create.table) } if (length(input_frame[,1]) > 0) { tableid = ft.idfromtablename(auth, table_name) columns = ft.describetablebyid(auth, tableid) column_spec = "" for (i in 1:length(columns$names)) { column_spec = paste(column_spec, columns[i, 2]) if (i < length(columns$names)) { column_spec = paste(column_spec, ",", sep="") } } insert_prefix = "INSERT INTO " insert_prefix = paste(insert_prefix, tableid) insert_prefix = paste(insert_prefix, "(") insert_prefix = paste(insert_prefix, column_spec) insert_prefix = paste(insert_prefix, ") values (") insert_suffix = ");" insert_sql_big = "" for (i in 1:length(input_frame[,1])) { data = unlist(input_frame[i,]) values = converttostring(data, column_types = columns$types) insert_sql = paste(insert_prefix, values) insert_sql = paste(insert_sql, insert_suffix) ; insert_sql_big = paste(insert_sql_big, insert_sql) if (i %% 500 == 0) { ft.executestatement(auth, insert_sql_big) insert_sql_big = "" } } ft.executestatement(auth, insert_sql_big) } }
Google Docs Templates
Google Docs has lots of templates but the funny part is they are not well integrated with the individual components, instead you almost have to go to the templates directory first and then to a particular class of document (like presentation)
Within Google Docs presentation, there is no way to go to templates library at https://docs.google.com/templates pictured above
and thats all it shows.
Instead you need to go to the Google Docs homepage and then choose templates. This is slightly opposite to the way people use Office software- you generally decide to use a software and then use a template. Not with Google Docs though- you need to choose template first using either of three methods-
Google Storage for Developers goes into Enterprise Mode
To help unify and uniform, collobrative work and data management and business models across the enterprise in secure SSL cloud environments- Google Storage has been rolling out some changes (read below)-this also gives you more options on the day Amazon goes ahem down (cough cough) because they didn’t think someone in their data environment could be sympathetic to free data.
——————————————————————————————————————————————————————–
https://groups.google.com/group/gs-announce
And now to the actual update.
We’re making some changes to Google Storage for Developers to make team-based development easier. As part of this work, we are introducing the concept of a project. In preparation for this feature, we will be creating projects for every user and migrating their buckets to it.
What does this mean for you?
Everything will continue to work as it always has. However, you will notice that if you perform a get-acl operation on any of your buckets, you will see extra ACL entries. These entries correspond to project groups. Each group has only one member – the person who owned the buckets before the bucket migration; no additional rights have been granted to any of your buckets or objects. You should preserve these new ACL grants if you modify bucket ACLs.
An example entry for a modified ACL would look like this:
We’ll be rolling out these changes over the next few days,
http://blog.cloudberrylab.com/2011/04/cloudberry-explorer-for-google-storage.html
Detailed Note on GS-
https://code.google.com/apis/storage/
Google Storage for Developers is a RESTful service for storing and accessing your data on Google’s infrastructure. The service combines the performance and scalability of Google’s cloud with advanced security and sharing capabilities. Highlights include:
Fast, scalable, highly available object store
- All data replicated to multiple U.S. data centers
- Read-your-writes data consistency
- Objects of hundreds of gigabytes in size per request with range-get support
- Domain-scoped bucket namespace
Easy, flexible authentication and sharing
- Key-based authentication
- Authenticated downloads from a web browser
- Individual- and group-level access controls
In addition, Google Storage for Developers offers a web-based interface for managing your storage and GSUtil, an open source command line tool and library. The service is also compatible with many existing cloud storage tools and libraries. With pay-as-you-go pricing, it’s easy to get started and scale as your needs grow.
Google Storage for Developers is currently only available to a limited number of developers. Please sign up to join the waiting list.
Tips to Play Farmville Really Well
Here are some tips to play Farmville really well-
1) Keep your Farmville friends in a seperate friend list by creating a list at http://www.facebook.com/friends/edit/
This ensures friendship , work and Farmville dont mess around with each other. You also dont need a lot of friends in Farmville (max 40 actives) unlike Mafia Wars
2) Register at http://rewards.zynga.com/ to get free or double rewards by doing the same work. These rewards can be redeemed in-game
3) Set a time as well as money budget. Like $10 per month and 1 hour on weekends with 15 minutes on weekdays with max 3-4 logins. Continue reading “Tips to Play Farmville Really Well”
Search, Sports,Social Media,SlideShares, Scribd
Some slideshare.net presentations I really liked.
A tutorial on SEO and SEM-
Carole Ann Matignon deals with optimization and scheduling, rules in the…….NFL!
Carole, We are waiting for the sequel on analytics on football and the beer game.
Social Media Screw-Ups
Social Media doesnt matter at all- Social Media matters a lot- Still undecided? Take a look
Slideshare is a great VISUAL interface on sharing content. I liked Google Docs embedding as well, but Matt Mullenberg and Matt Cutts seemed to have stopped talking. Mullenberg is going like Zuckenberg, not willing to align with Sergey Mikhaylovich Brin. or maybe they are afraid of Big Brother Brin. Google loves Java and Javascript (even when they are getting sued for it)- while Matt M hates it- bad for RIA I guess.
Scribd also is a great way to share content- and probably is small enough for. WordPress.com to allow embedding
Thats the reason why I sometimes prefer Scribd for sharing my poetry to Slideshare and Google Docs. Also I like the enhanced analytics and the much easier and evolved interface for reading. Slideshare is much more successful than Scribd because it is open to sharing with everyone- scribd tries to get you to register …;)
(* Also see MIT’s beer game at http://beergame.mit.edu/ which is ahem different from Duke’s beer games).
Related Articles
- Scribd Puts User Docs Behind A Paywall Without Them Realizing It (techdirt.com)
- 4 years of SlideShare (slideshare.net)
- SlideShare Grows Up, Launches Pro Accounts For Business Users (nytimes.com)
- SlideShare Announces Pfizer is First Company in Regulated Industry to Launch Social Media Channel on its Platform (eon.businesswire.com)
- McClure Adds 500 Mentors to 500 Startups (gigaom.com)
Awesome new features in Doc Googles
I really liked some awesome new features in Google Docs, and I am mentioning just some of the features I like because they are not there in Windows Office mostly.
Sourcehttp://www.google.com/google-d-s/whatsnew.html
List View and Mobile View Improvements
Now you can see your spreadsheets with all their formatting in List View and on your mobile device, this includes background/foreground colors, borders and text formatting!
Themes for forms
Add a splash of color to your surveys and questionnaires. When you create and edit a form, simply apply one of the 70 themes
-
Forms improvements
We’ve added a new question type (grid), support for right-to-left languages in forms, and a new color scheme for the forms summary. Also, you can now pre-populate form fields with URL parameters, and if you use Google Apps, you can create forms which require sign-in to access. Learn more -
Translate document
You can now translate an entire document into over 40 languages.Translate and detect languages in Google spreadsheets
=GoogleTranslate(“Hola, ¿cómo estás?”,”es”,”en”) gives “Hi, how are you?” (or leave out “en” and we’ll automatically choose the default language of your spreadsheet) What if you don’t know the language? =DetectLanguage(“Hola, ¿cómo estás?”) gives “es”.A new curve tool in drawings
Create smooth curves based on a series of points with this new tool.Optical character recognition (OCR)
You can now upload and convert PDF or image files to text.You can read the awesome new ones athttp://www.google.com/google-d-s/whatsnew.html but these are the ones I felt were missing in Windows Office.
Coming up- a Review of newly forked Libre Office