Action View templates can be written in three ways. If the template file has a .erb (or .rhtml) extension then it uses a mixture of ERb (included in Ruby) and HTML. If the template file has a .builder (or .rxml) extension then Jim Weirich‘s Builder::XmlMarkup library is used. If the template file has a .rjs extension then it will use ActionView::Helpers::PrototypeHelper::JavaScriptGenerator.
You trigger ERb by using embeddings such as <% %>, <% -%>, and <%= %>. The <%= %> tag set is used when you want output. Consider the following loop for names:
Names of all the people <% for person in @people %> Name: <%= person.name %>
 <% end %>
The loop is setup in regular embedding tags <% %> and the name is written using the output embedding tag <%= %>. Note that this is not just a usage suggestion. Regular output functions like print or puts won‘t work with ERb templates. So this would be wrong:
<%# WRONG %> Hi, Mr. <% puts "Frodo" %>
If you absolutely must write from within a function use concat.
<%- and -%> suppress leading and trailing whitespace, including the trailing newline, and can be used interchangeably with <% and %>.
Using sub templates allows you to sidestep tedious replication and extract common display structures in shared templates. The classic example is the use of a header and footer (even though the Action Pack-way would be to use Layouts):
<%= render "shared/header" %> Something really specific and terrific <%= render "shared/footer" %>
As you see, we use the output embeddings for the render methods. The render call itself will just return a string holding the result of the rendering. The output embedding writes it to the current template.
But you don‘t have to restrict yourself to static includes. Templates can share variables amongst themselves by using instance variables defined using the regular embedding tags. Like this:
<% @page_title = "A Wonderful Hello" %> <%= render "shared/header" %>
Now the header can pick up on the @page_title variable and use it for outputting a title tag:
<title><%= @page_title %></title>
You can pass local variables to sub templates by using a hash with the variable names as keys and the objects as values:
<%= render "shared/header", { :headline => "Welcome", :person => person } %>
These can now be accessed in shared/header with:
Headline: <%= headline %> First name: <%= person.first_name %>
If you need to find out whether a certain local variable has been assigned a value in a particular render call, you need to use the following pattern:
<% if local_assigns.has_key? :headline %> Headline: <%= headline %> <% end %>
Testing using defined? headline will not work. This is an implementation restriction.
By default, Rails will compile each template to a method in order to render it. When you alter a template, Rails will check the file‘s modification time and recompile it.
Builder templates are a more programmatic alternative to ERb. They are especially useful for generating XML content. An XmlMarkup object named xml is automatically made available to templates with a .builder extension.
Here are some basic examples:
xml.em("emphasized") # => emphasized xml.em { xml.b("emph & bold") } # => emph & bold xml.a("A Link", "href"=>"http://onestepback.org") # => A Link xml.target("name"=>"compile", "option"=>"fast") # => <target option="fast" name="compile"\> # NOTE: order of attributes is not specified.
Any method with a block will be treated as an XML markup tag with nested markup in the block. For example, the following:
xml.div {<EMAIL_ADDRESS><EMAIL_ADDRESS>}
would produce something like:

David Heinemeier Hansson

A product of Danish Design during the Winter of '79...

