As well as the RGraph.AJAX.getNumber
, RGraph.AJAX.getString
and
RGraph.AJAX.getCSV
canvas
AJAX
functions there's also a convenient way to fetch
JSON
content from your server by way of the RGraph.AJAX.getJSON
function.
Since the responses to AJAX
calls start as strings this function handily converts the response
into a JavaScript
object automatically for you.
As you can see from the example below this means that you can use the response directly in any
chart configuration (ie the json.data
and json.labels
variables).
This demo page is intended to show the AJAX
and JSON
functionality that RGraph has so the rest of
the Pie chart configuration is pretty straightforward.
The Pie chart does have a key though - which together with the tooltips use the labels which
are part of the JSON
response.
Added in March 2020 was the new feature of tooltip templates and the use of the
tooltipsCss
property - which makes it much easier to add custom styles to your tooltips.
<script src="RGraph.common.core.js"></script> <script src="RGraph.common.dynamic.js"></script> <script src="RGraph.common.tooltips.js"></script> <script src="RGraph.common.key.js"></script> <script src="RGraph.pie.js"></script>Put this where you want the chart to show up:
<div style="float: right"> <canvas id="cvs" width="450" height="350">[No canvas support]</canvas> </div>This is the code that generates the chart - it should be placed AFTER the
canvas
tag(s):


A click drawing polygon tool powered by Fabric.js. It also comes with undo/redo feature utilising Command pattern.
Start Drawing


## Mako can find this base file because it's in the settings.py -> MAKO_TEMPLATES_DIRS list <%inherit file="base.htm" /> <%block name="title">
This is the homepage and centerblock area
| ID | Question Text | Actions |
|---|---|---|
| ${ q.id } | ${ q.question_text } | Edit |
| 1 | This is question 1 | |
| 2 | This is question 2 | |
| 3 | This is question 3 |


ABOUT US
ABOUT US:
Established in 2021, Educate kids’ is a non-profit that focusses on mobilising communities for kids’ education in India’s rural and educationally backward areas.
Strongly aligned with the ‘Right to Education Act’ or the ‘Samagra Siksha’, Educate kids is committed to the Government’s vision to improve access to primary education for children, especially youngs.
Educate students currently operates successfully in over 180+ villages in Gujarat. By leveraging the Government’s existing investment in schools and by engaging with a huge base of community volunteers, Educate students helps to identify, enrol and retain out-of-school students and to improve foundational skills in literacy and numeracy for all children (both girls and boys). This helps deliver measurable results to a large number of children and avoids parallel delivery of services.
VISION:
We aim to achieve behavioural, social and economic transformation for all students towards an India where all children have equal opportunities to access quality education.
MISSION:
We leverage existing community and Government resources to ensure that all students are in school and learning well.
GOAL:
Our goal is to improve access and quality of education for over 1 million children cumulatively by 2024.


| CONTENTS | PREV | NEXT | Java Remote Method Invocation |
Remote
Interface
RemoteException
Class
Naming
Class
RemoteObject
Class
RemoteServer
Class
UnicastRemoteObject
Class
Unreferenced
Interface
RMISecurityManager
Class
RMIClassLoader
Class
LoaderHandler
Interface
RMIFailureHandler
Interface
LogStream
Class
Registry
Interface
LocateRegistry
Class
RegistryHandler
Interface
RemoteStub
Class
RemoteCall
Interface
RemoteRef
Interface
ServerRef
Interface
Skeleton
Interface
Operation
Class
DGC
Interface
Lease
Class
ObjID
Class
UID
Class
VMID
Class


Square’s @jackdanger wrote a great post on his blog titled ”The Upside Down Org Chart.” It’s a great read on improving how reasonably-sized companies are structured. His use of a tree that expands upwards, showing how management supports subordination, is genius. It visually explains the role of management:
For a tech company to describe their structure this way requires some humility from the leadership. It requires accepting that senior positions must be evaluated based on the support given to individuals on the team rather than the support given to the CEO or executives. But it makes the structure one in which nothing is extracted from the laborers – indeed it provides help that an individual could not find working alone.
His blog post’s description of traditional top-down management structures brought back memories of teams I’ve been on that, despite having favorable org charts, were unpleasant. The problem was that I was treated as (and acted like) a producer of diffs, rather than a problem-solver.
Jack’s post is, in part, a reaction to the typical strategies people are given for navigating a hierarchical corporate structure. We’re often told to “manage up” or “make your boss look good”. In the context of a large, dysfunctional, bureaucratic organization, it can feel almost sickening to use these principles to drive your work. Jack sums it up well:
Nobody wants their work to be compromised by constantly having to “manage up” and certainly nobody wants to hand the benefits of their work to somebody else.
It’s easy to cast the boss/direct-report relationship in an adversarial light, especially in a large company where it can be difficult to understand the priorities of everyone involved. In this scenario, “managing up” is akin to brown-nosing, and “making your boss look good” sounds like giving credit to someone who didn’t deserve it.
Personally, I don’t see these techniques as inherently bad. In a well-run company, the job of the managers is to make sure each employee is coordinated toward the common goals of whatever it is the company does. The problem is that, as “leaf nodes”, developers are often treated as widgets that ingest requirements and produce diffs. “Managing up” is about producing more diffs faster, and making sure your boss knows about it.
For me, “managing up” is more about making sure you are solving the problems your boss has been tasked with getting your team to solve. Hopefully, these are the right problems to be solving. The only way to find out is to become more than just a diff-producer or ticket-taker, but a true partner with your manager in collectively solving problems together.
Producing Diffs
As developers, we love to talk how to produce better diffs (e.g. design patterns, coding techniques, editors, tools, frameworks, etc.).  Diffs are the most direct product of our labor. But if we only view our jobs as producing diffs, we doom ourselves to being treated as cogs in a machine, interchangeable parts to plugged and re-plugged.
I’m not happy just producing diffs. I love programming, but it’s not an end unto itself. A computer program solves some problem for someone, and I am happier when I know what that problem is (my diffs are better, too :).  And, having been a boss at times, I can tell you that it’s much easier to understand my team when I know what problems they are solving, not which tickets have been moved to “Resolved”.
The problem is that, in a traditional company, we aren’t presented with problems to solve, but with diffs to produce. We’re expected to trust our managers that the diffs we’re asked to produce solve problems that need solving and that all of those people “higher up the corporate ladder” are properly coordinating things to make the company successful. This can be difficult, if not impossible, to achieve.
And so what happens is that the diffs my manager asks me to produce may not actually solve the problems my manager needs solving. If all I do is bang out diffs, am I really helping?
If, instead, I align myself with my manager’s goals, instead of simply doing what I’m told, together we can produce a better solution to the real problem. My manager has more context than me about our team and the company. I have more context about the underlying technology, what is possible, and what it takes to produce various solutions. If I can get a bit of my manager’s context, and they a bit of mine, a better solution can be produced.
This is what I think of when I think of “managing up”: the alignment of goals and a shared understanding. Hopefully, my manager’s problems are the right problems to solve, but, even if they aren’t, being on the same page is the first step to solving that problem.
Understand the Problem
In my book, there are three chapters devoted to writing software - one for fixing bugs, one for developing features, and one for creating new applications. In each case, the first step is to understand the problem being solved, especially if a specific solution has already been proposed.
My book goes into some great detail about how to do this, but it all starts with simply asking “Why?”. Find out where the requirements came from. Find out what pain someone has that this is supposed to alleviate. Find out how this saves the company money. Find out how it makes the company money. There should be a route from your ticket system to one of those places, even if it’s circuitous.
Often, you’ll find that the proposed solution isn’t the best one for the underlying problem. You might also find that the problem really isn’t a problem after all. While it feels great to produce awesome code, it feels even better to produce no code to solve a problem.
Approaching your work like this may make your boss look good. But that’s not the point. The point is to spend your time wisely and produce the best solution to the real problem. That your boss and your team look good is incidental (but it’s still a good thing).
Another side-effect of aligning your actions to business problems (instead of software requirements) is that you’ll quickly uncover dysfunction. Sometimes the answer to the question “Why?” is “Because”. This answer is permission to start working on your resume :)
In all seriousness, it’s no fun to simply be a diff-producer, and if the company you are working at, regardless of its org chart, has trapped you in the role of diff-producer, it’s not going to be an enjoyable place to work. You won’t do your best work, you won’t learn, and you won’t have much of a career.
So, take a break from learning how to produce amazing diffs and learn a bit about why you’re doing what you’re doing. The answers will make you a better developer.
If you want to take control of your career, stop being a diff-producer, and start doing your best work, my book has what you need.


RENAME(1) Perl Programmers Reference Guide RENAME(1) NAME rename - renames multiple files SYNOPSIS rename [ -v ] [ -n ] [ -f ] perlexpr [ files ] DESCRIPTION "rename" renames the filenames supplied according to the rule specified as the first argument. The perlexpr argument is a Perl expression which is expected to modify the $_ string in Perl for at least some of the filenames specified. If a given filename is not modified by the expression, it will not be renamed. If no filenames are given on the command line, filenames will be read via standard input. For example, to rename all files matching "*.bak" to strip the extension, you might say rename 's/\.bak$//' *.bak To translate uppercase names to lower, you'd use rename 'y/A-Z/a-z/' * OPTIONS -v, --verbose Verbose: print names of files successfully renamed. -n, --no-act No Action: show what files would have been renamed. -f, --force Force: overwrite existing files. ENVIRONMENT No environment variables are used. AUTHOR Larry Wall SEE ALSO mv(1), perl(1) DIAGNOSTICS If you give an invalid Perl expression you'll get a syntax error. BUGS The original "rename" did not check for the existence of target filenames, so had to be used with care. I hope I've fixed that (Robin Barker). perl v5.14.2 2014-09-26 RENAME(1)


Language Chinese English French Japanese Korean Portuguese Russian Spanish Other Departure place Alaska Arizona California Florida Georgia Hawaii Maryland Mississippi New Mexico Ohio Pennsylvania Texas Gender Male Female Destination Alaska Arizona California Florida Georgia Hawaii Maryland Mississippi New Mexico Ohio Pennsylvania Texas


