Google App Engine Channel API and Chrome Extensions - google-app-engine

Over Christmas I implemented some code to open a channel to my App Engine application using the channel API and it was working fine.
I recently returned to the code and find that it is broken, and the problem seems to lie in talkgadget that the client code is trying to load into a frame.
I took a snapshot of the code returned by /_ah/channel/jsapi on December 21 and I am comparing it to today's code.
When the older version tried to get talkgadget.google.com/talkgadget/d?token=[my-token] it was hardcoded to use http. Sensibly enough, the code was later changed to check the page's protocol in document.location and adapt to cases where https is used. The problem now is that when running in a chrome extension it grabs chrome-extension: as the protocol and naturally the channel fails to open in the extension.
Setting the base of the background page to my appspot URL does not change document.location, although I had some vague notion that it should. (Not sure what the standards say.)
Is there a workaround for this? One thought was to create my own iframe loaded from my site, but then it will nest the actual channel iframe, complicating things.
I wonder if Moishe or someone else on the App Engine team could comment on this. It seems like the this is a bug and the code should take into chrome extensions either by testing for the protocol and searching for a base tag as an alternative, or provide some way to configure this through the javascript object.

Yep, this is a bug. There's a fix submitted, and it's in the process of rolling out to production; it'll probably be out in about a week.
In the meantime, your idea of an iframe embedded in the extension should work.

Related

React app get stuck on reload on Firefox desktop, but not on Chrome and other browsers

I have a create-react-app build being served by flask. It works fine in other browsers; however on Firefox, when I do a reload, the main.js file is stuck at the fetch method. After 3 minutes, it timesout then renders what it suppose to. I am looking for guidance on where to look from hereon. The production server does not log that the endpoint is receiving the fetch request; however, once the 3 minutes is up, the client side renders the updated information (as if it hit the server side). Everything looks like it should be working in the code I wrote, but I am not able scope out where I should be looking in debugging this issue.
Note: I am giving a broad description of the problem at the moment, but will disclose specifics such as codes, logs, and others items once I am able to get some guidance of the matter. As of now, there are no resources pointing out this specific issue, thus displaying code will simply be a "garbage" dump.
After working on the problem for quite some time, we found these two articles to be very helpful:
https://www.andreasreiterer.at/fix-whitescreen-static-react-app/
https://blog.miguelgrinberg.com/post/how-to-deploy-a-react--flask-project
After testing different sources, we first found that article one's suggestion of changing the homepage to the base url worked. After realizing that the nginx was getting confused on which static files to server, we proceeded to follow article 2's steps.
We did not have any issues on other browsers, but only on firefox. I hope this will help those that are experiencing the same Firefox issue.

How to find which file is serving ads in my application?

Ok, somehow I am serving ads in my NodeJS / AngularJS application, but I haven't include this myself.
There's some package or included link sending ads to the client, but the ads are not visible, and the adserve url changes with every request. (The url that can be seen in the screenshot below)
How do I find out which place in my application serves these ads?
PS: I am sure this doesn't come from my local dev pc, my other collegues have this issue as well.
A quick trick may be to search for the url in every files of your repository. If you use a cdn to load your librairies, try to look inside also (you can do that directly in chrome dev tool with ctrl/cmd f in the sources tab).
Hope it will help !
The "adserver" in my project turns out to be a tracking / analytics beacon included by the Realtime.co framework.
Thankfully, the author responded to my email very quickly, and they also provide a beacon-free version of their framework. So problem solved :)

Pagespeed on app engine.. lots of issues. am i missing something?.. [php, appengine]

recently we deployed our site to google app engine and everything deployed successfully.
now we enable pagespeed in settings.
now problem.
its making loading css in html head section with some wried script tag instead of style tag..
i tried every and many confirmation settings but nothing works..
i want to load google fonts css early in html (not working, for now disable filters related to css because of issue 1)
i want it to combine all my js to one file and compress it. (not working)
here is page speed configuration in yaml.
pagespeed:
enabled_rewriters:
- ConvertMetaTags
- ElideAttributes
- CollapseWhitespace
- CombineJs
- ProxyCss
- InlineCss
- MinifyCss
- RemoveComments
disabled_rewriters:
- FlushSubresources
- WebpOptimization
- InlineImages
- ImageStripColorProfile
- ProxyImages
- ProxyJs
- ImageRecompressPng
- ImageProgressiveJpeg
- ImageConvertToJpeg
- DeferJs
- MoveCssToHead
- InlineJs
- InlinePreviewImages
here is website www.justtotaltech.co.uk
and sometime its load css in html after refreshing page one or two times..
is there any to configure more advance settings of pagespeed in app.yaml or somewhere else like pagespeed service and mod_pagespeed
or is there any way to use external pagespeed service for appengine instead of one inbuit with it. (i tried this but it don't fetch content from origin domain (app engine))
someone said in below comments for removing pagespeed section and now site don't have it. but nothing work at all.
for the issue 3. I contacted pagespeed team for related issue previously and got the following response.
CombineJs AND CombineCss are disabled automatically whenever FlushSubresources is enabled. this option is currently enabled by default.
So disable FlushSubresources first then combinJs rewriter will work.
Another thing worth to say is that you can actually preview the pagespeed results.
For example:
view-source:http://www.justtotaltech.co.uk/services/software-development/?ModPagespeedFilters=combine_javascript,combine_css
It will be much easier to detect which filter cause the issue.
Workable Page Speed Config
pagespeed:
enabled_rewriters:
- MinifyCss
- CombineJs
- CombineCss
disabled_rewriters:
- FlushSubresources
Great question, as I am experiencing similar issues. I wanted to start by referring you to the google developer document page (which I am sure you have looked at):
https://developers.google.com/appengine/docs/python/config/appconfig
As they note there, "App Engine's support for PageSpeed is an experimental, innovative, and rapidly changing new feature for Google App Engine. Unfortunately, being on the bleeding edge means that we may make backwards-incompatible changes to App Engine's support for PageSpeed. We will inform the community when this feature is no longer experimental."
Thus, I am not surprised to hear you experienced performance changes that were somewhat arbitrary. Paraphrasing from the developer docs, I see the following in terms of testing (as that is what I am trying to do for a custom application as well). To work through things, you might try to be very deliberate and try different test configurations (which I assume that you have already). That, said, if you haven't, and you want to try a new configuration, perhaps to test some "risky" optimizations, you might expect that you could do so in a test Application Version while your users continue to use the default Application Version. Unfortunately, since updating the test version's configuration applies to all versions, the "risky" settings are applied to the version that your users use, too. Instead, to try out these settings, you could:
Turn off PageSpeed for your application, update PageSpeed configuration, and view your site using the PageSpeed chrome extension
Copy the relevant parts of your application to a separate test application that has its own application ID and versions.
If you do find any specific solutions to the issue, please post them here!

Using a custom domain on GAE. Won't let me past Step 4

I'm trying to use a custom domain with a static site hosted on AppEngine. Once I get into Google Apps to add the domain, I just get stuck on this page. Basically, I can't get past Step 4 as per the instructions here. I click "Accept" and hit the activate button but the page just refreshes. I spent about a half hour on the phone with "Lewis" from Google phone support and he eventually told me to try App Engine support lol. During the support call we attempted to get this to work multiple times using both the latest Chrome and FF browsers with cookies/cache, etc. cleared.
No reputation, so no screenshot but like I said, the problem is at Step 4 where you have to accept GAE's terms.
Looks like similar problem here. Anyone have the same problem and/or know of a solution? Thanks
You can try other way to activate, like a html page.
I have used this method to activate.
My activated page seems those:
By html to activate => //i.stack.imgur.com/t3nM1.png ;
By operators to activate =>//i.stack.imgur.com/fZTWH.png;
Can you see them?
By the way, I am in China, so, these uploaded images that I can not see them.

SmartGWT - Appengine - 404 not found

Im using smartGWT v2.1 with GWT 2 and Appengine SDK 1.3.0
On localhost, everything works fine!
When I deploy everything goes fine too, without any error!
The problem is, when i access the the app it returns an blank screen. Using the firebug i saw just nocache.js missing.
ErrorLog:
GET mika.nocache.js
http://perfworker.appspot.com/Mika/mika.nocache.js
404 Not Found
perfworker.appspot.com
Just to know, the last version of smartGWT should work on AppEngine out of the box?
Thanks in advance!
Cleber
I'm going to guess you're developing on Windows. NTFS, unlike nearly every other filesystem, is case-insensitive, so it'll work fine if your file or directory has one capitalization and you're accessing it with another. On every other platform, however, including the one App Engine runs on, capitalization matters: Check that you're using the same capitalization to access the file as is used to name the file.
Btw, this not only applies to SmartGwt, but to any GWT app. I would have voted on the answer above, but I don't have enough rep points yet [new user]. Changing the casing of the link in the base html page worked for me.

Resources