A full-length RSS example actually used on Basecamp:
xml.rss("version" => "2.0", "xmlns:dc" => "http://purl.org/dc/elements/1.1/") do xml.channel do xml.title(@feed_title) xml.link(@url) xml.description "Basecamp: Recent items" xml.language "en-us" xml.ttl "40" for item in @recent_items xml.item do xml.title(item_title(item)) xml.description(item_description(item)) if item_description(item) xml.pubDate(item_pubDate(item<EMAIL_ADDRESS>+ @recent_items.url(item<EMAIL_ADDRESS>+ @recent_items.url(item)) xml.tag!("dc:creator", item.author_name) if item_has_creator?(item) end end end end
More builder documentation can be found at builder.rubyforge.org.
JavaScriptGenerator templates end in .rjs. Unlike conventional templates which are used to render the results of an action, these templates generate instructions on how to modify an already rendered page. This makes it easy to modify multiple elements on your page in one declarative Ajax response. Actions with these templates are called in the background with Ajax and make updates to the page where the request originated from.
An instance of the JavaScriptGenerator object named page is automatically made available to your template, which is implicitly wrapped in an ActionView::Helpers::PrototypeHelper#update_page block.
When an .rjs action is called with link_to_remote, the generated JavaScript is automatically evaluated. Example:
link_to_remote :url => {:action => 'delete'}
The subsequently rendered delete.rjs might look like:
page.replace_html 'sidebar', :partial => 'sidebar' page.remove<EMAIL_ADDRESS>page.visual_effect :highlight, 'user-list'
This refreshes the sidebar, removes a person element and highlights the user list.
See the ActionView::Helpers::PrototypeHelper::GeneratorMethods documentation for more details.
| assigns | [RW] | |
| base_path | [RW] | |
| helpers | [R] | |
| lookup_context | [RW] | |
| template_extension | [RW] |
# File /usr/lib/ruby/gems/1.8/gems/actionpack-3.0.0.beta4/lib/action_view/base.rb, line 203 203: def self.process_view_paths(value) 204: return value.dup if value.is_a?(PathSet) 205: ActionView::PathSet.new(Array.wrap(value)) 206: end
# File /usr/lib/ruby/gems/1.8/gems/actionpack-3.0.0.beta4/lib/action_view/base.rb, line 227 227: def controller_path 228: @controller_path ||= controller && controller.controller_path 229: end
# File /usr/lib/ruby/gems/1.8/gems/actionpack-3.0.0.beta4/lib/action_view/base.rb, line 231 231: def punctuate_body!(part) 232: flush_output_buffer 233: response.body_parts << part 234: nil 235: end


Frightened by my own future?
When the flood comes,You have no home.
birds Avian flu hits everywhere.
Oceans become acid.

Heredity gave me some animal strengths.
Anticipation
Space Memory
Learning
Vigorous Clever Skilful
Music is medicine of the mind.
End of Chapter.
Heinz Stein Super Hero.


Ke (2021) is not logarithmic
16 Feb 2022[Code]
Last week I published a blog post on whether infectiousness was a linear or logarithmic function of viral RNA count, as measured by PCR. The answer has significant implications for when people can return to school or work after an infection.
At the start of infection, viral RNA count increases exponentially, reaching about a billion copies per mL, before dropping back down to zero. If the linear model is correct, infectiousness is proportional to RNA count, which means you are only meaningfully infectious for a short period near the peak viral load. If the logarithmic model is correct, you’re meaningfully infectious with any amount of virus in your body, even trace amounts.
My blog post concluded that infectiousness is a mostly linear function of live viral count. But when it comes to observed RNA count, the relationship is intermediate between linear and logarithmic, perhaps a bit closer to linear.
After publishing my blog post, somebody sent me Ke (2021), which claims that the logarithmic model is an appropriate surrogate for infectiousness. The paper is useful and important, but I want to respond to their core claim.
The model isn’t logarithmic!
First and foremost, the actual Ke (2021) model isn’t logarithmic. I’ve reproduced their power-law model below. If anything, it’s much closer to linear than logarithmic!
The paper also presents a saturation model. While it’s less linear than the power-law model, I think it’s fair to call it midway between linear and logarithmic.
I’m not sure why Ke (2021) comes to a “logarithmic” conclusion, given that both of their models are not too far from linear. I suspect it was mostly an oversight. Covid research moves fast, and perhaps they were visualizing their data in a different way than I am.
The symptom data isn’t that convincing
Ke (2021) uses some symptom data to provide additional evidence for nonlinearity. The argument is as follows: Epidemiological evidence suggests that >30% of transmission occurs pre-symptomatically. Data from Wölfel (2020) suggests that symptom onset occurs early in the viral load curve. Under the linear model, almost all transmission would occur around the peak of infection and – using the Wölfel data – only 8% would occur pre-symptomatically. Because this is lower than the >30% observed epidemiologically, the linear model should be rejected.
I don’t want to strictly defend the linear model – I concede there is some nonlinearity. But much of Ke’s evidence from symptom data feels overstated.
First, Ke’s 8% estimate is based on an assumption of uniformly distributed contacts over time. In reality, people reduce their rate of contacts once symptoms start. The linear model should therefore predict significantly more than 8% of transmission occurs pre-symptomatically, which is more consistent with the epidemiological data. To their credit, the authors acknowledge the limitation of their assumption.
Second, the authors describe Wölfel (2020) as showing symptom onset occurs very early along the viral load curve. But this is inconsistent with many other studies, which shows that symptom onset occurs at or even after the peak of viral load. If those studies are true, the linear model would predict that upwards of 50% of infection occurs pre-symptomatically, consistent with the epidemiological data. In general, I suspect that the definition of “symptom onset” is murky, and that any conclusions based on cross-study comparisons will be fraught with uncertainty.
To summarize, the nonlinear models in Ke (2019) are important and useful; they just aren’t logarithmic! The truth is intermediate between linear and logarithmic and, if anything, may be slightly closer to linear.
[Code]


'VINDICTIVE'
Ex-Aberdeen star glassed by ex in club for kissing another woman spiked her drink with medication after he caught an STD
by Alexander LawrieA LOVE rat ex-Aberdeen footballer who was glassed by his ex for kissing another woman previously spiked her drink with medication after catching an STD.
Josh Walker, 30, subjected Lauren Dinse, 31, to “emotional and physical abuse”, according to her solicitor.
Neil Martin told the court Walker had been “vindictive” towards her and that his ex was involved in an abusive relationship with him.
It came as Dinse escaped jail for the bloody Edinburgh nightclub attack which left Walker needing 11 stitches after he was taken to hospital.
The footie had been glassed by his then partner after she spotted him in a romantic clinch in trendy club Lulu.
But Mr Martin said Dinse was “remorseful” about the attack and had been “under the influence of alcohol at the time”.
Mr Martin told the court she had spent a “harrowing” weekend in the cells following the incident.
And he added that Dinse is now seeking help from the Women’s Aid Organisation.
He said: “The narrative in the case was that the complainer Mr Walker was standing speaking to another female but what can be seen clearly [in the CCTV] is that he is kissing another female in the nightclub.
“This does not justify what she did but it adds some context. But the relationship was clearly toxic and is now over.”
Sheriff Adrian Cottam said: “The information that has come out since does not excuse your actions which could have been even worse for Mr Walker but fortunately they weren’t.”
The sheriff ordered the receptionist to be placed on an offenders supervision requirement for the next 12 months as an alternative to custody.
Previously prosecutor Alistair Millar gave a short narration to the court and said Dinse was in a relationship with Walker at the time of last December’s assault.
Mr Millar said: “This incident took place in a nightclub where the accused has witnessed the complainer speaking to another female.

The fiscal added Mr Walker’s injury was described as “a deep laceration to the head which was five centimetres in length” and required 11 stitches.
Walker recently retired from football due to a serious knee injury.
He is remembered for scoring the opening goal for Aberdeen against Bayern Munich in a UEFA Cup match at Pittodrie.
He also played in the English Premiership for Middlesbrough at just 17 and captained England at the 2009 FIFA U-20 World Cup in Egypt.
Walker also played for Watford, Bournemouth, Rotherham and Indian side Bengaluru and was captain of Scottish League Two side Edinburgh City after joining the club in 2017.


{% if object.meta.model_name == "county" %}
{% include "places/snippets/county_breadcrumbs.html" with object=object %}
{% endif %}
{% if object.meta.model_name == "province" %}
{% include "places/snippets/province_breadcrumbs.html" with object=object %}
{% endif %}
{% if object.meta.model_name == "district" %}
{% include "places/snippets/district_breadcrumbs.html" with object=object %}
{% endif %}
{% if object.meta.model_name == "division" %}
{% include "places/snippets/division_breadcrumbs.html" with object=object %}
{% endif %}
{% if object.meta.model_name == "location" %}
{% include "places/snippets/location_breadcrumbs.html" with object=object %}
{% endif %}
{% if object.meta.model_name == "sublocation" %}
{% include "places/snippets/sub_location_breadcrumbs.html" with object=object %}
{% endif %}
{% if object.meta.model_name == "schoolzone" %}
{% include "places/snippets/school_zone_breadcrumbs.html" with object=object %}
{% endif %}
{% if object.meta.model_name == "constituency" %}
{% include "places/snippets/constituency_breadcrumbs.html" with object=object %}
{% endif %}


There are no units to display for this property. Try adjusting your filters to view units. If you beleive you are receiving this message in error, please contact your site webmaster.
| Number | No Of Bedrooms | Vacant? | Published? | |
|---|---|---|---|---|
| {{unit.Number}} | {{unit.NumberOfBedrooms}} | Vacant Occupied | Unpublished {{ unit.Published }} | Details Edit |


We optimize blockchain!
- recontextualize dot-com content
- leverage end-to-end relationships
- envisioneer global initiatives
- incubate leading-edge infrastructures
- streamline one-to-one e-services
- disintermediate granular channels
- harness granular e-tailers
- benchmark holistic paradigms
- unleash cutting-edge relationships
- leverage leading-edge ROI
- synthesize viral action-items
- leverage wireless technologies
- whiteboard wireless functionalities
- integrate scalable deliverables
- aggregate compelling e-markets


|
Elektra
0.8.22
|
gitresolver is a resolver that fetches from a local git repository during the get-phase and commits them back at the end of the set-phase. It operates on a temporary copy of the latest version of your file fetched from the repository. If the temporary copy modified, a new commit with the modified version will be created. Local files won't be touched.
branch
defines the branch to work on. Default: master tracking
can be either object
or head
(default). if set to object
a conflict will only occur if the file in the git repository has been updated while you were working on it. head
will cause a conflict if the HEAD
commit has been updated. pull
when present: tells the plugin to fast-forward pull the repository, fails if FF isn't possible. checkout
when present: tells the plugin to checkout the file.
Currently it only works inside existing git repositories.
kdb mount -R gitresolver /path/to/my/gitrepo/file.ini system/gittest ini shell execute/set='cd /path/to/my/gitrepo/ && git commit --amend'


I am trying to make simple changes to create small impacts. I thrive to better myself at what I do. Hard work is my strength, OCD my weakness.
Full Stack Development using Flask and Angular frameworks. Worked in the reconciliation team to design, develop a rule generation cum recommendation engine to eliminate long man hours spent to identify the rules to be used for reconciliation. My work included developing the front end and back end for the proposed solution as well as writing test cases. Learnt about TDD and Agile methodology
Understood the existing architecture of Trapyz platform and remodeled the UI using react. Became familiar with various AWS. Developed data cleansing tools to help clean data fetched from third party sources. Wrote a script to query DDB and dump into S3 buckets. This was a complex task as it involved large datasets. Various other tasks helped me learn node.js, elastic search and JSONs. I also gained an understanding of the dev-ops cycle.
Full stack web development using MongoDB and Node Express. The application has a microservice based architecture. Hosted the application across instances and containers. Made a custom orchestrator to enable dynamic load management of containers. The orchestrator serves as a reverse proxy developed in flask. It also allows configuration via XML files given the docker image.
This project focuses on handling of cloud burst at peak load with an OpenStack Middle-ware Framework, which uses default OpenStack services. I worked in the team to achieve maximal network bandwidth utilisation within and across availability zones. It suggests scaling and migration based on the traffic monitoring. Presented at ICICICT 2019 IEEE Confrence.
Developed the front end of a compiler using ply.The compiler could parse and translate to intermediate code for various constructs such as while, do-while, if, etc.
GPA: 9.15
Percentage: 96%


Any suspicious looking file will be deleted without notice
Max file size = 25mb
If you need to compress your files, this compresser works great!


HackUMBC gives you 24 hours to learn new skills, make friends, create your wildest idea, and share it with the world. Build an app, a website, a robotic arm, a game, anything.
A hackathon is a tech innovation marathon. This is where your dreams run wild. Solve a real-world problem with technology or build the next Iron Man suit.
What if I don't have a team or an idea?
No problem! You can find a team once you arrive. Most hackers arrive without a team. You will often find inspiration for ideas at the hackathon.
What if I don't code?
This is the perfect opportunity to learn something new! There will be workshops geared towards beginners and mentors to help you throughout the event.
Who can attend?
All undergraduate, graduate, and high school students are welcome!
What can I build?
Anything! Web, mobile, desktop, and hardware projects are all welcome. Projects will be judged based on creativity, technical difficulty, polish, and usefulness.
HackUMBC is free! Food, beverages, swag, workspaces, and sleeping areas will be provided. You just have to travel to the event and we will take care of the rest! :)
What should I bring?
Valid photo ID is required. Laptops, sleeping bags, and toiletries are highly recommended.
How big should teams be? Can I hack alone?
Teams should be at most four people. We highly recommend that you form a team, but solo hackers are allowed.
Can I build on past projects?
We strongly discourage building off of existing projects you've worked on. However, using third–party APIs and libraries are encouraged, as long as they're accessible by everyone.


High Tourism Season Starts at the Brisas Cobarruvias Hotel
by Rafael Quiroga ÁlvarezThe Brisas Covarrubias hotel, on the north coast of Las Tunas, opens its doors today after executing a repair and maintenance process, confirmed Elizabeth Llorente León, commercial director of that facility.
Puerto Padre, Las Tunas.- The official added that among the improvements are the replacement of refrigerators, air conditioners and solar heaters for the 180 rooms of the tourist resort.
In addition, the floor of the ranchón was changed, the kitchen was conditioned, and all the buildings and exterior areas were painted.
In this way, the workers of the "Brisas Covarrubias" are able to receive the first guests, who can make their reservations in the lobby of the hotel, said Llorente León.


×
You will be given a random number at the start of the game.
There are four crystals below. By clicking on a crystal you will add a specific amount of points to your total score.
You win the game by matching your total score to the target score. You lose the game if your total score goes above the target.
The value of each crystal is hidden from you until you click on it.
Each time the game starts, the value of each crystal will be changed.


SFAPIClient
class
SFAPIClient
Class SFAPIClient
A general purpose client for communicating with the SalesForce API. This
client only implements the base functionality for handling CRUD operations as
where as arbitrary query execution.
On construction a client will attempt to authenticate against the supplied
SalesForce endpoint immediately. An exception will be thrown if this call
is not successful. At this point the returned token is stored for later use,
and the credentials for authentication are thrown away.
The client will not attempt to re-authenticate if later API calls generate
authentication failures. If the client is left in use by a long running
process that outlives the lifetime of the access token, then this case may
occur. It is left to the consumer of the client to handle these cases.
Constants
OBJECT_API = 'sobjects'; |
|
RETRY_STATUSES = [ 400, 404, 415, 500 ]; |
|
Properties
protected Client
|
$_client |
|
|
protected string
|
$_token |
|
|
Methods
protected
|
|
__construct(Client $client, string $token)
|
SFClient constructor. |
|
public static
|
SFAPIClient |
connect(Endpoint $endpoint, Authentication $auth)
|
Constructs a new SalesForce API client with a given SalesForce API endpoint
and authentication mechanism. |
|
public static
|
SFAPIClient |
connectWith(Client $client, Authentication $auth)
|
Constructs a new SalesForce API client with a custom Http client and the
given authentication mechanism. |
|
public
|
ScopedSFAPIClient |
scope(string $objectType)
|
Constructs a new SalesForce API client that is scoped to a specific object
type. |
|
public
|
SFCreationResult |
create(string $objectType, array $data)
|
Performs a create operation for a given type. |
|
public
|
SFObjectResult |
get(string $objectType, string $id, array $fields = [], $timeout = 10)
|
Fetches a single object of a given type. |
|
public
|
BoolResult |
patch(string $objectType, string $id, array $data)
|
Updates a single object of a given type with the given id. |
|
public
|
BoolResult |
delete(string $objectType, string $id)
|
Deletes a single object of a given type with the given id. |
|
public
|
SFRecordsResult |
query(string $query)
|
Performs an arbitrary query against the SalesForce query endpoint and
returns the results. |
|
public
|
SFRecordsResult |
fullQuery(string $query)
|
Performs an multiple queries against the SalesForce query endpoint to
capture all results for a given query. |
|
public
|
string |
o(string $objectType, string $id = '')
|
Helper function for constructing a SalesForce Object REST uri. |
|
public
|
Request |
authenticatedRequest(Request $request)
|
Given an arbitrary request, returns a new request with the client stored
authentication information attached. |
|
public
|
Result |
run(Request $request)
|
Executes an arbitrary request against the SalesForce API |
|
protected
|
mixed |
_send(Request $request)
|
No description
|
|
Details
__construct()
protected __construct(Client $client, string $token)
Parameters
Client |
$client |
|
string |
$token |
|
Constructs a new SalesForce API client with a given SalesForce API endpoint
and authentication mechanism.
Parameters
Endpoint |
$endpoint |
SalesForce endpoint to make calls against |
Authentication |
$auth |
SalesForce authentication mechanism |
Return Value
Exceptions
Constructs a new SalesForce API client with a custom Http client and the
given authentication mechanism.
It is expected that the caller has correctly configured the Http client
ahead of time with the appropriate
SalesForce base endpoint url.
$auth = new PasswordAuth(
'key',
'secret',
'user',
'pass'
);
$client = new Client([
'base_uri' => 'https://my.endpoint.salesforce.com/services/data/v12.3/'
]);
$sfClient = SFAPIClient::connectWith($client, $auth);
Parameters
Client |
$client |
Http client that will be used by the SFAPIClient to communicate with the SalesForce API |
Authentication |
$auth |
SalesForce authentication mechanism |
Return Value
Exceptions
Constructs a new SalesForce API client that is scoped to a specific object
type.
Note that this re-uses the Http client of the SalesForce API client
that was used to create the scoped client. Object types passed to the
method are not validated in any way.
$contacts = $client->scope('Contact');
Parameters
string |
$objectType |
SalesForce object type to create a client for |
Return Value
Performs a create operation for a given type.
Parameters
string |
$objectType |
SalesForce object type to create |
array |
$data |
Field data to create the object with |
Return Value
get()
public SFObjectResult get(string $objectType, string $id, array $fields = [], $timeout = 10)
Fetches a single object of a given type.
The optional $fields
argument may be used to restrict the fields that
are returned. By default all fields are returned.
Parameters
string |
$objectType |
|
string |
$id |
|
array |
$fields |
|
|
$timeout |
|
Return Value
Exceptions
patch()
public BoolResult patch(string $objectType, string $id, array $data)
Updates a single object of a given type with the given id.
Parameters
string |
$objectType |
SalesForce object type to update |
string |
$id |
SalesForce id type to update |
array |
$data |
Field data to update the object with |
Return Value
delete()
public BoolResult delete(string $objectType, string $id)
Deletes a single object of a given type with the given id.
Parameters
string |
$objectType |
SalesForce object type to delete |
string |
$id |
SalesForce id type to delete |
Return Value
Performs an arbitrary query against the SalesForce query endpoint and
returns the results.
The results returned may not represent all of the objects in SalesForce
that match the given query. Records up to the limit set by SalesForce are
returned.
This method runs the provided query as-is and does not perform validation
or sanitizion. Consumers of the client should handle these operations prior
to passing the query to the client.
Parameters
string |
$query |
A SOQL query to run |
Return Value
Performs an multiple queries against the SalesForce query endpoint to
capture all results for a given query.
This method utilizies the built in SalesForce query response pagination and
should reflect the behavior of following the next page urls.
If any of the requests fail, the entire query attempt will fail and will
return the erro of the failure.
This method runs the provided query as-is and does not perform validation
or sanitizion. Consumers of the client should handle these operations prior
to passing the query to the client.
Parameters
string |
$query |
A SOQL query to run |
Return Value
o()
public string o(string $objectType, string $id = '')
Helper function for constructing a SalesForce Object REST uri.
Parameters
string |
$objectType |
|
string |
$id |
|
Return Value
authenticatedRequest()
public Request authenticatedRequest(Request $request)
Given an arbitrary request, returns a new request with the client stored
authentication information attached.
Parameters
Return Value
run()
public Result run(Request $request)
Executes an arbitrary request against the SalesForce API
Parameters
Return Value
_send()
protected mixed _send(Request $request)
Parameters
Return Value
Exceptions
Source code
<?php
namespace SFClient\SalesForce;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;
use GuzzleHttp\Psr7\Request;
use function SFClient\ex_json_decode;
use function SFClient\ex_json_encode;
use SFClient\Result\BoolResult;
use SFClient\Result\SFCreationResult;
use SFClient\Result\SFObjectResult;
use SFClient\Result\SFRecordsResult;
use SFClient\SalesForce\SFCreation;
use SFClient\SalesForce\SFRecords;
use SFClient\SalesForce\SFObject;
use SFClient\Auth\Authentication;
use SFClient\Endpoint\Endpoint;
use SFClient\Exceptions\FailedToAuthenticate;
use SFClient\Result\Result;
/**
* Class SFAPIClient
*
* A general purpose client for communicating with the SalesForce API. This
* client only implements the base functionality for handling CRUD operations as
* where as arbitrary query execution.
*
* On construction a client will attempt to authenticate against the supplied
* SalesForce endpoint immediately. An exception will be thrown if this call
* is not successful. At this point the returned token is stored for later use,
* and the credentials for authentication are thrown away.
*
* The client will not attempt to re-authenticate if later API calls generate
* authentication failures. If the client is left in use by a long running
* process that outlives the lifetime of the access token, then this case may
* occur. It is left to the consumer of the client to handle these cases.
*
* @package SFClient\SalesForce
*/
class SFAPIClient {
const OBJECT_API = 'sobjects';
const RETRY_STATUSES = [ 400, 404, 415, 500 ];
/**
* @var Client
*/
protected $_client;
/**
* @var string
*/
protected $_token;
/**
* SFClient constructor.
* @param Client $client
* @param string $token
*/
protected function __construct(Client $client, string $token) {
$this->_client = $client;
$this->_token = $token;
}
/**
* Constructs a new SalesForce API client with a given SalesForce API endpoint
* and authentication mechanism.
*
* @param Endpoint $endpoint SalesForce endpoint to make calls against
* @param Authentication $auth SalesForce authentication mechanism
* @return SFAPIClient
* @throws FailedToAuthenticate
* @throws \GuzzleHttp\Exception\GuzzleException
*/
public static function connect(Endpoint $endpoint, Authentication $auth): SFAPIClient {
$client = new Client([
'base_uri' => $endpoint->getUrl()
]);
return static::connectWith($client, $auth);
}
/**
* Constructs a new SalesForce API client with a custom Http client and the
* given authentication mechanism.
*
* It is expected that the caller has correctly configured the Http client
* ahead of time with the appropriate
* SalesForce base endpoint url.
* ```php
* $auth = new PasswordAuth(
* 'key',
* 'secret',
* 'user',
* 'pass'
* );
*
* $client = new Client([
* 'base_uri' => 'https://my.endpoint.salesforce.com/services/data/v12.3/'
* ]);
*
* $sfClient = SFAPIClient::connectWith($client, $auth);
* ```
*
* @param Client $client Http client that will be used by the SFAPIClient to communicate with the SalesForce API
* @param Authentication $auth SalesForce authentication mechanism
* @return SFAPIClient
* @throws FailedToAuthenticate
* @throws \GuzzleHttp\Exception\GuzzleException
*/
public static function connectWith(Client $client, Authentication $auth): SFAPIClient {
$token = $auth->getTokenFromResponse(
$client->send($auth->getTokenRequest())
);
if ($token === null) {
throw new FailedToAuthenticate();
}
return new SFAPIClient(
$client,
$token
);
}
/**
* Constructs a new SalesForce API client that is scoped to a specific object
* type.
*
* Note that this re-uses the Http client of the SalesForce API client
* that was used to create the scoped client. Object types passed to the
* method are not validated in any way.
* ```php
* $contacts = $client->scope('Contact');
* ```
*
* @param string $objectType SalesForce object type to create a client for
* @return ScopedSFAPIClient
*/
public function scope(string $objectType): ScopedSFAPIClient {
return new ScopedSFAPIClient($this, $objectType);
}
/**
* Performs a create operation for a given type.
*
* @param string $objectType SalesForce object type to create
* @param array $data Field data to create the object with
* @return SFCreationResult
*/
public function create(string $objectType, array $data): SFCreationResult {
$result = $this->run(
new Request(
'POST',
$this->o($objectType, ''),
['content-type' => 'application/json'],
ex_json_encode($data)
)
);
if ($result->isError()) {
return SFCreationResult::err($result->getErr());
}
$response = $result->value();
if ($response && $response instanceof \stdClass) {
return SFCreationResult::ok(new SFCreation($response));
}
return SFCreationResult::err(new \Exception('Failed to handle create response'));
}
/**
* Fetches a single object of a given type.
*
* The optional `$fields` argument may be used to restrict the fields that
* are returned. By default all fields are returned.
*
* @param string $objectType SalesForce object type to query for
* @param string $id SalesForce object id to query for
* @param array $fields SalesForce fields to return
* @return SFObjectResult
* @throws \Exception
*/
public function get(string $objectType, string $id, array $fields = [], $timeout = 10): SFObjectResult {
$fieldQuery = empty($fields) ? '' : '?fields=' . implode(',', $fields);
$result = $this->run(new Request('GET', $this->o($objectType, $id) . $fieldQuery));
if ($result->isError()) {
$error = $result->getErr();
if ($error instanceof RequestException && $error->getResponse()) {
$errorcode = $error->getResponse()->getStatusCode();
if (in_array($errorcode, self::RETRY_STATUSES) && $timeout < 1000) {
usleep($timeout);
return $this->get($objectType, $id, $fields, $timeout * 10);
} elseif ($errorcode === 404) {
return SFObjectResult::ok(null);
}
}
return SFObjectResult::err($result->getErr());
}
$response = $result->value();
if ($response && $response instanceof \stdClass) {
return SFObjectResult::ok(new SFObject($response));
}
return SFObjectResult::err(new \Exception('Failed to handle get response'));
}
/**
* Updates a single object of a given type with the given id.
*
* @param string $objectType SalesForce object type to update
* @param string $id SalesForce id type to update
* @param array $data Field data to update the object with
* @return BoolResult
*/
public function patch(string $objectType, string $id, array $data): BoolResult {
$result = $this->run(
new Request(
'PATCH',
$this->o($objectType, $id),
['content-type' => 'application/json'],
ex_json_encode($data)
)
);
if ($result->isError()) {
return BoolResult::err($result->getErr());
}
if ($result->value() === null) {
return BoolResult::ok(true);
}
return BoolResult::ok(false);
}
/**
* Deletes a single object of a given type with the given id.
*
* @param string $objectType SalesForce object type to delete
* @param string $id SalesForce id type to delete
* @return BoolResult
*/
public function delete(string $objectType, string $id): BoolResult {
$result = $this->run(
new Request(
'PATCH',
$this->o($objectType, $id)
)
);
if ($result->isError()) {
return BoolResult::err($result->getErr());
}
if ($result->value() === null) {
return BoolResult::ok(true);
}
return BoolResult::ok(false);
}
/**
* Performs an arbitrary query against the SalesForce query endpoint and
* returns the results.
*
* The results returned may not represent all of the objects in SalesForce
* that match the given query. Records up to the limit set by SalesForce are
* returned.
*
* This method runs the provided query as-is and does not perform validation
* or sanitizion. Consumers of the client should handle these operations prior
* to passing the query to the client.
*
* @param string $query A SOQL query to run
* @return SFRecordsResult
*/
public function query(string $query): SFRecordsResult {
$result = $this->run(new Request('GET', 'query?q=' . urlencode($query)));
if ($result->isError()) {
return SFRecordsResult::err($result->getErr());
}
$response = $result->value();
if ($response && $response instanceof \stdClass) {
return SFRecordsResult::ok(new SFRecords($response));
}
return SFRecordsResult::err(new \Exception('Failed to handle query response'));
}
/**
* Performs an multiple queries against the SalesForce query endpoint to
* capture all results for a given query.
*
* This method utilizies the built in SalesForce query response pagination and
* should reflect the behavior of following the next page urls.
*
* If any of the requests fail, the entire query attempt will fail and will
* return the erro of the failure.
*
* This method runs the provided query as-is and does not perform validation
* or sanitizion. Consumers of the client should handle these operations prior
* to passing the query to the client.
*
* @param string $query A SOQL query to run
* @return SFRecordsResult
*/
public function fullQuery(string $query): SFRecordsResult {
$completeRecords = new \stdClass();
$completeRecords->totalSize = 0;
$completeRecords->done = true;
$completeRecords->records = [];
$request = new Request('GET', 'query?q=' . urlencode($query));
do {
$result = $this->run($request);
try {
$records = new SFRecords($result->value());
$completeRecords->totalSize = $records->getTotal();
$completeRecords->records = array_merge($completeRecords->records, $records->getRecordsRaw());
if ($records->getNextRecordsUrl()) {
$request = new Request(
'GET',
substr($records->getNextRecordsUrl(), strpos($records->getNextRecordsUrl(), "query"))
);
} else {
$request = null;
}
} catch (\Exception $e) {
return SFRecordsResult::err($e);
}
} while ($records->hasMore() && $request);
return SFRecordsResult::ok(new SFRecords($completeRecords));
}
/**
* Helper function for constructing a SalesForce Object REST uri.
*
* @param string $objectType
* @param string $id
* @return string
* @internal
*/
public function o(string $objectType, string $id = ''): string {
return self::OBJECT_API . "/{$objectType}" . ($id ? "/${id}" : '');
}
/**
* Given an arbitrary request, returns a new request with the client stored
* authentication information attached.
*
* @param Request $request
* @return Request
* @internal
*/
public function authenticatedRequest(Request $request): Request {
/**
* withAddedHeader belongs to MessageTrait. PHPDoc to hint the returned
* value is of the same type as the initial value.
*
* @var Request $req
*/
$req = $request->withAddedHeader('Authorization', "Bearer {$this->_token}");
return $req;
}
/**
* Executes an arbitrary request against the SalesForce API
*
* @param Request $request
* @return Result
* @internal
*/
public function run(Request $request): Result {
try {
return Result::ok($this->_send(
$this->authenticatedRequest($request)
));
} catch (\Exception $e) {
return Result::err($e);
}
}
/**
* @param Request $request
* @return mixed
* @throws \GuzzleHttp\Exception\GuzzleException
*/
protected function _send(Request $request) {
$body = $this->_client->send($request)->getBody();
if ($body && $body->getContents() === "") {
return null;
}
return ex_json_decode($body);
}
}


{{avatar(player.username, 48)}} {{player.username}}'s Stats!
Achievements
-
{% for achievement in player.achievements %}
- {{achievement}} {% else %}
- Nothing yet! {% endfor %}
Kills
-
{% for entity, count in player.kills %}
- {{count}} {{entity}} {% else %}
- Nothing yet! {% endfor %}
Killed By
-
{% for entity, count in player.killed_by %}
- {{count}} {{entity}} {% else %}
- Nothing yet! {% endfor %}
{{player.data}}


You will not be able to broadcast until you confirm your email address, {{.User.Email}}. (Check the inbox.)
Or click here. Mail is not implemented yet.
Update
Visit gravatar.com to change it.
It's at the end of the "Broadcast" URL. Think it might have been compromised?
Get a new token


Individual Tabs can return false when a "beforeclose" event is triggered, causing that tab not to close. This test demonstrates that functionality on the very last tab in the tabset.
This is just a regular tab.
This tab can be dismissed at all times.
This tab returns "false" during the tab control's "beforeclose" event, which prevents this tab from ever being closed.


- gapBetweenBars - Static variable in class ca.ualberta.cs.drivr.R.attr
-
Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp
".
- GeneralPreferenceFragment() - Constructor for class ca.ualberta.cs.drivr.SettingsActivity.GeneralPreferenceFragment
-
- get(int) - Method in class ca.ualberta.cs.drivr.DriversList
-
Get a driver at an index.
- get() - Method in class ca.ualberta.cs.drivr.DriversListTest
-
- getAddress() - Method in class ca.ualberta.cs.drivr.ConcretePlace
-
Get the address of a place.
- getAllOpenRequests() - Method in class ca.ualberta.cs.drivr.ElasticSearch
-
Here, all open requests are gotten and put into offlineOpenRequests.
- getAndSetEmail() - Method in class ca.ualberta.cs.drivr.ProfileControllerTest
-
- getAndSetFareString() - Method in class ca.ualberta.cs.drivr.RequestTest
-
- getAndSetName() - Method in class ca.ualberta.cs.drivr.ProfileControllerTest
-
- getAndSetPhoneNumber() - Method in class ca.ualberta.cs.drivr.ProfileControllerTest
-
- getAndSetRequestsList() - Method in class ca.ualberta.cs.drivr.UserManagerTest
-
- getAndSetUser() - Method in class ca.ualberta.cs.drivr.UserManagerTest
-
- getAndSetUserMode() - Method in class ca.ualberta.cs.drivr.UserManagerTest
-
- getAndSetUsername() - Method in class ca.ualberta.cs.drivr.ProfileControllerTest
-
- getAttributions() - Method in class ca.ualberta.cs.drivr.ConcretePlace
-
Get the attributions to be shown for a place.
- getById(String) - Method in class ca.ualberta.cs.drivr.RequestsList
-
Gets a request by the ID.
- getByStatus(RequestState) - Method in class ca.ualberta.cs.drivr.DriversList
-
From this collection, creates a new collection of drivers with a given status.
- getByStatus() - Method in class ca.ualberta.cs.drivr.DriversListTest
-
- getConfirmedDriverOrDefault(Driver) - Method in class ca.ualberta.cs.drivr.DriversList
-
Gets the confirmed driver if it exists, otherwise return the default value.
- getConfirmedDriverOrDefault() - Method in class ca.ualberta.cs.drivr.DriversListTest
-
- getConnectivityManager() - Method in class ca.ualberta.cs.drivr.UserManager
-
Get the connectivity manager.
- getContext() - Static method in class ca.ualberta.cs.drivr.App
-
- getDate() - Method in class ca.ualberta.cs.drivr.ElasticSearchRequest
-
Get the date the request was made.
- getDate() - Method in class ca.ualberta.cs.drivr.Request
-
Get the date the request was made.
- getDescription() - Method in class ca.ualberta.cs.drivr.ElasticSearchRequest
-
Get the description of the request.
- getDescription() - Method in class ca.ualberta.cs.drivr.Request
-
Get the description.
- getDestinationAddress() - Method in class ca.ualberta.cs.drivr.ElasticSearchRequest
-
Gets the destination address of the request in ElasticSearch
- getDestinationPlace() - Method in class ca.ualberta.cs.drivr.Request
-
Get the destination location.
- getDrivers() - Method in class ca.ualberta.cs.drivr.ElasticSearchRequest
-
Return the ArrayList of driver objects.
- getDrivers() - Method in class ca.ualberta.cs.drivr.Request
-
Get the possible drivers for the request.
- getDrivers() - Method in class ca.ualberta.cs.drivr.RequestTest
-
- getDriversRatings() - Method in class ca.ualberta.cs.drivr.UpdateDriverTest
-
UC 10 ViewDriverRating
US 01.10.01 As a Rider, I want to see some summary rating of the Drivers who accepted my offers.
- getDriversWithStatus(RequestState) - Method in class ca.ualberta.cs.drivr.Request
-
Gets a list of all drivers for the request with a given status.
- getDriversWithStatus() - Method in class ca.ualberta.cs.drivr.RequestTest
-
- getDriverVehicleInfo() - Method in class ca.ualberta.cs.drivr.UpdateDriverTest
-
UC 9 ViewVehicle
US 01.09.01 As a Rider, I should see a description of the Driver's Vehicle.
- getEmail() - Method in class ca.ualberta.cs.drivr.ProfileController
-
Get the email of the current user.
- getEmail() - Method in class ca.ualberta.cs.drivr.User
-
Get the email address.
- getEnd() - Method in class ca.ualberta.cs.drivr.ElasticSearchRequest
-
Get the ending location.
- getFare() - Method in class ca.ualberta.cs.drivr.ElasticSearchRequest
-
Get the fare of the request.
- getFare() - Method in class ca.ualberta.cs.drivr.Request
-
The cost for the ride in dollars.
- getFareString() - Method in class ca.ualberta.cs.drivr.Request
-
Gets the fare as a properly formatted string (ie.
- getId() - Method in class ca.ualberta.cs.drivr.ConcretePlace
-
Get a unique ID of a place.
- getId() - Method in class ca.ualberta.cs.drivr.ElasticSearchRequest
-
Get the ID of the request in ElasticSearch
- getId() - Method in class ca.ualberta.cs.drivr.Request
-
Get the ID.
- getInstance() - Static method in class ca.ualberta.cs.drivr.MockElasticSearch
-
- getInstance() - Static method in class ca.ualberta.cs.drivr.UserManager
-
Get access to the singleton instance.
- getItemCount() - Method in class ca.ualberta.cs.drivr.DriverListAdapter
-
Returns the total number of items in the data set held by the adapter.
- getItemCount() - Method in class ca.ualberta.cs.drivr.RequestsListAdapter
-
Get the number of items in the request list.
- getKm() - Method in class ca.ualberta.cs.drivr.ElasticSearchRequest
-
Get the kilometers of the request.
- getKm() - Method in class ca.ualberta.cs.drivr.Request
-
Get the kilometers of the request.
- getLatLng() - Method in class ca.ualberta.cs.drivr.ConcretePlace
-
Get the location of a place as a latitude and longitude.
- getLocale() - Method in class ca.ualberta.cs.drivr.ConcretePlace
-
Get the locale used for te place data.
- getLocation() - Method in class ca.ualberta.cs.drivr.GPSTracker
-
Gets the User Current Location through GPS or Wifi
- getMap() - Method in class ca.ualberta.cs.drivr.MapController
-
- getMenuInflater() - Method in class ca.ualberta.cs.drivr.AppCompatPreferenceActivity
-
- getName() - Method in class ca.ualberta.cs.drivr.ConcretePlace
-
Get the name of a place.
- getName() - Method in class ca.ualberta.cs.drivr.ProfileController
-
Get the name of the current user.
- getName() - Method in class ca.ualberta.cs.drivr.User
-
Get the name.
- getOpenRequests() - Method in class ca.ualberta.cs.drivr.ElasticSearch
-
Here, all open requests are gotten from ElasticSearch by calling getAllOpenRequests() if
online and returning the stored ArrayList offlineOpenRequests.
- getOpenRequestsOffline() - Method in class ca.ualberta.cs.drivr.ElasticSearchTest
-
Tests for getting open requests offline.
- getOpenRequestsOnline() - Method in class ca.ualberta.cs.drivr.ElasticSearchTest
-
Tests to see if it can search for an open request online.
- getPhoneNumber() - Method in class ca.ualberta.cs.drivr.ConcretePlace
-
Get the phone number of a place.
- getPhoneNumber() - Method in class ca.ualberta.cs.drivr.ProfileController
-
Get the phone number of the current user.
- getPhoneNumber() - Method in class ca.ualberta.cs.drivr.User
-
Get the phone number.
- getPlaceTypes() - Method in class ca.ualberta.cs.drivr.ConcretePlace
-
Get the types of places that this place is tagged as.
- getPriceLevel() - Method in class ca.ualberta.cs.drivr.ConcretePlace
-
Get the price level of a place.
- getRating() - Method in class ca.ualberta.cs.drivr.ConcretePlace
-
Get the rating of a place.
- getRating() - Method in class ca.ualberta.cs.drivr.User
-
Get the driver's rating.
- GetRequest() - Constructor for class ca.ualberta.cs.drivr.ElasticSearchController.GetRequest
-
- getRequest(int) - Method in class ca.ualberta.cs.drivr.SearchRequestsListActivity
-
- getRequestByKeyword() - Method in class ca.ualberta.cs.drivr.SearchRequestTest
-
Tests to make sure the correct request is gotten by keyword.
- getRequestByLocation() - Method in class ca.ualberta.cs.drivr.SearchRequestTest
-
Tests to make sure the correct request is gotten for location.
- getRequests() - Method in class ca.ualberta.cs.drivr.RequestListTest
-
UC 9 User Request Status
US 02.01.01 As a User, I want to see the status of a Request that I am involved in
- getRequests() - Method in class ca.ualberta.cs.drivr.RequestsList
-
Get a the list of all requests.
- getRequests(RequestState) - Method in class ca.ualberta.cs.drivr.RequestsList
-
Get a sub-list of all requests in the list that have agiven state.
- getRequests(Context) - Method in class ca.ualberta.cs.drivr.SearchRequest
-
Here, the requests for the given parameters will be gotten by creating a new ArrayList of
requests, setting the context and connectivityManager and then going into SearchKeyword(),
SearchLocation(), filterByPrice() and filterByPriceKm() if the parameters are filled.
- getRequestsForDriver() - Method in class ca.ualberta.cs.drivr.RequestListTest
-
UC 16 Driver Views Requests
US 05.02.01 As a Driver, I want to view a list of things I have Accepted that are Pending,
each Request with its description, and locations.
- getRequestsForDriverOffline() - Method in class ca.ualberta.cs.drivr.RequestListTest
-
UC 19 View Confirmed Requests Offline
US 08.01.01 As a Driver, I want to see Requests that I already Accepted while Offline.
- getRequestsForRiderOffline() - Method in class ca.ualberta.cs.drivr.RequestListTest
-
UC 20 Rider View Requests Offline
US 08.02.01 As a Rider, I want to see Requests that I have made while Offline.
- getRequestsList() - Method in interface ca.ualberta.cs.drivr.IUserManager
-
Get the list of requests.
- getRequestsList() - Method in class ca.ualberta.cs.drivr.MockUserManager
-
- getRequestsList() - Method in class ca.ualberta.cs.drivr.SearchRequestsListActivity
-
- getRequestsList() - Method in class ca.ualberta.cs.drivr.UserManager
-
Get the list of requests.
- getRequestState() - Method in class ca.ualberta.cs.drivr.Request
-
Get the item_request sate.
- getRider() - Method in class ca.ualberta.cs.drivr.ElasticSearchRequest
-
Returns the rider username.
- getRider() - Method in class ca.ualberta.cs.drivr.Request
-
Get the rider for the item_request.
- getRider() - Method in class ca.ualberta.cs.drivr.RequestTest
-
- getRiderSourceAndDestination() - Method in class ca.ualberta.cs.drivr.RequestTest
-
UC 24 Driver View Locations
US 10.02.01 As a Driver, I want to view start and end Geo-locations on a map for a Request.
- getRoute() - Method in class ca.ualberta.cs.drivr.Request
-
Gets a description of the route to be taken.
- getSourceAddress() - Method in class ca.ualberta.cs.drivr.ElasticSearchRequest
-
Gets the source address of the request in ElasticSearch
- getSourcePlace() - Method in class ca.ualberta.cs.drivr.Request
-
Get the starting location.
- getStart() - Method in class ca.ualberta.cs.drivr.ElasticSearchRequest
-
Set the starting location.
- getStatus() - Method in class ca.ualberta.cs.drivr.Driver
-
Returns the status of driver as a RequestState
- getStatus() - Method in class ca.ualberta.cs.drivr.ElasticSearchRequest
-
Gets the status of the request.
- getSupportActionBar() - Method in class ca.ualberta.cs.drivr.AppCompatPreferenceActivity
-
- getSynced() - Method in class ca.ualberta.cs.drivr.Request
-
Get whether the request is synced online or not.
- gettingUserOffline() - Method in class ca.ualberta.cs.drivr.ElasticSearchTest
-
Test for getting a user offline.
- getTotalRatings() - Method in class ca.ualberta.cs.drivr.User
-
Get the driver's total ratings.
- getUser() - Method in class ca.ualberta.cs.drivr.ElasticSearch
-
Used solely for testing.
- GetUser() - Constructor for class ca.ualberta.cs.drivr.ElasticSearchController.GetUser
-
- getUser() - Method in interface ca.ualberta.cs.drivr.IUserManager
-
Get the current user.
- getUser() - Method in class ca.ualberta.cs.drivr.MockUserManager
-
- getUser() - Method in class ca.ualberta.cs.drivr.UserManager
-
Get the current user.
- getUserMode() - Method in interface ca.ualberta.cs.drivr.IUserManager
-
Get the current user mode.
- getUserMode() - Method in class ca.ualberta.cs.drivr.MockUserManager
-
- getUserMode() - Method in class ca.ualberta.cs.drivr.UserManager
-
Get the current user mode.
- getUsername() - Method in class ca.ualberta.cs.drivr.ProfileController
-
Get the username of the current user.
- getUsername() - Method in class ca.ualberta.cs.drivr.User
-
Get the username.
- getVehicleDescription() - Method in class ca.ualberta.cs.drivr.User
-
Get the driver's vehicle description.
- getViewport() - Method in class ca.ualberta.cs.drivr.ConcretePlace
-
Get the viewport bounds used to display this place on a map.
- getWebsiteUri() - Method in class ca.ualberta.cs.drivr.ConcretePlace
-
Get the website of a place.
- goIcon - Static variable in class ca.ualberta.cs.drivr.R.attr
-
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
- google_play_services_version - Static variable in class ca.ualberta.cs.drivr.R.integer
-
- google_wallet_classic - Static variable in class ca.ualberta.cs.drivr.R.id
-
- google_wallet_grayscale - Static variable in class ca.ualberta.cs.drivr.R.id
-
- google_wallet_monochrome - Static variable in class ca.ualberta.cs.drivr.R.id
-
- GPSTracker - Class in ca.ualberta.cs.drivr
-
Able to get User Current Location
http://stackoverflow.com/questions/1513485/how-do-i-get-the-current-gps-location-programmatically-in-android
- GPSTracker(Context) - Constructor for class ca.ualberta.cs.drivr.GPSTracker
-
Instantiate a new GPSTracker.
- grayscale - Static variable in class ca.ualberta.cs.drivr.R.id
-


| # | Model Name | Model Developer | Model Task | Model Algo | Accuracy | Sensetivity | Specifity | F-Score | AU-ROC | Clinical Implications | Safety Implications |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | DB Retino | AI4H | Detecting DB Retionopathy | Classification | 87.4% | 90.3% | 55.4% | 1 | 0.90 | Beware of False Positives | Wrong Medical Dosage |


Pixel 4 and 4 XL are up to $150 off across retailers, Amazon throws in $100 Google Wifi for free
by Karandeep SinghIn case you missed the recently concluded Black Friday and Cyber Monday extravaganza, this is your chance to grab a pretty sweet deal on Google’s latest flagship pair. Both the Pixel 4 and the 4 XL are down by $100 and $150, respectively, across major online stores. And if that wasn’t enough, Amazon is throwing in a free Google Wifi on top of these discounts.
While the Black Friday deals on the two Pixels do outshine the current discounts, the Amazon bundle makes them a decent deal, considering that a single unit of this previous-gen smart router retails at $99.
Despite being a few years old, Google Wifi continues to play nice with its follow-up — Nest Wifi. You can either create a mesh system with a combination of the two models or upgrade your existing Google Wifi network by adding the Nest Wifi router as the central unit. We also have a handy guide to help you add your Google Wifi routers to the Google Home app and enable WPA3 security.
You can grab your Pixel 4 or 4 XL through these links:
-
Pixel 4 64GB
-
Pixel 4 128GB
- Google Store $799 ($100 off)
- Amazon $799 ($100 off with free Google Wifi)
- Best Buy $799.99 ($100 off)
- B&H $799 ($100 off)
- Abt $799 ($100 off)
-
Pixel 4 XL 64 GB
-
Pixel 4 XL 128GB
- Google Store $849 ($150 off)
- Amazon $849 ($150 off with free Google Wifi)
- Best Buy $749.99 ($150 off)
- B&H $849 ($150 off)
- Abt $849 ($150 off)


abstract class AbstractFilter<T, FilterType : Filter<T>> : Filter<T>
An abstract base class for all filters.
T
- The type of the items, the filter applies to
FilterType
- The type of the filter
AbstractFilter(predicate: Predicate<T>, parent: FilterType? = null)
An abstract base class for all filters. |
val parent: FilterType?
The parent of the filter. When applied to an item, all parents of the filter are tested |
|
val predicate: Predicate<T>
The predicate that should be used to test items |
class AssociationRuleFilter : AbstractFilter<AssociationRule<*>, AssociationRuleFilter>
A filter, which applies to association rules. |
|
class ItemSetFilter : AbstractFilter<ItemSet<*>, ItemSetFilter>
A filter, which applies to item sets. |


{# Displays each mode of the benchmark and its progess in the inner loop, or if completed,
the modes benchmark result#}
{% if mode == "1" %}
Mode 1 - First Party Only Tracking
{{ progress }}%
{% endif %}
{% if user.first_party_test_result == "SUCCESS!" %}
Mode 1 - First Party Only Tracking
Success! First Party sites are able to track you via their own cookies
{% endif %}
{% if user.first_party_test_result == "FAILURE!" %}
Mode 1 - First Party Only Tracking
Failure! First Party sites are not able to track you via their own cookies
{% endif %}
{% if mode == "2" %}
Mode 2 - Third Party Single Cookie Tracking
{{ progress }}%
{% endif %}
{% if user.third_party_test_result == "SUCCESS!" %}
Mode 2 - Third Party Single Cookie Tracking
Success! Third Party sites are able to track you via their cookies between first party domains
{% endif %}
{% if user.third_party_test_result == "FAILURE!" %}
Mode 2 - Third Party Single Cookie Tracking
Failure! Third Party sites are not able to track you via their cookies between first party domains
{% endif %}
{% if mode == "3" %}
Mode 3 - Third Party Split Cookie Tracking
{{ progress }}%
{% endif %}
{% if user.third_party_split_result == "SUCCESS!" %}
Mode 3 - Third Party Split Cookie Tracking
Success! A Third Party Host-Slave domain set up is able to track you via their cookies between first party domains
{% endif %}
{% if user.third_party_split_result == "FAILURE!" %}
Mode 3 - Third Party Split Cookie Tracking
Failure! A Third Party Host-Slave domain set up is not able to track you via their cookies between first party domains
{% endif %}
{% if mode == "4" %}
Mode 4 - Third Party Chained Cookie Tracking
{{ progress }}%
{% endif %}
{% if user.third_party_split_chain_result == "SUCCESS!" %}
Mode 4 - Third Party Chained Cookie Tracking
Success! A Third Party chained domain set up is able to track you via their cookies between first party domains
{% endif %}
{% if user.third_party_split_chain_result == "FAILURE!" %}
Mode 4 - Third Party Chained Cookie Tracking
Failure! A Third Party chained domain set up is not able to track you via their cookies between first party domains
{% endif %}
{% if mode == "5" %}
Mode 5 - HTML5 LocalStorage Super Cookie Tracking (Third Party)
{{ progress }}%
{% endif %}
{% if user.third_party_super_cookie_result == "SUCCESS!" %}
Mode 5 - HTML5 LocalStorage Super Cookie Tracking (Third Party)
Success! Third Party HTML5 LocalStorage Super Cookies are able to track you between first party domains
{% endif %}
{% if user.third_party_super_cookie_result == "FAILURE!" %}
Mode 5 - HTML5 LocalStorage Super Cookie Tracking (Third Party)
Failure! Third Party HTML5 LocalStorage Super Cookies are not able to track you between first party domains
{% endif %}
{% if mode == "6" %}
Mode 6 - HTML5 LocalStorage Chained Super Cookie Tracking (Third Party)
{{ progress }}%
{% endif %}
{% if user.third_party_split_super_cookie_result == "SUCCESS!" %}
Mode 6 - HTML5 LocalStorage Chained Super Cookie Tracking (Third Party)
Success! A Third Party HTML5 LocalStorage chained super cookie is able to track you between first party domains
{% endif %}
{% if user.third_party_split_super_cookie_result == "FAILURE!" %}
Mode 6 - HTML5 LocalStorage Chained Super Cookie Tracking (Third Party)
Failure! A Third Party HTML5 LocalStorage chained super cookie is not able to track you between first party domains
{% endif %}
{% if mode == "7" %}
BENCHMARK COMPLETED
The Results for each of the modes has been updated and will be saved in the configuration page.
Click a link on the navigation bar to proceed.
{% endif %}


--- layout: default title: API documentation ---
Note that this documentation is being trialled for use with the Street Manager Beta and is aimed towards authorised Beta participants. As Street Manager remains under active development, this documentation will continue to develop over time.
This page contains guidance for developers integrating their systems with the Street Manager API so they can submit and retrieve information about street works.
The page is split into two sections. The first contains specification documentation which describes the legally required API functions and interfaces which are due to be delivered in the coming weeks and months. The second section lists the versioned and dated releases, as the specified functionality is implemented and deployed into the service environments.
This guide details best practices and common patterns for integrating with Street Manager
Version 2 - Stable
This is the V2 baseline specification which describes all legally required API functions and interfaces. There are no breaking changes planned to be introduced in upcoming releases; while new functionality may be introduced in future versions of the V2 specification, these changes will be purely additive in nature to prevent existing integrations from breaking.
Current
Upcoming


×
Сheckout
Your're E-mail*
You're name*
Prop
All
Rent
Buy
Sold
Price
District
All
Holosiivsky
Pechersʹkyy
Solom'yansʹkyy
Shevchenkivsky
Svyatoshinsky
1
2
3


Jekyll FAQs
A quick diversion from Rails. I wanted to make some static web pages with FAQs for different software packages. There will be a page for each software package and a number of questions and answers will be listed on each page. This is doable with plain HTML but I’d like to try a few new tools.
For the pages, I want to use Jekyll. Jekyll uses templating to create static pages. This is a similar concept as that used in Rails, there you can have a layout and fill in specific parts of the common layout from different sources. Why not use Rails? If you don’t administer the server, you may not have the ability to run a Rails app. With static pages, if you have an accessible space for web pages, you are in business.
To get going, I’m following Jekyll’s Quick-start Guide. After installing jekyll (gem install jekyll
), you make a jekyll directory. I’m not sure why but most of these Ruby-based utilies fail when I use tcsh so, after switching to bash, you create a new project directory(jekyll new FAQs
).
Here is the initial directory tree:
├── _config.yml ├── _layouts │ ├── default.html │ └── post.html ├── _posts │ └── 2013-06-17-welcome-to-jekyll.markdown ├── css │ ├── main.css │ └── syntax.css └── index.html
Jekyll is popular for making blogs and Octopress, which I use for my blog, is built on top of Jekyll.
…
After about an hour and a half, I have the following directory tree:
├── _config.yml ├── _includes │ ├── footer.html │ ├── header.html │ └── navigation.html ├── _layouts │ ├── default.html │ └── page.html ├── assets │ ├── css │ │ ├── bootstrap-responsive.css │ │ ├── bootstrap-responsive.min.css │ │ ├── bootstrap.css │ │ ├── bootstrap.min.css │ │ └── style.css │ └── js │ ├── bootstrap.js │ ├── bootstrap.min.js │ └── scripts.js ├── css │ ├── main.css │ └── syntax.css ├── index.html ├── software1 │ └── index.html ├── software2 │ └── index.html └── software3 └── index.html
In _includes
, I have a header.html that points to the Twitter Bootstrap .css and .js files. The footer.html is a placeholder that just says footer. navigation.html has a unordered list with home and links to software1-3. I’m hoping to use this for some navigation tabs or something.
In _layouts
, I created page.html. This is the template I use for home and the three software pages.
Assets contains the .css and .js files. I have not used any of these for formatting the pages yet.
Finally, each of the three software directories contian an index.html file which will contain the questions, answers to the questions, and code examples for the questions.


[gecode-users] finding out whether there is a constraint between two variables/ equality between two variables
Guido Tack
tack at ps.uni-sb.de
Mon May 22 14:31:53 CEST 2006
Hi.
> Is it possible for each IntVar to see whether there is a constraint between
> the IntVar and another IntVar?
No, currently not. And it would be quite hard to use because of entailment.
Think of checking whether there's a constraint x<y. There might be a
propagator ensuring x<y, there might also be a strictly stronger one ensuring
x+1=y, or there might be none, as x<y is already entailed by the store.
> I am looking for something like:
> bool myfuntion(IntVar a, IntVar b)
> that should return true only if there is at least a single constraint that
> involves both a and b.
>
> or
> void myfunction(IntVar a, IntVarArgs b)
>
> assigns b to be all IntVars that are present in the same constraints as a.
Could you be a little more specific as to what you are planning to do with
that information?
> Also regarding the comparison between two IntVar variables a, b, I was
> wondering if it is possible to check [NOT post] equality [whether the
> domain of the two variables contain the same values] in a way that doesn't
> include iterating over their values?
Equality is, unlike in many other CP systems, not implemented via aliasing.
This means that if you post "x=y", you actually post a propagator enforcing
that. As already said above, you currently cannot check whether there is such
a propagator.
If you only want to know whether two variables might be equal, i.e. whether
the intersection of their domains is not empty, what's wrong with iterating
over the domains?
Cheers,
Guido
--
Guido Tack
Programming Systems Lab, Saarland University, Germany
http://www.ps.uni-sb.de/~tack
More information about the gecode-users
mailing list


IncredibleUttarakhand
HOME
HOLIDAY THEMES
POPULAR PACKAGES
CONTACTS
011-41401999
Sign Up
Login
This will help us know you better
Having doubts? Mail us at
<EMAIL_ADDRESS>Popular Tour Packages
Take a tour
BUGYALS
Take a tour
CHAR DHAM
Take a tour
ROPEWAY


You can see the UI update in real-time by changing a model value in the browser's console, for example model[0].Description("Blast is cool!")
When you change something in the UI, the corresponding view model fields get updated immediately
you can use any event when you link DOM to model - change, keyup, etc. The default is "onchange"
Working with input fields (Declarative binding in markup)
First Name:Bound value (firstName):
Last Name:Bound value (lastName):
Working with tables - binding programatically with JS
ID
Name
Description
Cell (0,0) =
Cell (0,1) =
Cell (0,2) =
Working with tables - binding declaratively with templates
try doing this in the console: customersModel.customers[0].firstName("new name");
You can also change the TD contents in ANY way and Blast.JS will update the observables! - (DOMCharacterDataModified) event - NOTE: works on FF,Chrome,Safaru, but not on IE9 and 10


Big boost for kids who want to learn how to fix a bike
A PRE-CHRISTMAS boost means more primary school pupils will get a chance to tinker with the benefits of repairing damaged bikes for those most in need.
A $32,000 grant for YMCA Ballarat will help ensure more wheels are ready to roll for the summer from its ReCranked in Schools project.
YMCA Ballarat chief executive officer Brooke LeSueur said the funds would make a tremendous difference to the program and to the disadvantaged and at-risk children who take part in it.
"We are now able to offer the ReCranked program at 10 primary schools in Ballarat and the western region," Ms Le Sueur said.
"The ReCranked in Schools program delivers so many benefits to young people, including the opportunity to acquire new skills, build their confidence and actively participate in a new learning environment."
READ MORE: Ballarat police donate bikes to program aimed at providing transportation
The RACV Community Foundation grant comes as YMCA Ballarat appeals for old and unwanted bike donations for its workshop and shed to ensure they have a collection to repair and roll out before Christmas. Stocks are all-but-deplete.
ReCranked in Schools supports primary school pupils in Ballarat to learn how to repair a recycled bike. The program helps children develop mechanical techniques, literacy and numeracy skills, cycling and leadership, teamwork and communication skills. It also promotes social connections with other participants and program leaders.
RACV Community Foundation chose to focus on programs that aim to reduce social isolation across the state.
READ MORE: Ballarat Bicycles for Humanity shipping bikes off to Cambodia
YMCA Ballarat was among 15 organisations to share in the funding boost.
Foundation chairman Graeme Chipp said such programs played a critical support role for young and old Victorians who might be experiencing loneliness.
"We are proud to support initiatives, like Recranked in Schools that help build new skills and confidence and create a sense of belonging and purpose within young people and others in their communities," Mr Chipp said.
To donate a bike (in reasonable condition), email ballarat.recranked@ymca.org.au.


Parsed service.
The generated code for the SDK API wrapper.
Path of the directory to write to.
Name of the file to write
Content to be written to the file. A copyright statement will be added to this.
Whether or not existing files should be overwritten.
Workaround for OpenApi generation to build one and only one API for all tags. Modify spec to contain only one 'default' tag.
OpenApi JSON document.
The modified document.
Options to configure generation.
Get the operation for the given method and merge path parameters with operation parameters.
Path Item to get the operation from.
HTTP method to get the operation for.
The sanitized original operation.
Get the mapped TypeScript type for the given original OpenApi type.
Original OpenApi type, to get a mapping for.
The mapped TypeScript type.
The index file contents.
Typeguard to check wheter an object is of type OpenAPIV3.ReferenceObject
.
Object to check.
True if the object is a reference object, false otherwise.
Methods supported by OpenApi and SAP Cloud SDK.
Collect and parse all operations of an OpenAPIV3.Document
.
The OpenApi document to parse.
List of crossreferences that can occur in the document.
A flat list of parsed operations.
Parse parameters of an operation.
The original operation definition.
List of crossreferences that can occur in the document.
A list of parsed parameters.
Parse the request body.
Original request body to parse.
List of crossreferences that can occur in the document.
The parsed request body.
Parse the type name of a reference object.
Reference object to get the type name from.
Parsed type name.
Check whether the given object is a reference object and resolve if necessary. This operates only on the current level and does not resolve the object recursively.
Object to resolve if necessary.
References to resolve by.
A resolved object.
OpenApi Client Generator
This is currently not release ready. excluded in
mail.ts
.The generator wraps only the openapi-generator. This is a flexible tool using many commandline flags and templates for easy adjustment.
Command line arguments
Repo For mustache files
In the wrapping
generator-cli
we currently only exposeinputDir
andoutputDir
to generate tyescript-axios sources from the openapi.json files.Things we have adjusted to the OpenApi Generator
templates/baseApi.mustache
to achieve that.Usage
To run the generator use:
Once you have the generated classes, you can make calls via:
import { AxiosResponse } from 'axios'; import { SalesOrdersApi, InlineResponse200 as ResponseSalesOrder } from 'generated/sales-orders'; const response: AxiosResponse<ResponseSalesOrder> = await new SalesOrdersApi({ accessToken, basePath }).getSalesOrders()
Besides bearer token also basic is supported for authentication.
Problem Generator
'--additional-properties=withSeparateModelsAndApi=true'
and you have the templates enables, the model files are empty. Most likely there is no template found for the type.


Share your purchase with your friends to earn Loyalty Points
Simply click on the share buttons and share it on any of the social platforms, and instantly receive {{settings.loyalty.order_sharing}} loyalty points!
Get an additional {{settings.loyalty.site_sharing}} loyalty points when you like us on Facebook!


Thymeleaf + Spring Security integration basics
Have you switched to Thymeleaf but your login and error pages are still using JSP?
In this article we will see how to configure your Spring application to use Thymeleaf for
login and error pages.
Prerequisites
We asume you are familiar with Thymeleaf and Spring Security, and you have a working application using these technologies. If you don't know Spring Security, you could be interested on reading the Spring Security Documentation.
Login pages
With Spring security you could specify any URL to act as a login page, so we simply set URLs for login page and login error page as <form-login> element attributes into the Spring-Security configuration file (usually applicationContext-security.xml):
Now we have to match these pages inside a Spring Controller:
Note that we are using the same template login.html for both pages, but when there is an error, we set a boolean attribute into the model.
Our login.html template is as follows:
Error page
We also can configure a Thymeleaf error page. In this case Spring Security is not involved at all, we should simply modify our web.xml adding error <error-page> elements like:
Then, we have to map the /error.html in our Spring Controller:
Note that we store error code and error message into the model to show some information in the error page.
The error.html template could be like:
Spring security dialect
The Spring Security 3 integration module is a Thymeleaf dialect equivalent to Spring security taglib.
We use this dialect in the example in order to print the logged user credentials and to show different content to different roles.
The attribute sec:authorize renders its content when the attribute expression is evaluated to true:
The attribute sec:authentication is used to print logged user name and roles:
Download example
The full working example code used in this article is available for download at the project's documentation page.


Forgot Password
If you've forgot your Password or wish to reset it, use the link below to get started.
Reset Your Password
© copyright | All rights reserved


{% for group_name, group_choices, group-index in widget.subwidgets.0.optgroups %}
{% for selopt in group_choices %}
{% if selopt.value == "after_order" %}
{% include widget.subwidgets.1.template_name with widget=widget.subwidgets.1 %}
{% trans "days after order" %}
{% elif selopt.value == "before_event" %}
{% include widget.subwidgets.2.template_name with widget=widget.subwidgets.2 %}
{% trans "days before event" %}
{% endif %}


Instructions:
1. Image file type should be in the ".JPG" format. Make sure the image name has the ".JPG" extension. (Case matters)
2. Image name should match the name of the associated plant as used in the database for display name. Name should be in all lower case.
Select image to upload:


Alon Zakai/@kripken
Many kinds constantly being worked on: Object layout (hidden classes, etc.), garbage collection (generational GC, etc.), etc. etc.
Here I'll focus only on type-based optimizations
Many benchmarks (most of kraken, parts of octane, etc.) test pure computation
Optimizations include type profiling, type inference, type specialization
Prominent in modern JS VMs (optimizing JITs like crankshaft, ionmonkey, etc.)
I'll discuss three areas of optimization, all of which only make sense given type information:
JavaScript numbers are 64-bit doubles, but VMs has 32-bit ints as well!
Possible due to a mathematical fact about integer and double math:
xint +int yint
==
int( double(xint) +double double(yint) )
Say we are adding two values known to be 32-bit ints:
xint + yint == xint +int yint ,
assuming no overflow happened
Thankfully overflow checks are cheap, but can do even better:
(xint + yint) | 0 == xint +int yint
We can do the same for 32-bit floats!
xf32 +f32 yf32
==
f32( f64(xf32) +f64 f64(yf32) )
Also -,*,/,sqrt,
etc. (but not everything, e.g. not sin
)
Only true because of the exact definition of IEEE754 doubles and floats (# of bits in exponent, definition of rounding, etc.)
Typed arrays, e.g. stuff like this is common in WebGL code
var f32 = new Float32Array(1000);
for (var i = 0; i < 1000; ++i) {
f32[i] = f32[i] + 1;
}
Optimizable :)
Fragile, though - needs to be cast back to float32 immediately
var f32 = new Float32Array(1000);
for (var i = 0; i < 1000; ++i) {
f32[i] = 2*f32[i] + 1;
}
Not optimizable, and also no parallel to overflow checks that ints can use :(
Math.fround: explicitly cast a number to 32-bit float precision
var f32 = new Float32Array(1000);
for (var i = 0; i < 1000; ++i) {
f32[i] = Math.fround(2*f32[i]) + 1;
}
Optimizable :)
Parallel to |0
which as mentioned before can help optimize integer math
In ES6, already in Firefox, Safari, Chrome (behind a flag), easy to polyfill:
Math.fround = Math.fround || (function() {
var temp = new Float32Array(1);
return function fround(x) {
temp[0] = +x;
return temp[0];
}
})();
or
Math.fround = Math.fround || function(x) { return x };
| Matrix Inversions | Matrix Graphics | Exponential | FFT | |
| x86 | 33% | 60% | 30% | 16% |
| ARM | 38% | 38% | 24% | 33% |
% speedup with float optimizations (higher is better; source)
Less precise, often less CPU cycles
Half the size, fewer cache misses
WebGL code often uses float32s, doing computation in float32 avoids conversions
Not yet, but possible: more registers/SIMD lanes
Modern JS VMs have powerful optimizing JITs that operate on typed code
But many heuristics lie between source code and actually being fully typed and optimized
What if we made some JS code really really easy to optimize, with as few heuristics as possible?
asm.js is one way to do that
asm.js is a subset of JavaScript (not a new language, no new semantics, all 100% backwards compatible), written in a format that is extremely easy to optimize
E.g., the |0
pattern mentioned before:
function twice(x) {
x = x | 0;
return x + x | 0;
}
No need to profile types, can be optimized ahead of time (AOT) from source
function asmCode(global, env, buffer) {
'use asm';
var HEAP = new global.Uint8Array(buffer);
function fib_like(x) {
x = x|0;
if ((x >>> 0) < 2) return HEAP[x]|0;
return (fib_like(x-2|0)|0) + (fib_like(x-1|0)|0) | 0;
}
return fib_like;
}
Low-level and mostly inconvenient to write by hand - primarily intended as a compiler target
Emscripten is an open source LLVM-based compiler that generates asm.js from C/C++
Can compile existing C/C++ codebases, or write new ones - fits in with the "compile-to-js" movement (CoffeeScript, etc.)
Lots of interest from the games industry: Top-tier game engines starting to support HTML5 as a compilation target, using Emscripten to emit asm.js
Unity - Replacement for their popular web plugin
Unreal Engine - HTML5 as new target platform
& many others
Should see stuff like this ship on the web later this year, will be interesting times!
Around 1.5x slower than native (67% of native speed)
As we saw, sufficient even for AAA game engines
AOT - full optimizing JIT always run, using full type info
AOT done in parallel, results cached
No need for bailouts, we know many corner cases are impossible, etc.
On 64-bit, can do zero-cost bounds checks using a signal handler
OdinMonkey is the optimization module for asm.js in SpiderMonkey
Fairly small amount of code
Mostly just type checks and sends the results into the normal optimizing JIT
We saw that JavaScript can get very close to native performance
When you get that close, every little thing starts to become significant, even register allocation
Inspired by LLVM's Greedy Register Allocator (added in LLVM 3.0)
LLVM results: 1-2% smaller code, up to 10% faster
Takes longer to run - and regalloc is already among the slowest phases - but worth it
Use priority queue of live ranges, instead of linear scan
If no free physical register, can backtrack - undo a previous allocation, if we need it more
Split live ranges to ensure physical registers for loops and other important places
SpiderMonkey followed LLVM's progress and in fact mirrored it
Like LLVM, began with a linear scan register allocator, improved it until it became too complex, then wrote a backtracking allocator
LLVM's experience and design has been very informative!
Heuristics for when to split, whether to spill or split, etc.
SpiderMonkey values do not always require a physical register (e.g. for snapshots), can split live ranges based on that
Most benchmark show little or no difference. But when there is a difference, it can be large!
21% speedup on octane-zlib on x86
7% speedup on x86-64, 11% speedup on ARM (more registers anyhow)
Other benchmarks: 29% speedup on emscripten-life on x86
Enabled a few weeks ago on asm.js code, where it makes the most difference (closest to native speed) and we AOT
Heuristics need tuning before enabling everywhere, as compilation is slower, hopefully soon
Topics covered: