wesleyhales / speedgun Goto Github PK
View Code? Open in Web Editor NEWHome Page: http://speedgun.io
Home Page: http://speedgun.io
Should add a way for users to specify the file output, and specify the url to post to.
Just because they submit an email, doesn't mean I have consent to show :)
Needs to break the loop and any hanging phantomjs process when a page exception put phantom into a hanging state:
https://github.com/wesleyhales/speedgun/blob/master/server/src/main/java/com/fluxui/jms/PerfQueueManager.java#L296
currently the report returns too much data. We should only be showing the stuff we calculate from api start and end times.
It should be an executable shortcut (see CasperJS). An obvious solution is to make it npm install-able.
Currently building a new container every time
This can be cleaned up to handle virtualbox errors better... any new install has to run ./fix-virutalbox.sh
Speedgun.io + CoreOS hosted environment will occasionally crash without any significant log messages. When I ssh into the instance and docker ps
the Status shows "Up Less than a second" and then the containers start to fire up.
Definitely a bug, because just ssh'ing and running docker ps seems to restart the containers.
When the report is running on speedgun.io, the UI polls for base64 data coming from phantom. The angular service hits http://speedgun.io/rest/performance/checkimage?uuid=??? every few seconds waiting for the next image. This data should be stored in localStorage and reused if the person who runs the report revisits speedgun.io at a later time.
Currently base64 images/screenshots or only temporarily stored per report.
Currently the description of what each API call does is embedded in the speedgun script. This should be abstracted out to the UI. It currently weighs down speedgun reports and is not flexible.
Example:
https://github.com/wesleyhales/speedgun/blob/master/core/speedgun.js#L79
It seems like Speedgun isn't in the npm registry anymore.
npm install -g speedgun
npm ERR! Darwin 14.3.0
npm ERR! argv "node" "/usr/local/bin/npm" "install" "-g" "speedgun"
npm ERR! node v0.12.5
npm ERR! npm v2.11.2
npm ERR! code E404
npm ERR! 404 Not Found: speedgun
npm ERR! 404
npm ERR! 404 'speedgun' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.
Just reporting ;)
I think like this:
The most important metrics first, making it easier for people to see the important things. Then it's just the hard part defining what's most important :)
I like that page load and perceived are in top, but then I would move up slowest and fastest assets. Then I would hide things like Unload Event Start, Redirect start, navEvents etc and make it possible to show them only if you want.
Best
Peter
During report run, there are two methods that post either perf data or base 64. These are not in sync and should ideally be ran as one.
It would be cool if the timings would be sorted per domain to be able to spot slow domains for third party
content.
So we would take the time per domain, use the median value and just list it something like this:
Slowest domains:
Best
Peter
It works, but it's time to retire and rewrite the entire backend for speedgun.io in something else. Ideas?
When I'm testing http://www.cybercom I got a resource that is 0 bytes and 0 ms. That is incredible fast!
Maybe we could just skip resources that are 0 bytes / 0 ms from the fastest resource list, because it seems in relevant?
Best
Peter
I just implemented a basic crawler here:
https://github.com/wesleyhales/speedgun/tree/spider
Testing with www.facebook.com gives data:font/opentype;base64,T1RUTwAJAIAAAwAQQ0....
as fastest resources.
Currently I am abusing the material CSS classes to get what I want out of them.
We need:
Currently, any speedgun server instance has the ability to send a beacon signal to the centralized speedgun.io server hosted on digital ocean. This is an opt-in feature and it should be exposed and documented.
To initialize the beacon on a local running instance:
http://localhost:8081/rest/beacon/init
This will send a report to speedgun.io:
Speedgun.io then stores this data as an available node:
http://speedgun.io/rest/beacon/getlist <-- This should be exposed on the UI as a dropdown list. It will allow users to run speedgun in a distributed fashion across many different instances and geographic locations.
I tried to run the example that is on the README file and I got this error:
$ phantomjs --config=core/pconfig.json core/speedgun.js http://www.cnn.com -o csv --screenshot
TypeError: undefined is not an object (evaluating 'config.userAgentAliases[config.userAgent]')
phantomjs://code/speedgun.js:437 in load
phantomjs://code/speedgun.js:73 in run
I've tested for the main newspaper in Sweden: http://www.aftonbladet.se
And I didn't get any page load time:
http://speedgun.io/#?uuid=c292df23-3cc2-4d95-b243-ed66561ca5fb
When I test in Chrome the loadEventEnd is fired. Could be a bug somewhere?
Best
Peter
This is a performance site... need to dumb down the bg image or rework the style/them all together.
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'chef/centos-6.5' is up to date...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 8080 => 8081 (adapter 1)
default: 22 => 2222 (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default: Warning: Connection timeout. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Mounting shared folders...
default: /vagrant => /Users/---/development/src/speedgun/server
Failed to mount folders in Linux guest. This is usually because
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:
mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` vagrant /vagrant
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` vagrant /vagrant
Installing the vbox extensions on the centos machine doesn't help.
Both could stick with Vagrant for consistency. The direct Docker way should be reserved for advanced users.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.