Testing Google Wave Gadget outside Google Wave? - debugging

I wonder if there is a tool/framework available that supports testing Google Wave Gadgets outside Google Wave.
I know these two emulators (1 and 2), but I still always would have to upload my gadget for every debugging run.
I am looking for a tool that displays the current state, allows to modify the state and to send the state back to the gadget.
Any ideas?

The two emulators you mentioned can be used in the way you described. You just have to download one and run it on a local web server. Then you can develop your gadgets offline, without having to upload them every time you want to test.
Here are links to the source for the gadget emulators:
http://github.com/vidarh/wave-gadget-emulator
http://github.com/avital/google-wave-gadget-emulator

There is a Google Wave Gadget API implementation available for Node.js, and this can be run as a standalone service supporting Wave Gadgets running in any web application.
https://github.com/scottbw/wave-node

It isn't 100% easy, but I would recommend setting up your own server on your local machine, for the moment, until someone figures out how or takes the time to wrap such a server into a usable one-click-install tool.
http://code.google.com/p/wave-protocol/wiki/Installation

For what it's worth- Google wave has been open sourced into Apache's WaveInABox: http://www.waveprotocol.org/wave-in-a-box

Related

Is there anyway to integrate facebook into a Unity desktop application?

I'm developing a Unity's cross-platform application (Win, macOS, Android, iOs) and I wanted to include a facebook login so users could sign up via Facebook. I've already been able to do it in Android and iOS platforms through the following link:
https://developers.facebook.com/docs/unity/gettingstarted
This method doesn't work for standalone desktop platforms. I've been looking for a solution to the problem, but I haven't found anything.
Does anyone know a solution or a plugin for Unity that can include Facebook Login for Desktop Standalone platforms?
Facebook still does not have any way to use its official SDK in Standalone builds (it's 2019 now, and posts requesting that feature can be seen dated as far as 2013...)
The options (as of now) are:
1. Manually build Facebook login flow
(that requires server-side support and opening a webpage outside of Unity) - see here:
https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow/
Pros:
Cheapest option if you can self-host executables
Good start option
Some major gamedev companies went for such solution (even Blizzard!)
Cons:
You will need to minimalize Unity game to log-in
Requires some time to code and test properly
Note:
Tested in one of my own games;
2. Use third-party provider
(like Google's Firebase)
Pros:
You have it up and running in matter of minutes
You can integrate other login methods
Cons:
You are locked in with that provider
It costs you on per-user base
Note:
Also tested in some other of my games;
There are several urban legends that Firebase is way more costly then it promises; See here ("How we spent 30k USD in Firebase in less than 72 hours") and here ("Unexpected monthly bill of more than 1.000€")
3. Embed Chromium directly into Unity, use in-browser authentication
You will need either free and open software chromium framework (here or here), or if you need premium support - this plugin.
Then you must follow this tutorial:
https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow/
But this time - using embedded browser, which does not requires external server.
Pros:
No recurring paymants
Does not take your users away from your game
Cons:
This is treated as new browser for user; Cookies, stored session, etc. will not be available
Let me stress that out again: users will have to explicitly login to Facebook, without their favorite password managers
Still need some time to code and test propertly
Note:
I did NOT throughtly tested that. Use at your own risk - I would actually recomend either 1. or 2.

Can I check if a Windows process is running from a Google Chrome extension?

I'm trying to develop a server-side tracker for a video game that runs against an API to update the player's performance, but I only want to track the player's activity when he is playing the game. Since there's no way to know that just from the API, nor any other service, I'm looking at other ways to tell the tracker to update when the user is running the game's process.
I'm trying to rule out desktop applications and a Chrome extension seems like a good compromise. However, I'm aware of the security implications that this has and I know Chrome has some concerns on browser-OS communications. Is there a way to safely achieve this in the scope of a Chrome extension?
Thanks.
Chrome extensions API does not provide any methods to get the process info other than that of the browser process. You can try using the native client as a part of the chrome extension.

Tango needs google web services?

our project is in China, where all google services are blocked.
does Tango need any google services, or is it self-sufficient and is able to operate on its own? if it needs services, it is basically useless to our case.
Basically,
Normal Project Tango device's features didn't need online google services.
MotionTracking, AreaLearning and Depth should do well.
you can download the sample apps sources code on here
like c samples :
https://developers.google.com/project-tango/apis/c/
try that, it won't need online google services.
But there maybe some apps which integrated Tango feature with other google services do.
Unfortunately, since Google Services is blocked in China, you can't get the BSP OTA and Play store apps updated, which means at some point you can't get new features and bugs fixed on your devices.
If you need further help. better contact project-tango-help#google.com.
AFAIK it does not. I can confirm that I've been using my devkit offline most of the time.
More generally, the core Tango services are all hosted on the device, and they were preinstalled on my devkit when I got it about 3 weeks ago. However, updates to these services come OTA via Google Play.
The three services Tango provides are motion tracking, area learning and depth sensing. Depth sensing is provided directly by the sensors, and motion tracking obviously cant be done online in a performant way. AFAIK, area learning too happens offline, but you can find more info here.

DJI Phantom API or hackable procedure

Maybe I have't looked hard enough, but I spent yesterday googling for a bit and found no relevant projects on hacking the DJI Phantom Drone in order to create new coordinating apps. This is besides the app for coordination DJI currently uses for their drone. I'm trying to see if there's a way to communicate with the Drone with a specific protocol in order to accept a set of procedures.
Any help would be awesome,
Thanks.
Great News for you and all us Droneys! DJI has launched their SDK since you asked this question. They released it last November and you can now apply for a license and write your own apps for the Phantom2 Vision+ using their SDK.
Check it out at https://developer.dji.com/
I am already building a project using the SDK - you can follow my progress on my blog / product site. I will also try to update it with good DJI related development links and tips.
This post is old but I think it is good to leave a foot print for others :)
There is this new company called NVdrones, which created a peace of hardware that you can attach to any drone (you need physical access to the flight controller), and once you do that you can use their SDK (Arduino, Java, Android and Javascript) to write your app without the need of hacking, soldering or anything else. It is just plug and play.
Another benefit is that you are not locked with a specific drone (DJI SDK or 3DRobotics SDK), you can use the board on anything you want. Which gives lots of flexibility.
The developer site is http://developers.NVdrones.com
Hope this helps.
This is a great topic!
You could check how to hack your copter here: https://github.com/flyver/Flyver-SDK/wiki/-2.2--How-To:-Flyver-Hack-a-Copter
By opening the drone, taking out the original controller, soldering a few wires and sticking an Android phone to it, you will have the ability to program your Phantom in a modern manner with an open source SDK and application based development. This means that you could add computer vision to it, automation or additional hardware. You could also use smartphones, web and other interactive devices for remote controlling the copter instead of using the standard remote controls.
The Phantom, however, is offcenter balanced due to the fact that most people use gimbal with it. Without the gimbal is a lot less stable from my experiments so you will have to put some extra work in center balancing it.

Using the browser for desktop UI

How can I use the browser as a UI for a desktop app? The ways I have come up with so far are...
Use all HTML/Javascript. Problem: Can't access filesystem or just about anything else.
Run a local webserver while the application is in use. Problem: How do I kill it when the user is done? My users are not technical enough to Ctrl+C.
Embed a browser component in a regular GUI. Problem: Embedded browser components tend to be glitchy at best. The support for Javascript/CSS is never as good as it is in a real browser.
...?
The ideal solution would work with any technology. I know there are options like writing Firefox extensions, but I want to have complete freedom in the backend technology and browser independence.
Please note that if you choose to run a local webserver, you're creating a security risk.
Any webpage running on the same machine that knows about your app can send requests to your server using Javascript, and you have no simple and reliable way of knowing what the request came from. (Don't trust the referer header)
Google Desktop, which uses a similar approach, has had several real-world vulnerabilities that allow any webpage to read any file on disk.
There are several ways to protect against this; I would recommend requiring each request to have a auth key which is randomly generated per-machine (and expires at some point), which you could put in the source for the actual pages. XHR protection would prevent malicious websites from reading the auth key, rendering them powerless.
If you are looking for a python Web Server with a Kill link, you could always check CherryPy.
import webbrowser
import cherrypy
import threading
class MyApp:
""" Sample request handler class. """
#cherrypy.expose
def index(self):
return """<html><head><title>An example application</title></head>
<body>
<h1>This is my sample application</h1>
Put the content here...
<hr>
Quit
</body></html>"""
#cherrypy.expose
def exit(self):
raise SystemExit(0)
class MyBGThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.start()
def run(self):
cherrypy.tree.mount(MyApp())
cherrypy.quickstart()
myThread = MyBGThread()
webbrowser.open("http://127.0.0.1:8080")
This code is based on the sample from the SingleClickAndRun on the cherrypy website:
http://tools.cherrypy.org/wiki/SingleClickAndRun
Note than in a normal WebApp you would probably use a templating engine and load templates from methods like main.
Something that would be nice would be to embbed a browser control in a gui window and close the server when the app exits.
For the security, you could possibly add an authentication scheme. There are a few that are supported by cherrypy, but you possibly could implement your own too, using tool modules.
I am looking to do the exact same thing (desktop app that uses an up to date HTML5 / CSS3 browser as the desktop app's GUI), only with Ruby (various reasons why I decided to work with Ruby). Its amazing the number of cross platform libraries people have come up with. But yet, few to no one, has done any work on trying to get a web browser to be a desktop app UI. Cross platform issue... well I won't say solved, but I will say several steps in the right direction taken.
To me this would be perfect with the new HTML5 / CSS3 standards coming out. I know it can be done with a web server running locally.
Another way might be like how the guys from “280 North” are doing what they do. They developed Objective-J (an extension of regular JavaScript that mimics how Objective-C extends regular C) and Cappuccino (the Objective-J equivalent of Objective-C’s Cocoa frame work on the MAC). They also developed “Atlas” which is 280 North’s version of Apple’s “Interface Builder” from Xcode, for their Objective-J and Cappuccino frameworks to build Internet Applications. Atlas is actually a Cappuccino web app running on your desktop as a desktop app. In this case they use the Narwhal… a cross platform, general purpose, JavaScript platform for developing JS apps outside of the browser (basically a specialized web server).
If any one can come up with an idea to make “Browser, direct connect to Desktop App” work without the need of a web server co-existing and still get to manipulate the local FS, I to would be very interested… Hmmm... Now that I think about it, I wonder if the new Google Chrome project “Native Client” can be used to do that. NaCL is much like Active X except you are not limited to a windows platform (but will be limited to the Google Chrome browser, at least for now). Only there is added security via Sandboxing, but you can manipulate the local FS… The more I think about it, the more I am beginning to suspect that it can be done.
Any thoughts?
In Windows, you could embed the IE ActiveX control, which uses the same rendering engine as IE. (That's a plus and a minus) You can set the ScriptObject property in your host code and access it in Javascript as window.external to do things that Javascript cannot do.
If you run a local webserver, you could have an exit link in the app that kills the websever.
You did not mention the OS you will need to target. But you might be able to create a program statared web server, then launced the default browser. Wait until the browser is terminated by the user and then shut down the web server.
So for example on windows you can use CreateProcess() to spawn the process
then MsgWaitForMultipleObjects() to wait until it is finished executing.
HTML Applications (HTA, for short) have been around for a while. You can read all about them here. They are basically HTML and Javascript with some extra options to create a window and with access to the local file system. They seem to be exactly what you want. It is Microsoft technology, so this will only work with IE on Windows systems. I've successfully used this as a front-end for a CD-ROM which was used to distribute software to first year students
Another option would be to use Adobe Air. I'm not all that familiar with the technology, but it seems to provide a framework to deploy web pages as desktop applications. I can't post a second link as a guest, but just google it and you'll find it soon enough.
Today, in 2023, you can simply use any installed web browser as GUI using the WebUI library.

Resources