At this point, you might be wondering: what is Open Source software all about? And why is it so important?
Well, Open Source isn't just about free software. It's about projects where the code is made publicly available (usually on a website called GitHub) so that many developers from around the world (who may not
even know each other) can collaborate on it and help each other
out by suggesting improvements and bugfixes, and sharing knowledge and skill with a very healthy community of developers. It's like writing a book where many other authors can pitch in some great ideas for the story.
So why is it so important again? Because it helps push the software industry forward more than anything else. If you take a look at some of the most impactful and influential software developments in the world
today
- all the way from programming languages like Python and ML libraries like TensorFlow, to the world's most popular mobile OS (Android!) and the godfather of all Open Source projects, the Linux kernel - they're all Open
Source.
These projects haven't been developed entirely by a single individual or organization. They all have contributions from the public community, where people (just like you!) have helped build, test, secure and improve the
quality
of
the software to make it as big and as awesome as it is today.


{% extends 'speeches/base.html' %} {% load url from future %} {% block title %}Your Window into Province House{% endblock %} {% block content %}
Important decisions are made in our legislature.
We make it easy for Nova Scotians to know what's happening.
Help keep OpenHouseNS open: make a small donation to keep this site running
{% if hansard %}The latest transcript is from: {{ hansard.start_date }}
{% endif %}


Running Apollo 3.0 with SVL Simulator
This repository is a fork of Apollo maintained by the LG Electronics Silicon Valley Lab which has modified and configured to facilitate use with LG's Automotive Simulator.
The software and source code in this repository are intended only for use with LG Automotive Simulator and should not be used in a real vehicle.
Table of Contents
Getting Started top#
This guide outlines the steps required to setup Apollo for use with the SVL Simulator. If you have not already set up the simulator, please do so first by following the instructions in Installing the SVL Simulator.
We use our forked version of the Apollo repository, which can be found here.
The software and source code in this repository are intended only for use with LG Automotive Simulator and should not be used in a real vehicle.
Prerequisites top#
- Linux operating system (preferably Ubuntu 14.04 or later)
- NVIDIA graphics card (required for Perception)
- NVIDIA proprietary driver must be installed
- The current version of Apollo does not support Volta and Turing architectures (this includes Titan V and RTX 2080 GPUs).
Setup top#
Docker top#
Apollo is designed to run out of docker containers. The image will mount this repository as a volume so the image will not need to be rebuilt each time a modification is made.
Installing Docker CE top#
To install Docker CE please refer to the official documentation.
NOTE
Apollo does not work if the docker is started with sudo
.
We suggest following through with the post installation steps.
Installing NVIDIA Docker top#
Before installing nvidia-docker make sure that you have an appropriate NVIDIA driver installed.
To test if nvidia drivers are properly installed enter nvidia-smi
in a terminal. If the drivers are installed properly an output similar to the following should appear.
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.87 Driver Version: 390.87 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 108... Off | 00000000:65:00.0 On | N/A |
| 0% 59C P5 22W / 250W | 1490MiB / 11175MiB | 4% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 1187 G /usr/lib/xorg/Xorg 863MiB |
| 0 3816 G /usr/bin/gnome-shell 305MiB |
| 0 4161 G ...-token=7171B24E50C2F2C595566F55F1E4D257 68MiB |
| 0 4480 G ...quest-channel-token=3330599186510203656 147MiB |
| 0 17936 G ...-token=5299D28BAAD9F3087B25687A764851BB 103MiB |
+-----------------------------------------------------------------------------+
The installation steps for nvidia-docker are available at the official repo.
Pulling LGSVL Docker image top#
LGSVL maintains a docker image to be used alongside this repository. The docker image is available here.
To pull the image use the following command:
docker pull lgsvl/apollo
Cloning the Repository top#
This repository includes a couple of submodules for HD Maps and rosbrige. To make sure that the submodules are also cloned use the following command:
git clone --recurse-submodules https://github.com/lgsvl/apollo.git
Building Apollo and ROSbridge top#
Now everything should be in place to build apollo. Apollo must be built from the container. To launch the container navigate to the directory where the repository was cloned and enter:
./docker/scripts/dev_start.sh
This should launch the container and mount a few volumes. It could take a few minutes to pull the latest volumes on the first run.
To get into the container:
./docker/scripts/dev_into.sh
Build Apollo:
./apollo.sh build_gpu
(optional) to build without gpu:
./apollo.sh build
Now build rosbrige:
cd ros_pkgs
catkin_make
Launching Apollo alongside the simulator top#
Here we only describe only a simple case of driving from point A to point B using Apollo and the simulator.
To launch apollo, first launch and enter a container as described in the previous steps.
-
To start Apollo:
Note: you may receive errors about dreamview not being build if you do not run the script from the
/apollo
directory.
./scripts/bootstrap.sh
- Launch rosbridge:
./scripts/rosbridge.sh
-
Run the SVL Simulator outside of docker. See instructions for Running the Simulator
- Create a Simulation with the
BorregasAve
map and theJaguar2015XE (Apollo 3.0)
vehicle. - Enter
localhost:9090
for the Bridge Connection String
- Create a Simulation with the
-
Open Apollo dreamview in a browser by navigating to:
localhost:8888
- Select the
Jaguar2015XE
vehicle andBorregasAve
map in the top right corner. - Open the Module Controller tap (on the left bar).
- Enable Localization, Perception, Planning, Prediction, Routing, and Control.
- Navigate to the Route Editing tab.
- Select a destination by clicking on a lane-line and clicking Submit Route.
- Watch the vehicle navigate to the destination.
- To stop the docker container run the
dev_stop.sh
script inapollo/docker/scripts
in a new terminal (not in the docker container).
- Select the
-
If you are using ufw, it is easiest to completely disable the firewall to allow connections
sudo ufw disable
- If that is not possible, add the following rules:
- These are required even if running the simulator and Apollo on the same machine
sudo ufw allow 8888
sudo ufw allow 9090
- If that is not possible, add the following rules:
Adding a Vehicle top#
The default vehicles have their calibration files included in the LGSVL Branch of Apollo 3.0.
Adding an HD Map top#
The default maps have their HD map files included in the LGSVL Branch of Apollo 5.0.


BioKIDS
»
CyberTracker Tools
{{title}}: {{group_code}}
Observation Report
|
Zone Report
|
Habitat Report
|
Team Report
|
Schoolyard Energy Role Report
{{body|safe}}


0
size
returns positive valuesavg
head
and tail
are Safefoldr1
average
map
init
init'
insert
List
s ElementsList
keys
Map
eval
create
pack
unsafeTake
unpack
Lets define our own List
data type:
Measure
Haskell function with a single equation per constructor
Measure
Strengthens type of data constructor
data List a where
Emp :: {v:List a | length v = 0}
(:::) :: x:a -> xs:List a
-> {v:List a | length v = 1 + length xs}
Fear head
and tail
no more!
head
and tail
that verify impossible
.
A convenient type alias
foldr1
Fold f
over list initially using first element:
average
Q: What is a safe input type for average'
?
Make illegal states unrepresentable
Legal Values: Lists of 12
elements, e.g.
"jan" ::: "feb" ::: ... ::: "dec" ::: Emp"
Refine Type to Legal Values
Lists Of A Given Size
Make illegal states unrepresentable
map
Q: Can you fix map
to verify tempAverage
?
init
Q: Can you fix the type of init
so that sanDiegoTemp
is accepted?
init'
Q: For bonus points, fix init'
so sanDiegoTemp'
is accepted?
Next: Case Studies


{%extends "crowdcop_web/form_parent.html"%} {% load i18n widget_tweaks %} {%block title%}Crowdfunding {{campaign.campaign_title}}{%endblock%} {%block jumbotron_message%}Crowdfund{%endblock%} {%block heading%}{{campaign.campaign_title}}{%endblock%} {%block form%}
{%endblock%}


pgAdmin includes a simple reporting engine which allows you to quickly generate reports from the queries you write in the Query Tool, or from objects or collections of objects in the main application Window - for example, you can create a report of the properties of any object, or a list of functions in a schema. To create a report, select a node in the browser treeview, and select the report to create from the context menu, or from the Reports submenu of the Tools menu. To create a report in the Query Tool, select the Quick Report option from the File menu.
Each report contains a title and optional notes that can be modified before the report is produced. In addition, you may select whether or not to include any SQL that may be relevant to the report you have selected.
Reports are generated internally in XML, however pgAdmin can apply an XML stylesheet to the report at processing time to format the output as required. A default stylesheet is built-in which produces HTML output. With the HTML output option selected, you can opt to embed the default CSS stylesheet (which will render the report in the same colors as the pgAdmin website), to embed an external stylesheet into the report, or to link to an external stylesheet. The following class/object ID's are used:
When generating reports in XML format, you can opt to output plain XML, XML linked to an external XSL stylesheet, or to process the XML using an external stylesheet and save the resulting output. This allows complete flexibility to format reports in any way.
The default XSL stylesheet used to render XHTML output can be used as a starting point for your own, and sample XML data may also be reviewed if required.


A class that represents a Unity assembly definition (asmdef) file.
More...
|
| string | Name [get, set] |
| | Please see Assembly Definition propertieson the Unity documentation site. More...
|
| |
| string[] | References [get, set] |
| | Please see Assembly Definition propertieson the Unity documentation site. More...
|
| |
| string[] | OptionalUnityReferences [get, set] |
| | Please see Assembly Definition propertieson the Unity documentation site. More...
|
| |
| string[] | IncludePlatforms [get, set] |
| | Please see Assembly Definition propertieson the Unity documentation site. More...
|
| |
| string[] | ExcludePlatforms [get, set] |
| | Please see Assembly Definition propertieson the Unity documentation site. More...
|
| |
| bool | AllowUnsafeCode [get, set] |
| | Please see Assembly Definition propertieson the Unity documentation site. More...
|
| |
| bool | OverrideReferences [get, set] |
| | Please see Assembly Definition propertieson the Unity documentation site. More...
|
| |
| string[] | PrecompiledReferences [get, set] |
| | Please see Assembly Definition propertieson the Unity documentation site. More...
|
| |
| bool | AutoReferenced [get, set] |
| | Please see Assembly Definition propertieson the Unity documentation site. More...
|
| |
| string[] | DefineConstraints [get, set] |
| | Please see Assembly Definition propertieson the Unity documentation site. More...
|
| |
A class that represents a Unity assembly definition (asmdef) file.
◆ AssemblyDefinition()
| Microsoft.MixedReality.Toolkit.Utilities.Editor.AssemblyDefinition.AssemblyDefinition |
( |
| ) |
|
Creates a new, empty assembly definition.
◆ AddReference()
| void Microsoft.MixedReality.Toolkit.Utilities.Editor.AssemblyDefinition.AddReference |
( |
string |
referenceName | ) |
|
Adds a reference to an existing assembly definition.
Make sure to call Save() after using this method to save the changes.
- Parameters
-
| referenceName | The name of the reference to add to this assembly definition |
◆ Load()
| static AssemblyDefinition Microsoft.MixedReality.Toolkit.Utilities.Editor.AssemblyDefinition.Load |
( |
string |
fileName | ) |
|
|
static |
Loads an existing assembly definition file.
- Parameters
-
| fileName | The file to be loaded. |
- Returns
- The assembly definition that has been loaded, or null.
◆ Save()
| void Microsoft.MixedReality.Toolkit.Utilities.Editor.AssemblyDefinition.Save |
( |
string |
fileName | ) |
|
Saves an assembly definition file.
- Parameters
-
| fileName | The name by which to save the assembly definition file. |
If the specified file exists, it will be overwritten.
◆ AllowUnsafeCode
| bool Microsoft.MixedReality.Toolkit.Utilities.Editor.AssemblyDefinition.AllowUnsafeCode |
|
getset |
Please see Assembly Definition propertieson the Unity documentation site.
◆ AutoReferenced
| bool Microsoft.MixedReality.Toolkit.Utilities.Editor.AssemblyDefinition.AutoReferenced |
|
getset |
Please see Assembly Definition propertieson the Unity documentation site.
◆ DefineConstraints
| string [] Microsoft.MixedReality.Toolkit.Utilities.Editor.AssemblyDefinition.DefineConstraints |
|
getset |
Please see Assembly Definition propertieson the Unity documentation site.
◆ ExcludePlatforms
| string [] Microsoft.MixedReality.Toolkit.Utilities.Editor.AssemblyDefinition.ExcludePlatforms |
|
getset |
Please see Assembly Definition propertieson the Unity documentation site.
◆ IncludePlatforms
| string [] Microsoft.MixedReality.Toolkit.Utilities.Editor.AssemblyDefinition.IncludePlatforms |
|
getset |
Please see Assembly Definition propertieson the Unity documentation site.
◆ Name
| string Microsoft.MixedReality.Toolkit.Utilities.Editor.AssemblyDefinition.Name |
|
getset |
Please see Assembly Definition propertieson the Unity documentation site.
◆ OptionalUnityReferences
| string [] Microsoft.MixedReality.Toolkit.Utilities.Editor.AssemblyDefinition.OptionalUnityReferences |
|
getset |
Please see Assembly Definition propertieson the Unity documentation site.
◆ OverrideReferences
| bool Microsoft.MixedReality.Toolkit.Utilities.Editor.AssemblyDefinition.OverrideReferences |
|
getset |
Please see Assembly Definition propertieson the Unity documentation site.
◆ PrecompiledReferences
| string [] Microsoft.MixedReality.Toolkit.Utilities.Editor.AssemblyDefinition.PrecompiledReferences |
|
getset |
Please see Assembly Definition propertieson the Unity documentation site.
◆ References
| string [] Microsoft.MixedReality.Toolkit.Utilities.Editor.AssemblyDefinition.References |
|
getset |
Please see Assembly Definition propertieson the Unity documentation site.
The documentation for this class was generated from the following file:


You are given an integer $n$, you have to convert it into a string.
Please complete the partially completed code in the editor. If your code successfully converts $n$ into a string $s$ the code will print "Good job". Otherwise it will print "Wrong answer".
$n$ can range between $-100$ to $100$ inclusive.


Alon Zakai / @kripken
Dec 9th 2015
an open source LLVM-based compiler from C and C++ to JavaScript
C++  ⇒  LLVM  ⇒  Emscripten  ⇒  JS
float array[5000]; // C++
int main() {
for (int i = 0; i < 5000; ++i) {
array[i] += 1.0f;
}
}
⇒ Emscripten ⇒
function main() { // JavaScript
var a = 0, b = 0;
do {
a = (8 + (b << 2)) | 0;
HEAPF32[a >> 2] = +HEAPF32[a >> 2] + 1.0;
b = (b + 1) | 0;
} while ((b | 0) < 5000);
}
This is asm.js, a low-level subset of JavaScript
Looks kind of hackish ;)
(no official logo yet!)
WebAssembly = asm.js done right
Binary executable format for the web
New web standard, multi-vendor cooperation
Not limited by JavaScript, but does integrate properly with the Web
For WebAssembly to succeed we need two things:
1. Browsers to support WebAssembly natively
2. Compilers that emit WebAssembly
I'll talk about the second of those
Already a few compilers in the works:
New WebAssembly backend in LLVM by sunfish and others
ilwasm for .NET/CIL
Longer-term efforts, and we want to test and launch WebAssembly ASAP. What to do?
A hack, of course! :)
C++  ⇒  Emscripten  ⇒  asm.js
+
asm.js  ⇒  ...  ⇒  WebAssembly
... = asm2wasm: Compile asm.js ⇒ WebAssembly
Part of Binaryen: a WebAssembly infrastructure library, written in C++
Parse and emit WebAssembly
Represent and process WebAssembly
Interpret WebAssembly
wasm2asm: Compile WebAssembly ⇒ asm.js (wip)
Binaryen is extensible and has a convenient commandline interface
The name: WebAssembly is a Binary- format, and we integrate with Emscript-en ⇒ Binaryen
wasm.js
wasm.js ports Binaryen to JavaScript using Emscripten
For example, it can execute WebAssembly in the Binaryen interpreter in JavaScript, as a (slow) polyfill
wasm.js demo
That's a C program compiled to WebAssembly including full libc, syscalls, etc. running in a WebAssembly interpreter written in C++, compiled to JavaScript, and embedded on this HTML page
C++  ⇒  Emscripten+Binaryen  ⇒  wasm
Runnable today, using the wasm.js compiled interpreter
And when browsers have native support for WebAssembly, the same build should just work
So Emscripten+Binaryen seems to work. How good is it?
Passes the Emscripten test suite, which is very comprehensive
Interpreter passes the WebAssembly spec test suite
Relatively little new code here, on top of a stable toolchain
Emscripten+Binaryen provide a C++ to WebAssembly solution, today
Also helping with experiments and prototyping for the WebAssembly design process
Binaryen can help grow the WebAssembly toolchain ecosystem


|
Play
(Jennifer Lopez) |
|
I
could wait all night and day
To go to a party, sit down and wait Give my request to the DJ Cause my song he's gotta play And when I hear that beat I get my body up out my seat I grab a guy and move my feet He's playing my song Play, come on play that song Play it all night long Just turn it up and turn me on Play, come on DJ play that song You know that it turns me on DJ just play that song Just turn it up and turn me on DJ just play that song Cause I wanna be dancing all night long Won't you play my (play my) play my (play my) Play my favorite song I don't care if everybody's gone Turn it up, cause it turns me on Keep dancing all night long It feels so right that it can't be wrong I get chills up and down my spine Whenever I hear that song of mine When it stops better press rewind (Play that shit again) Let me hear it one more time 1 - Play, come on play that song Play it all night long Just turn it up and turn me on Play, come on DJ play that song You know that it turns me on DJ just play that song Cause I wanna be dancing all night long Repeat 1 I just wanna dance Is that a crime? Alright then, ooh, uh Oh, ay, yes that's the hotness right there Repeat 1 in background Now Mr. DJ I've asked you three times Play my motherfuckin' song He, he, he Turn it up, turn it up Turn it up, turn it up Turn the track up Repeat 1 till end |


SUBMIT A REVIEW
FOR DOMAIN
Title
Description
Website URL
Category
Common Website
Social Media
Software
Wallet Address
Company
DeFi Project
Promotes content which are
Genuine
Scam
Fake
Stereotype
Hate Speech
CyberSecurity Standard
Safe to Browse
Spyware
Malware
Phishing
Virus
Adware or PUAs
Attach Website Screenshot
Submit
Cancel
© NetSepio 2021


