[google-appengine] Re: gcloud vs. goapp for GO appengine

2017-04-08 Thread 'Adam (Cloud Platform Support)' via Google App Engine
You can still keep the standalone SDK installed alongside gcloud and use 
the goapp workflow if you prefer. The 'goapp' installed by gcloud resides 
in a directory outside of the PATH on purpose so as not to conflict with 
the standalone SDK, and is meant to be invoked only by gcloud. The 'goroot' 
directory is the same goroot that is included in the standalone SDK. It's 
best not to try and mash parts of the SDKs together or expose internal bits 
of gcloud and try to use them like the standalone SDK.

The different ways to deploy a standard environment Go app (goapp, gcloud, 
or appcfg) are given in the documentation Deploying a Go App. 
 As 
to where your app should reside, you should always keep your app sources 
outside of the SDK directory tree, so which SDK you use should not matter.

On Saturday, April 8, 2017 at 11:57:29 AM UTC-4, Tim Becker wrote:
>
> Sorry if I'm missing something obvious, but it seems that the documenation 
> is very unclear about this and was just recently changed with no clear 
> migration instructions:
>
>- since recently (~ last week sometime) the prefered way to install 
>Golang support seems to be via the "Google Cloud SDK" (vs the "original 
> App 
>Engine SDK for Go")
>- previously, the `goapp` tool was a central part of my workflow in 
>order to deal with the dependency on the completely outdated 1.6 version 
> of 
>Go required by appengine
>- using gcloud and installing go support via `gcloud components 
>install app-engine-go` gets me two `goapp`s:
>-  ./google-cloud-sdk/platform/google_appengine/goapp
>   -  ./google-cloud-sdk/platform/google_appengine/goroot/bin/goapp
>- the first of which is a python script with no executable bit set, 
>and neither of which are in the PATH set up by the install.sh script
>- running, eg. 
>`./google-cloud-sdk/platform/google_appengine/goroot/bin/goapp test` 
>results in the following error:
>   - `go: cannot find GOROOT directory: 
>   
> /private/var/folders/bs/nn10qt5j32g25qwgd77wkcyh00d7l1/T/appengine/go_appengine/goroot
>
> Now there are `gopath` and `goroot` dirs in the 
> `plattform/google_appengine` directory and I'm tempted to set the 
> corresponding environment variables to point to those directories, because 
> at least `goroot` seems to have all the necessary appengine dependencies 
> install in it. But this leaves me wondering, where my app should reside. 
> And dealing with appengine/gcloud/whatever it's called today in this manner 
> feels just like "trying out random stuff"
>
> The README contains completely outdated info from 2008. And the online 
> docs only seems to focus on using the "classic" SDK (e.g. 
> https://cloud.google.com/appengine/docs/standard/go/tools/localunittesting/
> )
>
> Is there any obvious documenation that I'm missing? Am I the only person 
> encountering these problems?
>
>
> (btw. I'm using OSX)
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-appengine+unsubscr...@googlegroups.com.
To post to this group, send email to google-appengine@googlegroups.com.
Visit this group at https://groups.google.com/group/google-appengine.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-appengine/8574323f-6e5e-46cc-929b-0771dde866e0%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[google-appengine] Re: The New version of App Engine?

2017-04-08 Thread 'Adam (Cloud Platform Support)' via Google App Engine
The lwip library is failing to build libpng, which it depends on. The error 
mentions "see the notes in pngpriv.h". If you check the comments in that 
source file 
 
they say this:

#  error ZLIB_VERNUM != PNG_ZLIB_VERNUM \
  "-I (include path) error: see the notes in pngpriv.h"
   /* This means that when pnglibconf.h was built the copy of zlib.h that it
* used is not the same as the one being used here.  Because the build of
* libpng makes decisions to use inflateInit2 and inflateReset2 based on 
the
* zlib version number and because this affects handling of certain 
broken
* PNG files the -I directives must match.
*
* The most likely explanation is that you passed a -I in CFLAGS. This 
will
* not work; all the preprocessor directories and in particular all the 
-I
* directives must be in CPPFLAGS.
*/

Do you get this error when running 'npm install' and testing locally, or 
does it only occur when running 'gcloud app deploy'?


On Saturday, April 8, 2017 at 8:40:28 AM UTC-4, Petr Pololáník wrote:
>
> I use Google App Engine for me nodejs project. Today I tried deploy the 
> new version, but app engine throw error. After that I tried deploy the 
> previous version (worked in past), steel throw error.
>
> I do not understand it. It worked before, but now doesn't. The new version 
> of App Engine? Could you help me please?
>
> In log I see problem with lwip library. After remove it works, but I need 
> the library.
>
> In file included from ../src/lib/png/png.c:14:0: 
>> ../src/lib/png/pngpriv.h:805:4: error: #error ZLIB_VERNUM != 
>> PNG_ZLIB_VERNUM "-I (include path) error: see the notes in pngpriv.h" # 
>> error ZLIB_VERNUM != PNG_ZLIB_VERNUM \ ^ lwip_decoder.target.mk:165: 
>> recipe for target 'Release/obj.target/lwip_decoder/src/lib/png/png.o' failed
>>
>  
> Thank you.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-appengine+unsubscr...@googlegroups.com.
To post to this group, send email to google-appengine@googlegroups.com.
Visit this group at https://groups.google.com/group/google-appengine.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-appengine/a2582138-3990-4d30-916c-adee8505696c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[google-appengine] Re: My custom domain redirect user to https://applicationid.appspot.com when i enable ssl

2017-04-08 Thread 'Adam (Cloud Platform Support)' via Google App Engine
You'd want to troubleshoot one thing at a time. Forgetting the  'secure: 
always' redirect, what happens when you just try to access your domain via 
HTTPS directly after configuring SSL? If that doesn't work, there's a 
problem with your SSL config, not the redirect.

Remember that you actually need to add specific DNS records to your 
domain's DNS configuration at the step 'Configure resource records for your 
domain' (see step 5 and 6 in the documentation 
).
 
If you've done this, DNS records also need time to propagate. You can check 
propagation by using a tool like https://www.whatsmydns.net.

On Saturday, April 8, 2017 at 9:11:54 AM UTC-4, pankaj arora wrote:
>
> I have already set up my custom domain on google app engine and it works 
> fine .. i am using python standard environment.
> yesterday I add SSL certificate and add 'secure: always' to app.yml file  .
>
> 1- now when i try to access my custom domain it redirect user to sub 
> domain of appspot.com.
>
> 2- One more issue when i called naked domain .. it says page is not 
> redirect properly 
>
> if i remove  'secure: always'  from app.yml file  .every thing works fine 
> but without https 
>
> Any one can help me in this case.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-appengine+unsubscr...@googlegroups.com.
To post to this group, send email to google-appengine@googlegroups.com.
Visit this group at https://groups.google.com/group/google-appengine.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-appengine/60a2989b-575f-4b81-a268-b3ddfc63c9cb%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[google-appengine] What's the difference between .app and .py?

2017-04-08 Thread 'Jon Wayne Parrott' via Google App Engine
Because it's a reference to a specific object within that Python file. It's 
essentially the same as "from main import app". app engine uses the "app" 
object within "main.Py" to handle requests.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-appengine+unsubscr...@googlegroups.com.
To post to this group, send email to google-appengine@googlegroups.com.
Visit this group at https://groups.google.com/group/google-appengine.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-appengine/f4e52578-b0b2-4a7f-8430-9096688bfa00%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[google-appengine] Re: Google App Engine NodeJS log severity

2017-04-08 Thread 'Adam (Cloud Platform Support)' via Google App Engine
Actually, when browsing the sources for google-cloud-node I discovered 
there is now a new winston transport being developed - 
*@google-cloud/logging-winston 
*.
 
Usage is greatly simplified:

var winston = require('winston');var transport = 
require('@google-cloud/logging-winston');
winston.add(transport);

winston.error('warp nacelles offline');winston.verbose('sheilds at 99%');



On Wednesday, April 5, 2017 at 3:32:00 AM UTC-4, Marco Galassi wrote:
>
> Hi Adam,
> thank you for your answer.
> I am probably just dumb, but I can't make the Cloud Logging APIs work.
> I have installed @google-cloud/logging through
>
> *npm install --save @google-cloud/logging*
>
> as pointed out in the documentation, put a random 
>
> *logging.log('this is a log')*
>
> in the / root handler, before sending back a response to the client, and 
> still, when I access the page,
> I only get an internal server error. The corresponding log in Stackdriver 
> is simply: "TypeError: logging.log is not a function at app.get"
> My code currently looks as simple as this:
> const express = require('express');
> var logging = require('@google-cloud/logging');
> const app = express();
>
> app.get('/', (req, res) => {
>   logging.log('this is a super cool log'); // Shouldn't this log?
>   res.status(200).send('Hello, world!');
> });
>
> if (module === require.main) {
>   const server = app.listen(process.env.PORT || 8080, () => {
> const port = server.address().port;
> console.log(`App listening on port ${port}`);
>   })
> }
> module.exports = app;
>
>
> I can't understand very well how to use it nor I can find a complete 
> example.
>
> Any help would be really appreciated.
>
>
>
> On Tuesday, April 4, 2017 at 9:56:55 PM UTC+2, Adam (Cloud Platform 
> Support) wrote:
>>
>> I see you'd already opened an issue 
>>  but it was closed. The reason 
>> being is that Google does not maintain the winston-gae project, which is an 
>> open source project. We do provide access to the Cloud Logging APIs via 
>> google-cloud-node 
>> 
>>  
>> though which you can use to implement your own logger or use directly in 
>> your code (or which can be referenced to update winston-gae, or implement a 
>> different solution).
>>
>> On Monday, April 3, 2017 at 3:00:19 AM UTC-4, Marco Galassi wrote:
>>>
>>> Yes, but that basically is just the same as doing 
>>> console.log('stdout');
>>> console.error('stderr');
>>>
>>> It would be nice to open an issue to ask google to implement it. Where 
>>> could I do this?
>>>
>>> Marco
>>>
>>>
>>> On Saturday, April 1, 2017 at 12:25:40 AM UTC+2, Adam (Cloud Platform 
>>> Support) wrote:

 I've also been unable to get winston-gae working. It hasn't been 
 updated in over 2 years and is not an official Google library, so for now 
 it seems it's in need of a maintainer.

 The standard winston  logger 
 does work, but only outputs to stdout and as such you don't get proper 
 severity in the Logs Viewer.

 On Friday, March 31, 2017 at 11:03:20 AM UTC-4, Marco Galassi wrote:
>
>
> I am using nodejs on App Engine and I would like to have the ability 
> to log my application in an easy manner.
> Possibily, I would like to be able to log as easy as in python 
> standard environment 
> :
>
> import logging
>> import webapp2
>> class MainPage(webapp2.RequestHandler):
>>   def get(self):
>> logging.debug('This is a debug message')
>> logging.info('This is an info message')
>> logging.warning('This is a warning message')
>> logging.error('This is an error message')
>> logging.critical('This is a critical message')
>> try:
>>   raise ValueError('This is a sample value error.')
>> except ValueError:
>>   logging.exception('A example exception log.')
>> self.response.out.write('Logging example.') 
>
>  
>
> app = webapp2.WSGIApplication([ 
>
> ('/', MainPage)
>> ], debug=True)
>
>
> This is very useful since it shows the logs with the corresponding 
> logging severity in the Stackdriver Logging console.
> Unfortunately, it doesn't look that something like this is possible on 
> NodeJS.
>
> I have tried to follow what the documentation says 
> 
>  
> on logging on NodeJS, which says that I can use winston-gae 
> , but it doesn't work at 
> all.
>
> Any help is very appreciated.
>


-- 
You received this message because 

[google-appengine] gcloud vs. goapp for GO appengine

2017-04-08 Thread Tim Becker
Sorry if I'm missing something obvious, but it seems that the documenation 
is very unclear about this and was just recently changed with no clear 
migration instructions:

   - since recently (~ last week sometime) the prefered way to install 
   Golang support seems to be via the "Google Cloud SDK" (vs the "original App 
   Engine SDK for Go")
   - previously, the `goapp` tool was a central part of my workflow in 
   order to deal with the dependency on the completely outdated 1.6 version of 
   Go required by appengine
   - using gcloud and installing go support via `gcloud components install 
   app-engine-go` gets me two `goapp`s:
   -  ./google-cloud-sdk/platform/google_appengine/goapp
  -  ./google-cloud-sdk/platform/google_appengine/goroot/bin/goapp
   - the first of which is a python script with no executable bit set, and 
   neither of which are in the PATH set up by the install.sh script
   - running, eg. 
   `./google-cloud-sdk/platform/google_appengine/goroot/bin/goapp test` 
   results in the following error:
  - `go: cannot find GOROOT directory: 
  
/private/var/folders/bs/nn10qt5j32g25qwgd77wkcyh00d7l1/T/appengine/go_appengine/goroot
   
Now there are `gopath` and `goroot` dirs in the 
`plattform/google_appengine` directory and I'm tempted to set the 
corresponding environment variables to point to those directories, because 
at least `goroot` seems to have all the necessary appengine dependencies 
install in it. But this leaves me wondering, where my app should reside. 
And dealing with appengine/gcloud/whatever it's called today in this manner 
feels just like "trying out random stuff"

The README contains completely outdated info from 2008. And the online docs 
only seems to focus on using the "classic" SDK 
(e.g. 
https://cloud.google.com/appengine/docs/standard/go/tools/localunittesting/)

Is there any obvious documenation that I'm missing? Am I the only person 
encountering these problems?


(btw. I'm using OSX)

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-appengine+unsubscr...@googlegroups.com.
To post to this group, send email to google-appengine@googlegroups.com.
Visit this group at https://groups.google.com/group/google-appengine.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-appengine/00ac0ae5-d22c-440a-8b50-6e5d2ff17bf5%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[google-appengine] My custom domain redirect user to https://applicationid.appspot.com when i enable ssl

2017-04-08 Thread pankaj arora
I have already set up my custom domain on google app engine and it works 
fine .. i am using python standard environment.
yesterday I add SSL certificate and add 'secure: always' to app.yml file  .

1- now when i try to access my custom domain it redirect user to sub domain 
of appspot.com.

2- One more issue when i called naked domain .. it says page is not 
redirect properly 

if i remove  'secure: always'  from app.yml file  .every thing works fine 
but without https 

Any one can help me in this case.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-appengine+unsubscr...@googlegroups.com.
To post to this group, send email to google-appengine@googlegroups.com.
Visit this group at https://groups.google.com/group/google-appengine.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-appengine/02a85649--4981-8aea-32b24117e96e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[google-appengine] The New version of App Engine?

2017-04-08 Thread Petr Pololáník
I use Google App Engine for me nodejs project. Today I tried deploy the new 
version, but app engine throw error. After that I tried deploy the previous 
version (worked in past), steel throw error.

I do not understand it. It worked before, but now doesn't. The new version 
of App Engine? Could you help me please?

In log I see problem with lwip library. After remove it works, but I need 
the library.

In file included from ../src/lib/png/png.c:14:0: 
> ../src/lib/png/pngpriv.h:805:4: error: #error ZLIB_VERNUM != 
> PNG_ZLIB_VERNUM "-I (include path) error: see the notes in pngpriv.h" # 
> error ZLIB_VERNUM != PNG_ZLIB_VERNUM \ ^ lwip_decoder.target.mk:165: recipe 
> for target 'Release/obj.target/lwip_decoder/src/lib/png/png.o' failed
>
 
Thank you.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-appengine+unsubscr...@googlegroups.com.
To post to this group, send email to google-appengine@googlegroups.com.
Visit this group at https://groups.google.com/group/google-appengine.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-appengine/ac365a76-11c2-48dd-b3b5-7ab298a76290%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[google-appengine] What's the difference between .app and .py?

2017-04-08 Thread m1ksu

After reading the app.yaml reference a bit, I noticed that they use .app on 
Python files, and not .py. Why?


-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-appengine+unsubscr...@googlegroups.com.
To post to this group, send email to google-appengine@googlegroups.com.
Visit this group at https://groups.google.com/group/google-appengine.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-appengine/9240e6d3-def0-462a-a698-796cd0b72f3f%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [google-appengine] NSA on Python Frameworks ?

2017-04-08 Thread timh
I will chuck in my 2c worth ;-)

I prefer pyramid. (and chameleon)

T

On Thursday, April 6, 2017 at 6:02:36 PM UTC+8, Alex Martelli wrote:
>
>
>
> On Thu, Apr 6, 2017 at 8:10 AM, Johan Mutsaerts  > wrote:
>
>> Thanks Alex, 
>>
>> Great you concur on GAE & Python as good choices for the enterprise web 
>> application developer's toolkit (perhaps a good title for a new book?).
>> You seem to be in favor of a best of breed approach in separating 
>> template engine and framework, which eliminates the need for heavy lifting 
>> of full frameworks (like Django) in favor of leaner (faster) frameworks ? 
>>
>
> Yes, jinja2 (while similar to Django templates) is superior, there's no 
> need to compromise on the templating front.
>  
>
>> I find it difficult to sort candidates in terms of obsolescence, 
>> popularity (community support), feature set, learning curve, GAE 
>> compatibility ... e.g.: pylons, pyramid ? webapp2, wbe2py ? jinja2, mako ? 
>> bottle, flask ? 
>>
>
> Django's by far the most popular Python web framework -- 1.7M web hits for 
> a search [python django]. jinja2's also popular, but just 380k hits; flask, 
> 570k. You can do more searches if you want to base your choice on 
> popularity. Other indications is that there are conferences entirely 
> devoted to Django but not ones entirely about other Python web frameworks.
>  
>
>> Is Django really the only framework for developers 'on a deadline' ? on 
>> GAE ? using NDB ? If I read you right, your preference goes to Flask and 
>> Jinja2 ? Can you elaborate a bit on the why's ? 
>>
>
> jinja2 gives me complete, accurate control of templating -- I'd never 
> downgrade to any other templating system (if I am templating server-side at 
> all -- these days it's often better to write the server side as a REST or 
> other API server, and do all the UI work, templating or otherwise, on the 
> Javascript client side on the browser).
>
> As for the framework (templating apart), I think flask is objectively 
> superior, with a sharp and simple, though powerful, architecture. However 
> personally I'm more used to webapp2, having used it for years, so if I'm 
> doing a simple web app I'm more likely to reach for it -- habit's a 
> powerful force:-). In any case, it will be a lightweight system because I 
> don't have to "buy into" lots of architectural and design choices imbued in 
> a rich/heavy framework, but rather can make my own choices depending on 
> where I'm going to deploy and what (if anything) I need to optimize for. 
> (Often, e.g for an internal dashboard which will have a few dozen users at 
> most, there's no optimization needed at all -- then I can emphasize 
> simplicity and speed of deployment -- just as an example).
>  
>
>>
>> Good luck with the book and the conference. 
>>
>
> Thanks,
>
> Alex
>
>  
>
>> TIA, Johan
>>
>>
>> Op woensdag 5 april 2017 17:48:04 UTC+2 schreef Alex Martelli:
>>>
>>> Of course these questions are quite connected with personal opinion, and 
>>> since I'm the author of "Python in a Nutshell" (3rd edition due out any day 
>>> now), you can guess where my bias lies:-). Still, FWIW, here are my 
>>> opinions (hope others chime in!-)...:
>>>
>>> On Wed, Apr 5, 2017 at 8:21 AM, Johan Mutsaerts  
>>> wrote:
>>>
 Hi, 

 Starting your own company is never easy. A dream and a good idea is 
 needed but not sufficient. In my case, enterprise software development 
 skills for non-web applications need to be brushed up, so careful choices 
 to be made:
 1. GAE PaaS : AFAIK great value for little money, it simply works, 
 always, anywhere, no need for sysops

>>>
>>> I concur (but I'm biased on this one too:-).
>>>  
>>>
 2. Python : AFAIK highest productivity language, modular, functional, 
 object-oriented, popular 

>>>
>>> Ditto (in fact I'm right now in Florence, Italy, about to present a 
>>> keynote at Pycon Italia Otto on Friday:-).
>>>  
>>>
 3. Framework ? web2py, pyramid, django, web2app, jinja2 ? I need high 
 productivity, efficient use of Datastore noSQL, MVC ?, templates, 
 scaffolding, boilerplate code generation ...  

>>>
>>> My bias here is for *lightweight* frameworks, of which Flask is the most 
>>> popular (webapp2, bottle and falcon are fine too) -- I devote an entire 
>>> chapter in the Nutshell 3rd ed to these four frameworks (templating, esp. 
>>> jinjia2 which works well with them all but especially Flask, is another 
>>> chapter -- no sense to have templating as PART of a framework, any more 
>>> than it would to have the kitchen sink in there, IMNSHO:-).
>>>
>>> I've wasted too much time in my life debugging boilerplate code 
>>> resulting from code generation: nowadays I insist on writing the code 
>>> myself in the first place (less likely to need debugging, and if it does at 
>>> least I should know why I coded the way I did, right?-). For Datastore 
>>> access, I use ndb (comes with 

[google-appengine] Re: Not able to register for Google Cloud Platform Free Trial

2017-04-08 Thread Vivek m
me too facing the same problem while trying to register for the free trail 
account with my visa card and details but it shows  Transaction was 
declined :Invalid Payment method 

On Friday, 7 April 2017 23:44:49 UTC+5:30, Jun (Cloud Platform Support) 
wrote:
>
> Hi, reaching out to the billing team by filing a billing support request 
> at [1] will be the best place to ask for assistance for your situation. 
>
> [1] https://support.google.com/cloud/contact/cloud_platform_billing
>
>
> On Friday, April 7, 2017 at 9:19:54 AM UTC-4, Sarmistha Guha Thakurta 
> wrote:
>>
>> I was trying to register for the Free Trial of Google Cloud Platform. 
>> However, after I filled up my data and credit card details, though My VISA 
>> credit card was debited with $1 but I was shown an error "Transaction was 
>> declined due to an Invalid Payment". I tried with AMEX card as well but 
>> still the same error?
>> #GoogleCloudPlatform #FreeTrial #GCP
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-appengine+unsubscr...@googlegroups.com.
To post to this group, send email to google-appengine@googlegroups.com.
Visit this group at https://groups.google.com/group/google-appengine.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-appengine/d16eebdc-b04e-4172-84f9-72abeb11e437%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.