[google-appengine] Re: Google Cloud Libraries for Appengine Standard

2018-02-06 Thread 'Jordan (Cloud Platform Support)' via Google App Engine
Other than the fact that the new Google Cloud Client Libraries are mostly 
currently in Beta, it is actually recommended to use the new Client 
Libraries  
(as it is also 
now supported in the App Engine Java 8 
 
environment). 

The reason being is that they are able to run outside of App Engine 
Standard in any environment (e.g App Engine Flex or on client-side 
applications) unlike the App Engine Standard APIs (which only work within 
App Engine Standard). As Cloud becomes more customizable and containerized, 
being able to deploy your code on different types of clusters across 
different services in different containerized environments is the new 
standard approach for Cloud application design. 

For example, using the new Client Libraries will allow you to deploy your 
application on Google Kubernetes Engine  
if you end up wanting to take 
advantage of the amazing cutting edge Kubernetes technologies. The 
engineering team is also working very hard on the new Client Libraries in 
attempts to make it fully GA.

- Note that because some of the libraries are still in Beta, it is 
recommended to report any issues or feature requests directly to the 
engineering team in their Git Issue Tracker (e.g for Java 
). 

-- 
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/276a5ac2-00f2-457e-afae-7d6480a6b27b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[google-appengine] Framework Recommendations for AppEngine Java8 Standard

2018-02-06 Thread Eric Martineau
When we started building AppEngine Java7, the community recommendation and 
examples were centered around using Guice+Jersey.  Despite having a long 
history with SpringBoot, our company invested in Guice/Jersey 
infrastructure for AppEngine.

Since the release of java8, there are a few observations that lead us to 
wonder if Guice+Jersey is still the recommended path:

* The emergence of Spring Cloud GCP (primarily developed by Google)
* Inclusion of SpringBoot examples in getting-started-java (not seeing any 
Guice/Jersey examples)
* A Google Codelab dedicated to SpringBoot in AppEngine

Is there any formal/informal recommendation for Java8 AppEngine between 
Spring vs Guice+Jersey?

-- 
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/622f9918-6ff2-4a7f-80d2-ed0132ee0686%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[google-appengine] Google Cloud Libraries for Appengine Standard

2018-02-06 Thread Eric Martineau
Java8 opened up the possibility of using google-cloud-java (grpc) libraries 
within AppEngine standard.  The newer libraries are nicer to work with from 
a development standpoint, but I'm not sure if there are any significant 
drawbacks to using them within AppEngine Standard.

Can anyone provide guidance on how to approach the inclusion of GRPC 
libraries in AppEngine Standard Java8?

Specifically, I'm thinking of two things:

- Push/pull subscriptions for PubSub
- StackDriver Logging

-- 
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/a4869d0d-3b30-43c7-9ddf-fedc245e28b0%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[google-appengine] Re: Feedback on App Engine Task Queue

2018-02-06 Thread Shaharia Azam
You have to set DB_HOST to null because you have to mention either DB HOST 
or DB SOCKET. And what driver you used as your cache driver? MySQL or file 
system?

On Sunday, December 24, 2017 at 11:15:01 PM UTC+6, Ravi Shanker wrote:
>
> Hello,
>
> One of our client I suggested to use AppEngine  but when I tried to setup 
> demo app to show him getting error while same application working fine on 
> local. 
> I am fallowing 
> https://cloud.google.com/community/tutorials/run-laravel-on-appengine-flexible
>  
> this tutorial but it giving (SQLSTATE[HY000] [2002] No such file or 
> directory) this error 
> I am using laravel 5.5.27
> Error screen shot : http://prntscr.com/hrmrxw
> My app.yml screen shot : http://prntscr.com/hrms71
>
> On Friday, September 22, 2017 at 9:04:45 PM UTC+5:30, Steren Giannini 
> wrote:
>>
>> Dear App Engine users,
>>
>> If you are using App Engine Task Queue, please take one minute to answer 
>> these three questions: https://goo.gl/forms/Eaag1Ftl8X8YKiht2 
>>
>> Your feedback will help us build a better service.
>>
>> Thanks,
>> Steren
>> Product Manager, Google Cloud Platform
>>
>

-- 
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/e0d39f16-c945-42e2-a9b1-9396619d5f5f%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[google-appengine] Re: PCI compliance

2018-02-06 Thread Shaharia Azam
James,
>From my experience, if you are answering some ready-made questionnaire from 
your PCI compliance certification body, I know that's little bit confusing.

But I would suggest, you reach to that certification body's support 
executive and tell them about your APP. Because most of the PCI compliance 
vendor are very much familiar with those two resources Jordan just shared 
with you and they will make things easier for you to get passed.

Thanks,
Shaharia