TableChart
class TableChart extends Chart (View source)
Constants
| TYPE |
Javascript chart type.
|
| VERSION |
Javascript chart version.
|
| VIZ_PACKAGE |
Javascript chart package.
|
| VIZ_CLASS |
Google's visualization class name.
|
Methods
Builds a new TableChart with the given label, datatable and options.
Shortcut method to set the value of an option and return $this.
Parses the config array by passing the values through each method to check validity against if the option exists.
Sets any configuration option, with no checks for type / validity
The background color for the main area of the chart.
An object with members to configure the placement and size of the chart area (where the chart itself is drawn, excluding axis and legends).
An object with members to configure various aspects of the legend.
Where to place the chart title, compared to the chart area.
If set to true the GoogleChart will render html tags sorted as values.
If set to true the GoogleChart will alternate the role styles.
An object in which each property name describes a table element, and the property value is a string, defining a class to assign to that table element.
The row number for the first row in the dataTable. Used only if showRowNumber is true.
The number of columns from the left that will be frozen.
If and how to enable paging through the data.
The number of rows in each page, when paging is enabled with the page option.
Sets a specified option for the paging buttons. The options are as follows: both - enable prev and next buttons prev - only prev button is enabled next - only next button is enabled auto - the buttons are enabled according to the current page. On the first page only next is shown. On the last page only prev is shown. Otherwise both are enabled.
Adds basic support for right-to-left languages (such as Arabic or Hebrew) by reversing the column order of the table, so that column zero is the rightmost column, and the last column is the leftmost column. This does not affect the column index in the underlying data, only the order of display. Full bi-directional (BiDi) language display is not supported by the table visualization even with this option. This option will be ignored if you enable paging (using the page option), or if the table has scroll bars because you have specified height and width options smaller than the required table size.
Sets the horizontal scrolling position, in pixels, if the table has horizontal scroll bars because you have set the width property. The table will open scrolled that many pixels past the leftmost column.
If set to true, shows the row number as the first column of the table.
If and how to sort columns when the user clicks a column heading. If sorting is enabled, consider setting the sortAscending and sortColumn properties as well. Choose one of the following string values: 'enable' - [Default] Users can click on column headers to sort by the clicked column. When users click on the column header, the rows will be automatically sorted, and a 'sort' event will be triggered.
The order in which the initial sort column is sorted. True for ascending, false for descending. Ignored if sortColumn is not specified.
An index of a column in the data table, by which the table is initially sorted.
The first table page to display. Used only if page is in mode enable/event.
Details
at line 87
__construct(
Label $chartLabel,
DataTable $datatable,
array $config = array())
Builds a new TableChart with the given label, datatable and options.
in
JsonConfig at line 64
mixed
__get(
string $option)
Get the value of a set option via magic method.
in
JsonConfig at line 75
Options
getOptions()
Gets the Options object for the JsonConfig
in
JsonConfig at line 90
JsonConfig
setOption(
string $option,
mixed $value)
Shortcut method to set the value of an option and return $this.
In order to maintain backwards compatibility, ConfigObjects will be unwrapped.
in
JsonConfig at line 106
setOptions(
array $config)
Parses the config array by passing the values through each method to check validity against if the option exists.
in
JsonConfig at line 275
array
jsonSerialize()
Custom serialization of the JsonConfig object.
in
Chart at line 111
string
getType()
Returns the chart type.
in
Chart at line 122
bool
hasEvents()
Checks if any events have been assigned to the chart.
in
Chart at line 133
EventManager
getEvents()
Retrieves the events if any have been assigned to the chart.
in
Chart at line 164
Chart
events(
array $events)
Register javascript callbacks for specific events.
Set with an associative array where the keys are events and the values are the javascript callback functions.
Valid events are: [ animationfinish | error | onmouseover | onmouseout | ready | select | statechange ]
in
Chart at line 196
Chart
datatable(
DataTable $datatable)
Assigns a datatable to use for the Chart.
in
Chart at line 221
Chart
customize(
array $optionArray)
Sets any configuration option, with no checks for type / validity
This is method was added in 2.5 as a bandaid to remove the handcuffs from users who want to add options that Google has added, that I have not. I didn't intend to restrict the user to only select options, as the goal was to type check and validate. This method can be used to set any option, just pass in arrays with key value pairs for any setting.
If the setting is an object, per the google docs, then use multi-dimensional arrays and they will be converted upon rendering.
in
Chart at line 251
string
getDataTableJson()
Returns a JSON string representation of the datatable.
in
Chart at line 271
string
render(
string $elemId)
Outputs the chart javascript into the page.
Pass in a string of the html elementID that you want the chart to be rendered into.
in
Chart at line 290
Chart
animation(
array $animationConfig)
Set the animation options for a chart.
in
Chart at line 304
Chart
backgroundColor(
array $backgroundColorConfig)
The background color for the main area of the chart.
Can be a simple HTML color string, or hex code, for example: 'red' or '#00cc00'
in
Chart at line 321
Chart
chartArea(
array $chartAreaConfig)
An object with members to configure the placement and size of the chart area (where the chart itself is drawn, excluding axis and legends).
Two formats are supported: a number, or a number followed by %. A simple number is a value in pixels; a number followed by % is a percentage.
in
Chart at line 338
Chart
colors(
array $colorArray)
The colors to use for the chart elements.
An array of strings, where each element is an HTML color string for example:['red','#004411']
in
Chart at line 362
Chart
fontSize(
integer $fontSize)
The default font size, in pixels, of all text in the chart.
You can override this using properties for specific chart elements.
in
Chart at line 378
Chart
fontName(
string $fontName)
The default font face for all text in the chart.
You can override this using properties for specific chart elements.
in
Chart at line 408
Chart
legend(
array $legendConfig)
An object with members to configure various aspects of the legend.
To specify properties of this object, pass in an array of valid options.
in
Chart at line 441
Chart
titlePosition(
string $titlePosition)
Where to place the chart title, compared to the chart area.
Supported values: 'in' - Draw the title inside the chart area. 'out' - Draw the title outside the chart area. 'none' - Omit the title.
in
Chart at line 461
Chart
titleTextStyle(
TextStyle $textStyle)
An array of options for defining the title text style.
in
Chart at line 474
Chart
tooltip(
array $tooltip)
An object with members to configure various tooltip elements.
at line 102
TableChart
allowHtml(
bool $html)
If set to true the GoogleChart will render html tags sorted as values.
at line 115
TableChart
alternatingRowStyle(
bool $astyle)
If set to true the GoogleChart will alternate the role styles.
at line 148
TableChart
cssClassNames(
array $classNameConfig)
An object in which each property name describes a table element, and the property value is a string, defining a class to assign to that table element.
Use this property to assign custom CSS to specific elements of your table. To use this property, assign an object, where the property name specifies the table element, and the property value is a string, specifying a class name to assign to that element. You must then define a CSS style for that class on your page. The following property names are supported: headerRow - Assigns a class name to the table header row (
Example: var cssClassNames = {headerRow: 'bigAndBoldClass', hoverTableRow: 'highlightClass'};
at line 162
TableChart
firstRowNumber(
int $firstRowNumber)
The row number for the first row in the dataTable. Used only if showRowNumber is true.
at line 180
TableChart
frozenColumns(
int $frozenColumns)
The number of columns from the left that will be frozen.
These columns will remain in place when scrolling the remaining columns horizontally. If showRowNumber is false, setting frozenColumns to 0 will appear the same as if set to null, but if showRowNumber is set to true, the row number column will be frozen.
at line 202
TableChart
page(
string $page)
If and how to enable paging through the data.
Choose one of the following string values: 'enable' - The table will include page-forward and page-back buttons. Clicking on these buttons will perform the paging operation and change the displayed page. You might want to also set the pageSize option. 'event' - The table will include page-forward and page-back buttons, but clicking them will trigger a 'page' event and will not change the displayed page. This option should be used when the code implements its own page turning logic. See the TableQueryWrapper example for an example of how to handle paging events manually. 'disable' - [Default] Paging is not supported.
at line 232
TableChart
pageSize(
int $pageSize)
The number of rows in each page, when paging is enabled with the page option.
at line 252
TableChart
pagingButtons(
string|int $paging)
Sets a specified option for the paging buttons. The options are as follows: both - enable prev and next buttons prev - only prev button is enabled next - only next button is enabled auto - the buttons are enabled according to the current page. On the first page only next is shown. On the last page only prev is shown. Otherwise both are enabled.
number - the number of paging buttons to show. This explicit number will override computed number from pageSize.
at line 286
TableChart
rtlTable(
bool $rtl)
Adds basic support for right-to-left languages (such as Arabic or Hebrew) by reversing the column order of the table, so that column zero is the rightmost column, and the last column is the leftmost column. This does not affect the column index in the underlying data, only the order of display. Full bi-directional (BiDi) language display is not supported by the table visualization even with this option. This option will be ignored if you enable paging (using the page option), or if the table has scroll bars because you have specified height and width options smaller than the required table size.
at line 300
TableChart
scrollLeftStartPosition(
int $startPosition)
Sets the horizontal scrolling position, in pixels, if the table has horizontal scroll bars because you have set the width property. The table will open scrolled that many pixels past the leftmost column.
at line 313
TableChart
showRowNumber(
bool $rowNumber)
If set to true, shows the row number as the first column of the table.
at line 333
TableChart
sortTable(
string $sort)
If and how to sort columns when the user clicks a column heading. If sorting is enabled, consider setting the sortAscending and sortColumn properties as well. Choose one of the following string values: 'enable' - [Default] Users can click on column headers to sort by the clicked column. When users click on the column header, the rows will be automatically sorted, and a 'sort' event will be triggered.
'event' - When users click on the column header, a 'sort' event will be triggered, but the rows will not be automatically sorted. This option should be used when the page implements its own sort. See the TableQueryWrapper example for an example of how to handle sorting events manually. 'disable' - Clicking a column header has no effect.
at line 353
TableChart
sortAscending(
bool $sort)
The order in which the initial sort column is sorted. True for ascending, false for descending. Ignored if sortColumn is not specified.
at line 367
TableChart
sortColumn(
int $sort)
An index of a column in the data table, by which the table is initially sorted.
The column will be marked with a small arrow indicating the sort order.
at line 380
TableChart
startPage(
int $start)
The first table page to display. Used only if page is in mode enable/event.


Chargebacks are constantly becoming a major threat to online business, so don’t let chargebacks affect your business bottom line. As a business owner, you might be probably thinking one chargeback doesn’t sound too bad. However, it can quickly add up and impact the bottom line of any growing business and lead to closure of merchant accounts. More...
Any Merchant Account faces a risk of getting closed when the chargeback ratio is more than the bank’s set threshold, which in turn will impact the businesssales and growth and would also never be able to get another merchant account under the same corp. Chargeback Alerts are key to stop the chargeback before it hits the merchant account. More...
Acquiring a merchant account is an extremely strenuous task. In order to run an ecommerce business, a
merchant must have a merchant account to process the customer’s card payments to complete the sales.
On top of opening a merchant account the merchant must also need to team up with a payment gateway
to authorize the payment.
More...
Our company was started by a group of like-minded smart professionals to help merchants thrive in the e-commerce business and safe guard the entire payment lifecycle. On top of a very thought leadership with deep expertise, our team consists of highly skilled professionals to provide exclusive support to our merchant across various industries around the globe. We are committed to our merchants in providing excellent customer service, competitive pricing without any hidden costs, customised solutions and analysis that will meet your business needs and maximize your ROI. So why look elsewhere, switch to Chargeback Patrols right away and start protecting your business.
 As a business owner, you might be probably thinking one chargeback doesn’t sound too bad. However, it can quickly add up and impact the bottom line of any growing business and lead to closure of merchant accounts.
Chargeback in simpler terms is a dispute raised by a card holder (via their issuing bank) against the merchant, to initiate a refund for a purchase made on their card. In the chargeback process, the burden of proof lies with the merchant. The merchant will be given an opportunity to provide supporting documentation to prove the legitimacy of the transaction. If the merchant is successful, the transaction is credited back to his account. If the merchant is unsuccessful, or does not respond in a timely fashion, they will be financially responsible for returning funds to the consumer who filed the dispute. Reasons for Chargeback There are many reasons why a cardholder may dispute the transaction and cause a chargeback to your merchant account.
Fraudulent transactions
Credit Not Processed
Cancelled Recurring
Duplicate Processing
Service Not Provided / Merchandise Not Received
Transaction Not Recognized
Acquiring a merchant account is an extremely strenuous task. In order to run an ecommerce business, a merchant must have a merchant account to process the customer’s card payments to complete the sales. On top of opening a merchant account the merchant must also need to team up with a payment gateway to authorize the payment.
Chargeback Patrols are partnered with various ISO/Processors across the globe to guide the merchants in acquiring new merchant accounts with in a short span of time to start your sales.
Chargeback Patrols have a team of professionals with vast experience in payments industry to help the merchant in the below processes:
Opening a new merchant account
Payment gateway set-up
Cancelled Recurring
Integrating merchant account in CRM
In addition to the above services we also provide the following auxiliary services.
Merchant Account Reconciliation
Customer compliance & resolution
Fulfillment Issues
Customer support audits
Analytical reports
Chargeback Patrols will provide a dedicated professional who will be your one point of contact to address your queries and to provide analytical reports and recommendations in order to increase your business revenue.
Any Merchant Account faces a risk of getting closed when the chargeback ratio is more than the bank’s set threshold, which in turn will impact the business sales and growth and would also never be able to get another merchant account under the same corp. Chargeback Alerts are key to stop the chargeback before it hits the merchant account.
A Chargeback Alert is a notification from a network of banks in real time letting you know that a potential fraud transaction has been confirmed by the issuing bank or a customer has initiated a dispute. This real time notification will give you the opportunity to accept and refund the alert there by will preventing the chargeback from hitting your account.
When you are a merchant, you need chargeback alerts and a chargeback management program that will help you take immediate steps to stop chargeback through alerts, prevent chargebacks and avoid chargeback fees.
We help preventing the chargeback for both fraud and non-fraud chargebacks. Patrols have a dedicated team working 24/7 to process the refund for the alert. To avoid chargebacks, refunds must be processed within 24 hours of receiving the alert – this includes alerts received on the weekends and holidays. If an alerts are not processed within the 24 hour window they turn in to chargebacks and in turn increase the risk level leading to closure of the merchant account.
This website is operated by Chargeback Patrols. Throughout the site, the terms “we”, “us” and “our” refer to Chargeback Patrols. Chargeback Patrols offers this website, including all information, tools and services available from this site to you, the user, conditioned upon your acceptance of all terms, conditions, policies and notices stated here. By visiting our site and/ or purchasing something from us, you engage in our “Service” and agree to be bound by the following terms and conditions (“Terms of Service”, “Terms”), including those additional terms and conditions and policies referenced herein and/or available by hyperlink. These Terms of Service apply to all users of the site, including without limitation users who are browsers, vendors, customers, merchants, and/ or contributors of content. Please read these Terms of Service carefully before accessing or using our website. By accessing or using any part of the site, you agree to be bound by these Terms of Service. If you do not agree to all the terms and conditions of this agreement, then you may not access the website or use any services. If these Terms of Service are considered an offer, acceptance is expressly limited to these Terms of Service. Any new features or tools which are added to the current store shall also be subject to the Terms of Service. You can review the most current version of the Terms of Service at any time on this page. We reserve the right to update, change or replace any part of these Terms of Service by posting updates and/or changes to our website. It is your responsibility to check this page periodically for changes. Your continued use of or access to the website following the posting of any changes constitutes acceptance of those changes. Our store is hosted on Shopify Inc. They provide us with the online e-commerce platform that allows us to sell our products and services to you.
By agreeing to these Terms of Service, you represent that you are at least the age of majority in your state or province of residence, or that you are the age of majority in your state or province of residence and you have given us your consent to allow any of your minor dependents to use this site. You may not use our products for any illegal or unauthorized purpose nor may you, in the use of the Service, violate any laws in your jurisdiction (including but not limited to copyright laws). You must not transmit any worms or viruses or any code of a destructive nature. A breach or violation of any of the Terms will result in an immediate termination of your Services.
We reserve the right to refuse service to anyone for any reason at any time. You understand that your content (not including credit card information), may be transferred unencrypted and involve (a) transmissions over various networks; and (b) changes to conform and adapt to technical requirements of connecting networks or devices. Credit card information is always encrypted during transfer over networks. You agree not to reproduce, duplicate, copy, sell, resell or exploit any portion of the Service, use of the Service, or access to the Service or any contact on the website through which the service is provided, without express written permission by us. The headings used in this agreement are included for convenience only and will not limit or otherwise affect these Terms.
We are not responsible if information made available on this site is not accurate, complete or current. The material on this site is provided for general information only and should not be relied upon or used as the sole basis for making decisions without consulting primary, more accurate, more complete or more timely sources of information. Any reliance on the material on this site is at your own risk. This site may contain certain historical information. Historical information, necessarily, is not current and is provided for your reference only. We reserve the right to modify the contents of this site at any time, but we have no obligation to update any information on our site. You agree that it is your responsibility to monitor changes to our site.
Prices for our products are subject to change without notice. We reserve the right at any time to modify or discontinue the Service (or any part or content thereof) without notice at any time. We shall not be liable to you or to any third-party for any modification, price change, suspension or discontinuance of the Service.
Certain products or services may be available exclusively online through the website. These products or services may have limited quantities and are subject to return or exchange only according to our Return Policy. We have made every effort to display as accurately as possible the colors and images of our products that appear at the store. We cannot guarantee that your computer monitor's display of any color will be accurate. We reserve the right, but are not obligated, to limit the sales of our products or Services to any person, geographic region or jurisdiction. We may exercise this right on a case-by-case basis. We reserve the right to limit the quantities of any products or services that we offer. All descriptions of products or product pricing are subject to change at anytime without notice, at the sole discretion of us. We reserve the right to discontinue any product at any time. Any offer for any product or service made on this site is void where prohibited. We do not warrant that the quality of any products, services, information, or other material purchased or obtained by you will meet your expectations, or that any errors in the Service will be corrected.
We reserve the right to refuse any order you place with us. We may, in our sole discretion, limit or cancel quantities purchased per person, per household or per order. These restrictions may include orders placed by or under the same customer account, the same credit card, and/or orders that use the same billing and/or shipping address. In the event that we make a change to or cancel an order, we may attempt to notify you by contacting the e-mail and/or billing address/phone number provided at the time the order was made. We reserve the right to limit or prohibit orders that, in our sole judgment, appear to be placed by dealers, resellers or distributors. You agree to provide current, complete and accurate purchase and account information for all purchases made at our store. You agree to promptly update your account and other information, including your email address and credit card numbers and expiration dates, so that we can complete your transactions and contact you as needed. For more detail, please review our Returns Policy.
We may provide you with access to third-party tools over which we neither monitor nor have any control nor input. You acknowledge and agree that we provide access to such tools ”as is” and “as available” without any warranties, representations or conditions of any kind and without any endorsement. We shall have no liability whatsoever arising from or relating to your use of optional third-party tools. Any use by you of optional tools offered through the site is entirely at your own risk and discretion and you should ensure that you are familiar with and approve of the terms on which tools are provided by the relevant third-party provider(s). We may also, in the future, offer new services and/or features through the website (including, the release of new tools and resources). Such new features and/or services shall also be subject to these Terms of Service.
Certain content, products and services available via our Service may include materials from third-parties. Third-party links on this site may direct you to third-party websites that are not affiliated with us. We are not responsible for examining or evaluating the content or accuracy and we do not warrant and will not have any liability or responsibility for any third-party materials or websites, or for any other materials, products, or services of third-parties. We are not liable for any harm or damages related to the purchase or use of goods, services, resources, content, or any other transactions made in connection with any third-party websites. Please review carefully the third-party's policies and practices and make sure you understand them before you engage in any transaction. Complaints, claims, concerns, or questions regarding third-party products should be directed to the third-party.
If, at our request, you send certain specific submissions (for example contest entries) or without a request from us you send creative ideas, suggestions, proposals, plans, or other materials, whether online, by email, by postal mail, or otherwise (collectively, 'comments'), you agree that we may, at any time, without restriction, edit, copy, publish, distribute, translate and otherwise use in any medium any comments that you forward to us. We are and shall be under no obligation (1) to maintain any comments in confidence; (2) to pay compensation for any comments; or (3) to respond to any comments. We may, but have no obligation to, monitor, edit or remove content that we determine in our sole discretion are unlawful, offensive, threatening, libelous, defamatory, pornographic, obscene or otherwise objectionable or violates any party’s intellectual property or these Terms of Service. You agree that your comments will not violate any right of any third-party, including copyright, trademark, privacy, personality or other personal or proprietary right. You further agree that your comments will not contain libelous or otherwise unlawful, abusive or obscene material, or contain any computer virus or other malware that could in any way affect the operation of the Service or any related website. You may not use a false e-mail address, pretend to be someone other than yourself, or otherwise mislead us or third-parties as to the origin of any comments. You are solely responsible for any comments you make and their accuracy. We take no responsibility and assume no liability for any comments posted by you or any third-party.
Your submission of personal information through the store is governed by our Privacy Policy. To view our Privacy Policy.
Occasionally there may be information on our site or in the Service that contains typographical errors, inaccuracies or omissions that may relate to product descriptions, pricing, promotions, offers, product shipping charges, transit times and availability. We reserve the right to correct any errors, inaccuracies or omissions, and to change or update information or cancel orders if any information in the Service or on any related website is inaccurate at any time without prior notice (including after you have submitted your order). We undertake no obligation to update, amend or clarify information in the Service or on any related website, including without limitation, pricing information, except as required by law. No specified update or refresh date applied in the Service or on any related website, should be taken to indicate that all information in the Service or on any related website has been modified or updated.
In addition to other prohibitions as set forth in the Terms of Service, you are prohibited from using the site or its content: (a) for any unlawful purpose; (b) to solicit others to perform or participate in any unlawful acts; (c) to violate any international, federal, provincial or state regulations, rules, laws, or local ordinances; (d) to infringe upon or violate our intellectual property rights or the intellectual property rights of others; (e) to harass, abuse, insult, harm, defame, slander, disparage, intimidate, or discriminate based on gender, sexual orientation, religion, ethnicity, race, age, national origin, or disability; (f) to submit false or misleading information; (g) to upload or transmit viruses or any other type of malicious code that will or may be used in any way that will affect the functionality or operation of the Service or of any related website, other websites, or the Internet; (h) to collect or track the personal information of others; (i) to spam, phish, pharm, pretext, spider, crawl, or scrape; (j) for any obscene or immoral purpose; or (k) to interfere with or circumvent the security features of the Service or any related website, other websites, or the Internet. We reserve the right to terminate your use of the Service or any related website for violating any of the prohibited uses.
We do not guarantee, represent or warrant that your use of our service will be uninterrupted, timely, secure or error-free. We do not warrant that the results that may be obtained from the use of the service will be accurate or reliable. You agree that from time to time we may remove the service for indefinite periods of time or cancel the service at any time, without notice to you. You expressly agree that your use of, or inability to use, the service is at your sole risk. The service and all products and services delivered to you through the service are (except as expressly stated by us) provided 'as is' and 'as available' for your use, without any representation, warranties or conditions of any kind, either express or implied, including all implied warranties or conditions of merchantability, merchantable quality, fitness for a particular purpose, durability, title, and non-infringement. In no case shall Chargeback Patrols, our directors, officers, employees, affiliates, agents, contractors, interns, suppliers, service providers or licensors be liable for any injury, loss, claim, or any direct, indirect, incidental, punitive, special, or consequential damages of any kind, including, without limitation lost profits, lost revenue, lost savings, loss of data, replacement costs, or any similar damages, whether based in contract, tort (including negligence), strict liability or otherwise, arising from your use of any of the service or any products procured using the service, or for any other claim related in any way to your use of the service or any product, including, but not limited to, any errors or omissions in any content, or any loss or damage of any kind incurred as a result of the use of the service or any content (or product) posted, transmitted, or otherwise made available via the service, even if advised of their possibility. Because some states or jurisdictions do not allow the exclusion or the limitation of liability for consequential or incidental damages, in such states or jurisdictions, our liability shall be limited to the maximum extent permitted by law.
You agree to indemnify, defend and hold harmless Chargeback Patrols and our parent, subsidiaries, affiliates, partners, officers, directors, agents, contractors, licensors, service providers, subcontractors, suppliers, interns and employees, harmless from any claim or demand, including reasonable attorneys’ fees, made by any third-party due to or arising out of your breach of these Terms of Service or the documents they incorporate by reference, or your violation of any law or the rights of a third-party.
In the event that any provision of these Terms of Service is determined to be unlawful, void or unenforceable, such provision shall nonetheless be enforceable to the fullest extent permitted by applicable law, and the unenforceable portion shall be deemed to be severed from these Terms of Service, such determination shall not affect the validity and enforceability of any other remaining provisions.
The obligations and liabilities of the parties incurred prior to the termination date shall survive the termination of this agreement for all purposes. These Terms of Service are effective unless and until terminated by either you or us. You may terminate these Terms of Service at any time by notifying us that you no longer wish to use our Services, or when you cease using our site. If in our sole judgment you fail, or we suspect that you have failed, to comply with any term or provision of these Terms of Service, we also may terminate this agreement at any time without notice and you will remain liable for all amounts due up to and including the date of termination; and/or accordingly may deny you access to our Services (or any part thereof).
The failure of us to exercise or enforce any right or provision of these Terms of Service shall not constitute a waiver of such right or provision. These Terms of Service and any policies or operating rules posted by us on this site or in respect to The Service constitutes the entire agreement and understanding between you and us and govern your use of the Service, superseding any prior or contemporaneous agreements, communications and proposals, whether oral or written, between you and us (including, but not limited to, any prior versions of the Terms of Service). Any ambiguities in the interpretation of these Terms of Service shall not be construed against the drafting party.
These Terms of Service and any separate agreements whereby we provide you Services shall be governed by and construed in accordance with the laws of P.O. 7283 New York st.,, Redlands, CA, 92373, United States.
You can review the most current version of the Terms of Service at any time at this page. We reserve the right, at our sole discretion, to update, change or replace any part of these Terms of Service by posting updates and changes to our website. It is your responsibility to check our website periodically for changes. Your continued use of or access to our website or the Service following the posting of any changes to these Terms of Service constitutes acceptance of those changes.
Questions about the Terms of Service should be sent to us at info@chargebackpatrols.com.


MY FAVORITE MARTIAN A movie review by Joe Barlow (c) Copyright 1999
STARRING: Christopher Lloyd, Jeff Daniels, Darryl Hannah, Ray Walston DIRECTOR: Donald Petrie WRITERS: Sherri Stoner and Deanna Oliver RATED: PG RELEASED: 1999
RATING: ** 1/2 (out of a possible ****)
Whoever thought to cast Christopher Lloyd as the alien in Disney's new remake of "My Favorite Martian" is to be commended, as he tends to look like he's just visiting this planet to begin with. Lloyd's unusual face and voice make him perfect for the role of "Uncle Martin," a friendly extraterrestrial who finds himself stranded on Earth after a spaceship crash.
Donald Petrie's remake of the '60s television series is agreeable enough, I suppose: it's bright, zany, and smart enough to reinvent the characters for the 1990s, rather than locking them into a 1960s mentality (as in the recent "Brady Bunch" films). There's a lot of action and humor which borders on the surreal (watch as Jeff Daniels and Daryl Hannah try Martian gum for the first time), but unfortunately that doesn't stop the movie from following a routine storyline which culminates in an unnecessary (and distracting) romance.
Tim O'Hara (Jeff Daniels) is an unsuccessful TV producer who works for a local news program. Although Tim rarely gets to cover the big stories, he finds one when he observes a crashing spaceship. Tim eventually befriends the alien inside, an excitable but friendly creature he christens Uncle Martin.
Martin is quite a character. Able to control gravity and change his shape, the curious alien enjoys learning about Earth culture from his new friend. One of his favorite Earth delicacies is ice cream, which for Martin has an effect similar to alcohol. (You'd think the first ice cream hangover would teach him a lesson, but no.) Martin and Tim also debate whether Earth or Martian culture is superior:
MARTIN: "Human astronauts pee in their space suits! Case closed!"
You know you're watching a Disney film when an article of clothing becomes one of the most memorable characters. Martin's spacesuit, Zoot, is animate, loves to talk, and has a personality more concretely defined than any of the human characters. This is a good idea in theory, but Zoot is so unique that everyone else seems much less interesting by comparison, including Martin himself.
Daryl Hannah, for example, is basically wasted in the role of Lizzie, Tim's friend and co-worker. She's here only to be the requisite love interest, and to help Tim and Martin escape from one particularly nasty situation they later find themselves in (a trick she accomplishes with the help of the aforementioned Martian gum). Although she gets a lot of screen time, Lizzie is unfortunately never allowed to be anything more than a plot point. (Why is it that no one is ever in a happy relationship at the *beginning* of a movie?)
Ray Walston, who played the original Uncle Martin in the television series, gets an extended cameo here as a SETI official hot on the trail of the alien. The role is thoroughly unnecessary, and appears to have been inserted for no other reason than to give Walston a reason to appear in the film. He plays up to the camera big time: as we know, Martians get "drunk" on ice cream. Witness how Walston turns right to the camera at one point and takes a big bite of vanilla. I guess it's supposed to be ironic that the former Martian is now eating ice cream, but it comes across as nothing more than camera-hogging. Yeah, hi Ray. We see you.
Perhaps most disappointing is the film's willingness to follow its characters down irrelevant tangents, even when urgency is required. Martin appears frantic when he discovers that an explosion will result if he doesn't take off within 12 hours, but nonetheless, he and Tim go about their business in a leisurely manner. And I was most surprised to discover that an alternator from an American car will interface with a Martian spacecraft engine with no rewiring whatsoever. Neato.
I know, I know, I'm missing the point. As a kids' movie, there's nothing wrong with "My Favorite Martian"; parts of it are fun, and Lloyd in particular goes above and beyond the call of duty to keep the audience laughing. But like most science-fiction films, the movie relies more on effects than story. Kids will probably enjoy it, and so will adults (if they have a love for wacky physical comedy), but I was hoping for a little less formula and a little more science.
E-Mail<EMAIL_ADDRESS>Joe Barlow on Film: http://www.ipass.net/~jbarlow/film.htm
If you'd like to receive new film reviews by e-mail, please write to<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Distributed Streams
Now that Infinispan supports Java 8, we can take full advantage of some of the new features. One of the big features of Java 8 is the new Stream classes. This flips the head on processing data so that instead of having to iterate upon the data yourself the underlying Stream handles that and you just provide the operations to perform on it. This lends itself great to distributed processing as the iteration is handled entirely by the implementation (in this case Infinispan).
I therefore am glad to introduce for Infinispan 8, the feature Distributed Streams! This allows for any operation you can perform on a regular Stream to also be performed on a Distributed cache (assuming the operation and data is marshallable).
Marshallability
When using a distributed or replicated cache, the keys and values of the cache must be marshallable. This is the same case for intermediate and terminal operations when using the distributed streams. Normally you would have to provide an instance of some new class that is either Serializable or has an Externalizer registered for it as described in the marshallable section of the user guide.
However, Java 8 also introduced lambdas, which can be defined as serializable very easily (although it is a bit awkward). An example of this serialization can be found here.
Some of you may also be aware of the Collectors class which is used with the collect method on a stream. Unfortunately, all of the Collectors produced are not able to be marshalled. As such, Infinispan has added a utility class that can work in conjunction with the Collectors class. This allows you to still use any combination of the Collectors classes and still work properly when everything is required to be marshalled.
Parallelism
Java 8 streams naturally have a sense of parallelism. That is that the stream can be marked as being parallel. This in turn allows for the operations to be performed in parallel using multiple threads. The best part is how simple it is to do. The stream can be made parallel when first retrieving it by invoking parallelStream or you can optionally enable it after the Stream is retrieved by just invoking parallel.
The new Distributed streams from Infinispan take this one step further, which I am calling parallel distribution. That is that since data is already partitioned across nodes we can also allow operations to be ran simultaneously on different nodes at the same time. This option is enabled by default. However this can be controlled by using the new CacheStream interface discussed just below. Also, to be clear, the Java 8 parallel can be used in conjunction with parallel distribution. This just means you will have concurrent operations running on multiple nodes across multiple threads on each node.
CacheStream interface
There is a new interface Cachestream provided that allows for controlling additional options when using a Distributed Stream. I am highlighting the added methods (note comments have been removed from gist)
distributedBatchSize
This method controls how many elements are brought back at one time for operations that are key aware. These operations are (spl)iterator and forEach. This is useful to tweak how many keys are held in memory from a remote node. Thus it is a tradeoff of performance (more keys) versus memory. This defaults to the chunk size as configured by state transfer.
parallelDistribution / sequentialDistribution
This was discussed in the parallelism section above. Note that all commands have this enabled by default except for spl(iterator) methods.
filterKeys
This method can be used to have the distributed stream only operate on a given set of keys. This is done in a very efficient way as it will only perform the operation on node(s) that own the given keys. Using a given set of keys also allows for constant access time from the data container/store as the cache doesn’t have to look at every single entry in the cache.
filterKeySegments (advanced users only)
This is useful to do filtering of instances in a more performant way. Normally, you could use the filter intermediate operation, but this method is performed before any of the operations are performed to most efficiently limit the entries that are presented for stream processing. For example, if only a subset of segments are required, it may not have to send a remote request.
segmentCompletionListener (advanced users only)
Similar to the previous method, this is related to key segments. This listener allows for the end user to be notified when a segment has been completed for processing. This can be useful if you want to keep track of completion and if this node goes down, you can rerun the processing with only the unprocessed segments. Currently, this listener is only supported for spl(iterator) methods.
disableRehashAware (advanced users only)
By default, all stream operations are what is called rehash aware. That is if a node joins or leaves the cluster while the operation is in progress the cluster will be aware of this and ensure that all data is processed properly with no loss (assuming no data was actually lost).
This can be disabled by calling disableRehashAware; however, if a rehash is to occur in the middle of the operation, it is possible that all data may not be processed. It should be noted that data is not processed multiple times with this disabled, only a loss of data can occur.
This option is not normally recommended unless you have a situation where you can afford to only operate on a subset of data. The tradeoff is that the operation can perform faster, especially (spl)iterator and forEach methods.
Map/Reduce
The age old example of map/reduce is always word count. Streams allow you to do that as well! Here is an equivalent word count example assuming you have a Cache containing String keys and values and you want the count of all words in the values. Some of you may be wondering how this relates to our existing map/reduce framework. The plan is to deprecate the existing Map/Reduce and replace it completely with the new distributed streams at a later point.
Remember though that distributed streams can do so much more than just map/reduce. And there are a lot of examples already out there for streams. To use the distributed streams, you just need to make sure your operations are marshallable, and you are good to go.
Here are a few pages with examples of how to use streams straight from Oracle:
http://www.oracle.com/technetwork/articles/java/ma14-java-se-8-streams-2177646.html http://www.oracle.com/technetwork/articles/java/architect-streams-pt2-2227132.html
I hope you enjoy Distributed Streams. We hope they change how you interact with your data in the cluster!
Let us know what you think, any issues or usages you would love to share!
Cheers,
Will


{% extends "free_software.html" %} {% block logo %} {% endblock %} {% block software %}
BizSpark is a program that Microsoft offers to small organizations which includes many common Microsoft products and free Azure credits for hosting.
Through Bizspark, your Brigade will get 12 months of many Microsoft products including Microsoft Office, Microsoft Developer Network (including Visual Studio and SQL Server), and Microsoft Windows.
In addition, up to five of your developers will receive a $150 monthly credit for Microsoft Azure that they can apply to their project.
Request a code from<EMAIL_ADDRESS>and follow these instructions!
{% endblock %}


The Challenge
Ray Allen Manufacturing is a US-based manufacturer of professional canine training products sold in the law enforcement, military, and working dog markets. It also owns J&J Dog Supplies, a smaller business that targets dog trainers and AKC sport/agility enthusiasts. RA wants to expand beyond its current B2B scope to a B2C commercial base.
Marketing Research & Analytics
Our team first conducted in-home or phone interviews with current customers as well as other dog owners through our own network that may not be aware of the Ray Allen brand. We drafted our interview guide to understand owners relationships with their dog(s), their routines, and purchasing drivers, while also noting customer demographics data.
The qualitative research we conducted led us to a general framework of potential and current customers. The below Venn diagram was drafted to understand where potential in the Ray Allen brand lies:
We used this framework to advise our wide-scale survey to customers. We used Qualtrics to field a survey screened for active dog owners who are open to purchasing dog equipment online, and who have annual household income above $75,000. These screens were based on both our qualitative research and feedback from Ray Allen. Our survey consisted of 26 questions around desirable product features, distribution channel, influences, segmentation, and demographics. We received responses from a wide variety of backgrounds that fit our screeners, below is a map of our responses:
After receiving our response data and performing a thorough clean, we performed a clustering analysis using R to determine segmentation and targeting recommendations. The enabled us to investigate demographics of target segments, features, and purchase influences.
The insights from this analysis were not groundbreaking by any stretch. But it helped us develop a solid go-to-market and guide further decision-making for Ray Allen. Ray Allen has a real opportunity to double down on being the market leader in dog gear used by professional dog trainers and handlers.
Target customers still prefer to purchase in physical stores but find information and referrals via online channels. We suggested videos, easy return & online reviews are must-haves in their go-to market. Online, digital channels are untapped in their space - Facebook and review websites are the best ways to find their targets.
The Takeaway
All in all, the potential B2C market still values the Ray Allen brand (and subbrands) for what they currently stand for. As a B2B company, the don't need to pivot their brand, mission, or values in order to build a digital presence. Rather, they need to lean into it more, their current and target customers are already online, it's just a matter of finding and meeting them where they are.
On a personal/professional level, practicing leveraging a limited number of qualitative interviews to inform quantitative surveys is extremely important to any brand or product. We may be tempted to just automate a survey away, but talking to customers/users first can make your research much more impactful.


The global Pikari object. To initialize, add listeners and call Pikari.start.
Members
(static) data :Map.<string, *>
Local copy of the database.
Keys identify fields and values are field values.
Keys should be strings but values can be any objects, even nested.
If you want to delete a field from database, set it's value to null.
Changes to fields committed by any user are automatically updated.
Keys identify fields and values are field values.
Keys should be strings but values can be any objects, even nested.
If you want to delete a field from database, set it's value to null.
Changes to fields committed by any user are automatically updated.
Type:
- Map.<string, *>
Example
if (await Pikari.setLocks("somefield", someotherfield)) {
Pikari.data.set("somefield", "some value")
Pikari.data.get(someotherfield)[someproperty] = "some value"
Pikari.commit()
}
(static) locks :Object.<string, Pikari.Lock>
Locks that are currently held.
Object's property names (keys) identify the locks and properties are of type Pikari.Lock.
Changes to locks can be listened with Pikari.addLockListener.
Object's property names (keys) identify the locks and properties are of type Pikari.Lock.
Changes to locks can be listened with Pikari.addLockListener.
Type:
- Object.<string, Pikari.Lock>
(static) mylocks :Array.<string>
Names of locks that are currently held by the current user.
Locks can be acquired with Pikari.setLocks.
At least one lock must be held before commit can be called.
Locks can be acquired with Pikari.setLocks.
At least one lock must be held before commit can be called.
Type:
- Array.<string>
(static) user :string
Name of the user. Automatically generated if not explicitly given as user query param in url or at Pikari.start.
Maximum length of a name is 200 letters.
Type:
- string
(static) users :Map.<string, Date>
Users currenty online.
Keys identify users and values tell the times when users became online.
Changes to user presence can be listened with Pikari.addUserListener.
The users map is ordered by ascending connection time (which means that Pikari.user is last at Pikari.EVENT.START)
Keys identify users and values tell the times when users became online.
Changes to user presence can be listened with Pikari.addUserListener.
The users map is ordered by ascending connection time (which means that Pikari.user is last at Pikari.EVENT.START)
Type:
- Map.<string, Date>
Methods
(static) addChangeListener(handler)
Add handler for change events.
Parameters:
| Name | Type | Description |
|---|---|---|
handler |
changeCallback | Pikari.changeCallback |
(static) addLockListener(handler)
Add handler for changes in lock ownerships.
Parameters:
| Name | Type | Description |
|---|---|---|
handler |
lockCallback | Pikari.lockCallback |
(static) addMessageListener(handler)
Add handler for messages sent by other users.
Parameters:
| Name | Type | Description |
|---|---|---|
handler |
messageCallback | Pikari.messageCallback |
(static) addUserListener(handler)
Add handler for changes in on-line users.
Parameters:
| Name | Type | Description |
|---|---|---|
handler |
userCallback | Pikari.userCallback |
(static) clean(str) → {string}
Helper function to clean a string so that it can be safely used as innerHTML.
Parameters:
| Name | Type | Description |
|---|---|---|
str |
string | the string to be cleaned |
Returns:
the cleaned version.
- Type
- string
(static) commit()
Commit changes to data fields.
Only fields that are changed will be transferred to server.
Will release all locks.
Only fields that are changed will be transferred to server.
Will release all locks.
Throws:
if no locks are held ("no transaction is active") an error will be thrown
(static) generateKey() → {number}
Helper function to generate a number that is unique enough for prototyping purposes.
Returns:
a random integer that is hopefully unique.
- Type
- number
(static) getFields() → {Array.<string>}
A helper function to get data field names as an array.
Returns:
Array of field names.
- Type
- Array.<string>
(static) getOrDefault(field, defaultvalue) → {*}
A helper function to get field value or default if undefined.
The default will be set to local data but not sent to server database.
Parameters:
| Name | Type | Description |
|---|---|---|
field |
string | Field name. |
defaultvalue |
* | The default value if field is undefined. |
Returns:
The field value or defaultvalue.
- Type
- *
(static) log(event)
Send some string to be added to the server-side log.
Parameters:
| Name | Type | Description |
|---|---|---|
event |
string | the string to be added; will be truncated to 10000 letters. |
(static) logOut()
Log out user. Pikari will respond by closing the web socket connection which triggers Pikari.stopCallback.
(static) rollback()
Rollback any changes to data fields.
Will cause a local Pikari.changeCallback with a list of rolled-back (modified) fields.
Will cause a local Pikari.changeCallback with a list of rolled-back (modified) fields.
Throws:
if no locks are held ("no transaction is active") an error will be thrown
(static) sendMessage(message, receivers)
Send a message to other on-line users.
Parameters:
| Name | Type | Description |
|---|---|---|
message |
the message to send | |
receivers |
string | Array.<string> | a receiver or array of receivers. If missing or empty, the message will be sent to all users. |
(async, static) setLocks(…locks) → {boolean}
Acquire locks to data before making changes and committing ("start a transaction").
Locks prevent concurrent modification by multiple users.
The basic procedure is to use names-of-fields-to-be-changed as lock names.
If lock setting fails (because required locks were already locked by other user(s)), all currently held locks by the user are released (to prevent dead-locks).
Note: Remember to await for the return value, this is an async function.
Locks prevent concurrent modification by multiple users.
The basic procedure is to use names-of-fields-to-be-changed as lock names.
If lock setting fails (because required locks were already locked by other user(s)), all currently held locks by the user are released (to prevent dead-locks).
Note: Remember to await for the return value, this is an async function.
Parameters:
| Name | Type | Attributes | Description |
|---|---|---|---|
locks |
string |
<repeatable> |
names (or array(s) of names) of the locks to lock. If locks is missing or empty, tries to acquire all existing field names. |
Returns:
true if locking was successful. False if user lost all locks and is not eligible to Pikari.commit.
- Type
- boolean
(static) setStopListener(handler)
Set handler for the stop event.
Parameters:
| Name | Type | Description |
|---|---|---|
handler |
stopCallback | Pikari.stopCallback |
(static) start(user, password)
Connects the Pikari client to the Pikari server with given name and password (both optional).
If a user with same name is already connected, existing user will be immediately disconnected.
Parameters:
| Name | Type | Description |
|---|---|---|
user |
string | user name (max 200 letters). If user is false, user name from URL query param is used. If URL query param does not exist and user is "prompt", user name is asked. Finally, if no user name is given, a random name is used. |
password |
string | if password is set for application, this must match it |
(static) waiting(waiting)
A helper function set wait cursor and disable all elements
Parameters:
| Name | Type | Description |
|---|---|---|
waiting |
boolean | true for waiting, false for defaulting cursor and re-enabling elements |
Type Definitions
changeCallback(changetype, changedfields, changer)
Triggered whenever data might have been changed.
Parameters:
| Name | Type | Description |
|---|---|---|
changetype |
EVENT | Pikari.EVENT |
changedfields |
Array.<string> | an array of changed field names |
changer |
string | changer's name ("" if EVENT == START) |
EVENT
Describes the reason for data change in {changeCallback}
Type:
- Object
Properties:
| Name | Type | Description |
|---|---|---|
START |
string | Connection with server is established (see Pikari.start) or server restarted itself |
COMMIT |
string | Someone committed data (see Pikari.commit) |
ROLLBACK |
string | The local user rollbacked (see Pikari.rollback) |
Lock
Type:
- Object
Properties:
| Name | Type | Description |
|---|---|---|
lockedby |
string | current lock owner |
lockedsince |
string | The start time of locking |
lockCallback()
Triggered when locks are acquired or released.
Note: also local Pikari.setLocks calls will trigger the lockCallback.
Note: also local Pikari.setLocks calls will trigger the lockCallback.
messageCallback(sender, message)
Triggered when a user sends a message.
Parameters:
| Name | Type | Description |
|---|---|---|
sender |
string | sender of the message |
message |
string | the message itself |
stopCallback() → {boolean}
Triggered at most once, only if connection to server is lost (usually might happen when server is closed).
Returns:
- Return true to prevent default handling (which disables all elements and shows an alert).
- Type
- boolean
userCallback(user, login)
Triggered when a user logs in or disconnects.
Parameters:
| Name | Type | Description |
|---|---|---|
user |
string | the user that logged in or disconnected |
login |
boolean | true iff the user logged in |


Random Audio Splicer
Audio files
Minimum segment duration (seconds)
Maximum segment duration (seconds)
Total duration (seconds)


The OpenJade TeX backendCreated by David Megginson, Sebastian Rahtz
and Kathleen Marszalek
|
| Characteristic | Default Value | DSSSL Equivalent |
|---|---|---|
\AsisWrapIndent |
0 [#f] |
|
\BackgroundColor |
0 [#f] |
|
\BackgroundLayer |
-1 |
|
\BackgroundTile |
0 [#f] |
|
\BorderAlignment |
center |
|
\BorderOmitAtBreak |
0 [#f] |
|
\BorderPresent |
1 [true] |
|
\BorderPriority |
0 |
|
\BottomMargin |
0pt |
|
\BoxBorderAlignment |
outside |
|
\BoxCornerRadius |
0pt |
[note] |
\BoxOpenEnd |
0 [#f] |
|
\BoxSizeAfter |
4pt |
|
\BoxSizeBefore |
8pt |
|
\BoxType |
border |
|
\CellAfterColumnMargin |
0pt |
|
\CellAfterRowMargin |
0pt |
|
\CellBackground |
0 [#f] |
|
\CellBeforeColumnMargin |
0pt |
|
\CellBeforeRowMargin |
0pt |
|
\CellCrossed |
0 [#f] |
|
\CellRowAlignment |
start |
|
\Color |
current gray | |
\Country |
0 [#f] |
|
\DisplayAlignment |
start |
|
\EndIndent |
0pt |
|
\EndMargin |
0pt |
|
\ExpandTabs |
8 |
|
\FieldAlign |
start |
|
\FieldWidth |
0pt |
|
\FillingDirection |
top-to-bottom |
|
\FirstLineStartIndent |
0pt |
|
\FloatOutLineNumbers |
0 [#f] |
|
\FloatOutMarginalia |
0 [#f] |
|
\FloatOutSidelines |
0 [#f] |
|
\FontFamilyName |
iso-serif |
|
\FontName |
0 [#f] |
|
\FontPosture |
upright |
|
\FontProportionateWidth |
medium |
|
\FontSize |
10pt |
|
\FontStructure |
solid |
|
\FontWeight |
medium |
|
\FooterMargin |
0pt |
|
\GlyphAlignmentMode |
font |
|
\GlyphReorderMethod |
?? |
|
\GlyphSubstMethod |
?? |
|
\HangingPunct |
0 [#f] |
|
\HeaderMargin |
0pt |
|
\Hyphenate |
?? |
|
\HyphenationKeep |
0 [#f] |
|
\HyphenationLadderCount |
0 [#f] |
|
\HyphenationMethod |
?? |
|
\HyphenationPushCharCount |
2 |
|
\HyphenationRemainCharCount |
2 |
|
\IgnoreRecordEnd |
0 [#f] |
|
\ImplicitBidiMethod |
0 [#f] |
|
\InhibitLineBreaks |
0 [#f] |
|
\InputWhitespaceTreatment |
?? |
|
\JustifyGlyphSpaceMaxAdd |
0pt |
|
\JustifyGlyphSpaceMaxRemove |
0pt |
|
\Kern |
?? |
|
\KernMode |
?? |
|
\Language |
0 [#f] |
|
\LastLineEndIndent |
0pt |
|
\LastLineJustifyLimit |
0pt |
|
\LastLineQuadding |
relative |
|
\Layer |
0 |
|
\LeftMargin |
0pt |
|
\Ligature |
?? |
|
\LineBreakingMethod |
0 [#f] |
|
\LineCap |
butt |
|
\LineCompositionMethod |
0 [#f] |
|
\LineJoin |
miter |
|
\LineNumberSep |
?? |
|
\LineNumberSide |
?? |
|
\LineRepeat |
1 |
|
\LineSep |
1pt |
|
\LineSpacing |
12pt |
|
\LineThickness |
1pt |
|
\Lines |
wrap |
|
\MarginaliaKeepWithPrevious |
0 [#f] |
|
\MarginaliaSep |
0pt |
|
\MarginaliaSide |
start |
|
\MathDisplayMode |
?? |
|
\MinLeaderRepeat |
1 |
|
\NColumnsSpanned |
1 |
|
\NRowsSpanned |
1 |
|
\NumberedLines |
1 [true] |
|
\OrphanCount |
2 |
|
\PageHeight |
sysdep | |
\PageWidth |
sysdep | |
\PositionPointShift |
0pt |
|
\PrincipalModeSimultaneous |
0 [#f] |
|
\Quadding |
start |
|
\RightMargin |
0pt |
|
\ScoreSpaces |
1 [true] |
|
\SidelineSep |
required | |
\SidelineSide |
required | |
\Span |
1 |
|
\SpanWeak |
0 [#f] |
|
\StartIndent |
0pt |
|
\StartMargin |
0pt |
|
\TableAutoWidthMethod |
0 [#f] |
|
\TableCornerRadius |
0pt |
[note] |
\TablePartOmitMiddleFooter |
0 [#f] |
|
\TablePartOmitMiddleHeader |
0 [#f] |
|
\TopMargin |
0pt |
|
\WidowCount |
2 |
|
\WritingMode |
left-to-right |
\BoxCornerRadius
combines the box-corner-rounded
and
box-corner-radius
characteristics (its value is
0pt
if box-corner-rounded is #f
).\TableCornerRadius
combines the table-corner-rounded
and
table-corner-radius
characteristics (its value is
0pt
if table-corner-rounded
is
#f
).The characteristics in the following table are not inherited -- you should set these to their default values at the beginning of every relevant flow-object, before evaluating the SETTINGS argument:
| Characteristic | Default Value | DSSSL Equivalent |
|---|---|---|
\AlignLeader |
1 [true] |
|
\BreakAfter |
0 [#f] |
|
\BreakAfterPriority |
0 |
|
\BreakBefore |
0 [#f] |
|
\BreakBeforePriority |
0 |
|
\Ch |
no default | |
\CoalesceId |
0 [#f] |
|
\ColumnIndex |
contextual | column-number [??] |
\EntitySystemId |
required | |
\EscapementDirection |
writing-mode |
|
\GlyphId |
no default | |
\IdrefAddress |
?? |
|
\IsDisplay |
0 [#f] |
|
\IsDropAfterLineBreak |
unspecified | |
\IsDropUnlessBeforeLineBreak |
unspecified | |
\IsPunct |
unspecified | |
\IsInputTab |
unspecified | |
\IsInputWhiteSpace |
unspecified | |
\IsRecordEnd |
unspecified | |
\IsSpace |
unspecified | |
\Keep |
0 [#f] |
|
\KeepWithNext |
0 [#f] |
|
\KeepWithPrevious |
0 [#f] |
|
\Length |
context | |
\MathClass |
unspecified | |
\MathFontPosture |
unspecified | |
\MaxHeight |
contextual | |
\MaxWidth |
contextual | |
\MayViolateKeepAfter |
0 [#f] |
|
\MayViolateKeepBefore |
0 [#f] |
|
\NotationSystemId |
required | |
\Orientation |
required | |
\PositionPointX |
?? |
|
\PositionPointY |
?? |
|
\PositionPreference |
0 [#f] |
position-preference |
\ScaleType |
maxuniform |
scale [note] |
\ScaleX |
n/a | scale [note] |
\ScaleY |
n/a | scale [note] |
\ScoreLength |
?? |
|
\ScoreType |
required | type |
\Script |
unspecified | |
\SpaceAfterConditional |
0 [#f] |
space-after |
\SpaceAfterForce |
0 [#f] |
space-after |
\SpaceAfterMax |
0pt |
space-after |
\SpaceAfterMaxFactor |
0 |
space-after |
\SpaceAfterMin |
0pt |
space-after |
\SpaceAfterMinFactor |
0 |
space-after |
\SpaceAfterNominal |
0pt |
space-after |
\SpaceAfterNominalFactor |
0 |
space-after |
\SpaceAfterPriority |
0 |
space-after |
\SpaceBeforeConditional |
0 [#f] |
space-before |
\SpaceBeforeForce |
0 [#f] |
space-before |
\SpaceBeforeMax |
0pt |
space-before |
\SpaceBeforeMaxFactor |
0 |
space-before |
\SpaceBeforeMin |
0pt |
space-before |
\SpaceBeforeMinFactor |
0 |
space-before |
\SpaceBeforeNominal |
0pt |
space-before |
\SpaceBeforeNominalFactor |
0 |
space-before |
\SpaceBeforePriority |
0 |
space-before |
\StretchFactor |
0 |
|
\TableWidth |
contextual | |
\TruncateLeader |
0 [#f] |
|
\Width |
required | [note] |
ScaleType
, ScaleX
,
and ScaleY
are all the equivalent of the
scale
characteristic: if ScaleType
is
0
[#f
], then ScaleX
and
ScaleY
become relevant.Width
characteristic is not
required if table-auto-width
feature is present.