On Tuesday, February 6, 2018 at 4:10:26 AM UTC+6, James Hunter wrote:
>
> We are trying to get our Google App Engine application through PCI 
> compliance.  They PCI certifier has 2 questions about use of load balancers 
> that I'm not able to answer.  Could anyone help me with this?
>
> 1.  Is the infrastructure behind the load balancer synchronized?
> 2.  Can we confirm passing internal scans of the infrastructure housing 
> the website(s).
>
> I'm sure google does internal scans of their infrastructure, but does 
> anyone know where there's documentation that I can use for PCI compliance 
> justification?  Also, does anyone know what synchronized means in terms of 
> load balancers and is the Google App Engine infrastructure synchronized?
>

-- 
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/e0a95a2a-3bea-4abd-ae84-9354487b3042%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[google-appengine] Re: Picture tagging and uploading to Database

2018-02-06 Thread 'George (Cloud Platform Support)' via Google App Engine
Hello Henk, 

What you desire is certainly attainable. As in similar cases, there is more 
than one solution possible, so you have a wealth of choices at your 
disposal. To store your images you may use Datastore and Cloud Storage in 
conjunction, where the storage it meant to store the actual images. One 
possible implementation is described in the reply to the "Storing images 
and structured data together (Google Cloud Platform) 
"
 
question in stackoverflow.  

For the actual tagging effort, your app may use the Vision API to assign 
tags based on certain features detected in the image. Label Detection 
detects broad sets of categories within an image, which range from modes of 
transportation to animals. You may get a feel of how this feature works 
from the "Detecting Labels 
" documentation 
page. 

For coding issues specifically, you reach a larger pool of specialized 
programmer if you publish your question on Stackoverflow 
. 

-- 
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/590392fc-da12-483a-b036-0a273889e751%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[google-appengine] Re: Picture tagging and uploading to Database

2018-02-06 Thread Ani Hatzis
Hello Henk,

you could also use other GCP products to achieve this workflow, but 
considering your work-load peaks and the described use-cases App Engine 
could be a good platform choice. Here comes the shooting :)

*Incoming emails*
I'm not sure what caveats come for copy of images between Outlook and 
a web UI, but I think it should be possible to automate some of these 
steps. If you don't have a dedicated email address for such messages, 
Exchange / Outlook could submit POST requests to the GAE app and upload the 
images on request of the receiving Outlook user. If all suppliers send 
their messages to a dedicated address (e.g. upl...@example.com), you could 
configure GAE to handle all incoming mail messages and process the images. 
Python standard environment has InboundMailHandler 

 
for doing this. (Note: Although this feature might not be available for all 
supported GAE environments or languages, you can combine multiple 
environments/languages in the same app)

If there are not many suppliers you might consider the burden of managing 
supplier-side users with authorization to upload and tagging images 
directly into your app.

However, the basic steps of the inbound mail handler could be:

   1. Retrieve image data from the email (and ignore all other binaries / 
   attachments?) and move the images into a dedicated Cloud Storage bucket.
   2. For each image, create a "pending tag-job" in Cloud Datastore.
   3. Save mail body and meta data into Cloud Datastore (a very scalable 
   no-sql database) as "email", and link it to all related tag-jobs (i.e. 
   images).
   4. Maybe resize the images (some GAE versions have features for that or 
   use a 3rd party lib) or you could use a Cloud Function that automatically 
   resizes all images that are added to a certain bucket.
   5. Let the app suggest some tags based on the sender of the email (easy 
   with a map of sender addresses and supplier tags), and maybe even the 
   product tags if the emails are supposed to be structured.
   6. Note: There is a maximum size of inbound/outbound mail messages, 
   including attachments: 31.5 MB.

*Tagging*
In a web UI of the same GAE app, authorized users (of your company) can 
browse all pending (or completed) tag-jobs, and validate / edit the product 
and supplier tags that were automatically suggested by the app. (If you are 
lucky, you can train a machine learning product to tag the images by itself 
or at least suggest a smaller set of tags, e.g. "Apple Fuji", together with 
sender addresses it might be possible to reduce the manual tagging effort 
significantly)

*Output*
This sounds a little bit like a shop or catalogue. The web pages for that 
could be done in GAE, maybe with links to Program X pages that also contain 
the prices? I also don't expect any issues if you want to send the output 
in different formats through other channels, at least not if there is some 
kind of HTTP / REST API available. There is also SMS and voice service 
support in some GAE versions. If the images can be public, you could use 
the Cloud Storage URLs for caching (faster and cheaper), also in 
newsletters.

The newsletters however could be a little tricky. GAE supports sending 
mails only in small quotas (if I remember correctly), bulk emails (i.e. 
same mail to many recipients), or by a 3rd party SMTP server. But there is 
so much to consider (bounce handling, opt-in / double opt-in etc.), it 
might be easier to send emails through a mail service provider. Mailgun, 
Mailjet and SendGrid have special pricing and maybe even free tier for GCP 
customers, but any provider should work if your app can use their API.

*Administrative UI*
Maybe also some functions to delete images/emails, mark tag-jobs as 
completed, edit mappings used for auto suggested tags etc. Maybe also an 
import of product / supplier data from Program X (CSV?). User 
authorization. (Authentication probably best via oAuth 2 since there is so 
much that could go wrong)

I hope my 2 cents were helpful.

Groet uit Duitsland.
Ani



On Tuesday, 6 February 2018 17:08:37 UTC+1, Henk Troost wrote:
>
> Hi all,
>
> I'm new to the forum so i will just shoot.
>
>
> Simple question: is what i am asking for possible?
>
> If yes: which way should i be looking? 
>
> I have been googling and searching for ways to upload images to a database 
> and came across google app engine.
>
>
> The background
>
> For my business (export of fresh products) i want to use daily images from 
> my suppliers to enhance our productoffering to our clients.
> These images are coming in through email (we are using exchange server & 
> outlook 2013). 
> At this moment we are having built a custom ERP-solution (Program X): to 
> my knowledge webbased and working under SQL.
> (i am not familiar with programming etc)
>
>
> The idea
> I want to tag image content and upload them to a database. 
> Then i 

[google-appengine] Picture tagging and uploading to Database

2018-02-06 Thread Henk Troost
 

Hi all,

I'm new to the forum so i will just shoot.


Simple question: is what i am asking for possible?

If yes: which way should i be looking? 

I have been googling and searching for ways to upload images to a database 
and came across google app engine.


The background

For my business (export of fresh products) i want to use daily images from 
my suppliers to enhance our productoffering to our clients.
These images are coming in through email (we are using exchange server & 
outlook 2013). 
At this moment we are having built a custom ERP-solution (Program X): to my 
knowledge webbased and working under SQL.
(i am not familiar with programming etc)


The idea
I want to tag image content and upload them to a database. 
Then i want to be able to generate a newsletter for clients including these 
images.
Also an offer for clients from a sinlge supplier is possible
In the future the output will be extended to web / whatsapp and/or other 
apps)

Tagging:  
Product: we have a product structure hierarchical in the custom 
ERP-solution (Fruit - Apple - Apple Fuiji - Apple Fuiji New Zealand - Apple 
Fuiji New Zealand 18 kg box size 120)
Supplier: the supplier is also a tag

Speed:
Everyday there is a constant timelimit and stress (Imagine 20 calls a 
minute with suppliers/clients for 5-6 hours in a row for example)  
The imageupload and tagging has to be done very fast and user friendly. 
Ideally just on the image Copy Command (Ctrl-C) and Paset into uploader. 
Product and Supplier tag. Done

Example
1) tagging picture with "supplier A"  and  'Apple Fuiji New Zealand 18 kg 
box size 120'
2) entry in Program X:  supplier A  has the product 'Apple Fuiji New 
Zealand 18 kg box size 120'   costing EUR 12

Output
1) Total offer for clients with numerous products (hundreds) form several 
supplliers (50-100) illustrated with several pictures
2) Single offer for clients: including the tagged picture and individual 
price setting (Automatically done by program X)


Well that's it
Tnx for shooting


Henk Troost
Netherlands





-- 
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/c22216ba-ff95-461a-af4b-12de06ff2a99%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[google-appengine] Understanding threads and task queues

2018-02-06 Thread Johann Blake
In my GAE app I need to perform an OAuth2 flow by passing an authentication 
code to a Google endpoint in order to retrieve a user's profile. As part of 
this process, I also need to store the user's email address in GAE 
Datastore. The following points have been documented about GAE and Java 8:

   - Each request is limited to 50 concurrent App Engine API request 
   threads.
   - When using threads, use high level concurrency objects, such as 
   Executor and Runnable. Those take care of many of the subtle but important 
   details of concurrency like Interrupts and scheduling and bookkeeping
   - The maximum number of concurrent background threads created by the App 
   Engine API is 10 per instance. (This limit doesn't apply to regular Java 
   threads unrelated to the App Engine API.)

Taken from: 
https://cloud.google.com/appengine/docs/standard/java/runtime-java8

So what happens when I have 100 concurrent requests occurring? Since only 
50 concurrent App Engine API request threads is allowed, what happens to 
the requests once this limit is reached? Does GAE simply just put those 
requests in a waiting cache or terminate the request by issuing some 
response with a failure code? Does an exception get thrown? Or does GAE 
start up a new instance to service the new requests (I would hope so)?

It also isn't clear how to interpret what is meant by 50 concurrent App 
Engine API request threads. Does this mean that my servlet will only ever 
see a maximum of 50 current requests at any given time? Or does it mean 
that these threads are only applicable to App Engine APIs such as storing 
data in the Datastore or Cloud Storage? And then there is third bullet item 
that says there is a maximum of 10 background threads per instance for App 
Engine APIs. How is this different than the 50 request threads?

And finally, to accomplish my goal of obtaining the user's profile, should 
I be using a task queue or a thread to accomplish this? It seems that task 
queues were the original way of doing things before support for Java 8 
threads was provided. Or have I misunderstood something?

Thanks for clarifying this.
Johann

-- 
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/1901724a-1d61-4ccd-a5f9-00495642687e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.