--- layout: post title: backbone-jasmine tags: - backbone.js - bdd - jasmine - JavaScript - javascript status: publish type: post published: true meta: aktt_notify_twitter: 'no' _edit_last: '2' ---
More for my own sanity than anything else, I'll be building up a simple interface, that will query an API and display the results in a view. The process will involve writing a test in Jasmine and then writing some code to make it pass.
The idea is that there will be a:
To get started everything is in the setup branch. I have also included a simple node https server to serve up the the SpecRunner file (running on http://localhost:3000), a few helper libraries (jasmine-jquery and jasmine-sinon) with additional matchers.
Basically I intend to hit the blizzard API to retrieve the feed of a given character on a given realm. To start off let's create a search view and get started with a really basic test to load a fixture and make sure it's been been loaded (see commit).
Next let's set up Backbone.js to bind to that fixture. It's a good idea to namespace your JS, so we'll introduce a BackboneJasmine namespace for all of the code. This is now a global variable, so the gobal namespace checker will complain, so we need to update the globalNameSpaceChecker.spec.js file to allow this variable.
Next we can go ahead and create our search view (see commit).
beforeEach(function () {
loadFixtures('search-form.html')
this.view = new BackboneJasmine.SearchView();
});
it('should load a fixture', function () {
expect($('section.search-form')).toExist();
});
describe('instantiation', function () {
it('should create search container', function () {
expect(this.view.el.nodeName).toEqual('SECTION');
});
});
Right now there's a blank container, time to add some form fields. It would be nice to bind these fields to a model and set some default values. Furthermore at a later stage the model will be used to validate the field values. Let's put some tests around creating a Search View Model, instantiating it with some default values. Here's the test code:
beforeEach(function() {
this.model = new BackboneJasmine.SearchModel();
});
it('should instantiate', function() {
expect(this.model.get('characterName')).toBe('Artaios');
expect(this.model.get('realm')).toBe('Aman\'thul');
});
Time to build up the SearchModel and make sure it instantiates with sensible defaults (see SearchModel.js for commit).
Backbone has a validate() method, that gets called whenever an attribute is set or the model is saved. This in turn triggers an error event when things aren't quite right. So let's try and put it to use and write some tests around not being able to set an empty character and realm.
describe('validation', function () {
beforeEach(function () {
this.errorEventSpy = sinon.spy();
this.model.bind('error', this.errorEventSpy);
this.changeEventSpy = sinon.spy();
this.model.bind('change', this.changeEventSpy);
});
it('should not allow an empty character name', function() {
this.model.set({characterName: ''});
expect(this.changeEventSpy).not.toHaveBeenCalled();
expect(this.errorEventSpy).toHaveBeenCalled();
expect(this.model.get('characterName')).toBe(this.characterName);
});
it('should not allow an empty realm name', function() {
this.model.set({realm: ''});
expect(this.changeEventSpy).not.toHaveBeenCalled();
expect(this.errorEventSpy).toHaveBeenCalled();
expect(this.model.get('realm')).toBe(this.realm);
});
});
I am using sinon for spying in these examples and I have also pulled in a bunch of custom matchers. The code to help the tests pass can found @ commit.
Time to hook the code into back into the View Model, let's start by taking the default values from the model and putting into the view. Here's the test code:
it('should populate the form fields with values from the model', function() {
expect($('#characterName').val()).toBe(this.view.model.get('characterName'));
expect($('#realm').val()).toBe(this.view.model.get('realm'));
});
The code to make this test pass can be found here
With some basic validation in place, it's time to return to the view and write some tests around saving values set in the view back to the model and also make sure the validation is triggered.
describe('saving values back to the model', function() {
it('should save entered values back to our model', function() {
var name = 'Some name',
realm = 'Some realm';
$('#characterName').val(name);
$('#realm').val(realm);
$('button').trigger('click');
expect(this.view.model.get('characterName')).toBe(name);
expect(this.view.model.get('realm')).toBe(realm);
});
});
Now write some code to make the test pass, by first binding an event to a click action which calls a method to set the values in the model here. Likewise we can now test that the we cannot store empty values:
describe('validation fails', function() {
it('should not save values if the validation fails', function() {
var originalName = this.view.model.get('characterName'),
originalRealm = this.view.model.get('realm');
$('#characterName').val('');
$('#realm').val('');
$('button').trigger('click');
expect(this.view.model.get('characterName')).toBe(originalName);
expect(this.view.model.get('realm')).toBe(originalRealm);
});
});
Making use of the error event that has been raised by the model, let's see if we can't push something into the view to help fix those errors. Let start by testing for an error class and a data-error attribute. The test has been re-worked a little:
describe('validation fails', function() {
beforeEach(function() {
this.originalName = this.view.model.get('characterName'),
this.originalRealm = this.view.model.get('realm');
$('#characterName').val('');
$('#realm').val('');
$('button').trigger('click');
});
.....
it('should show error messages in the UI', function() {
expect($('#characterName')).toHaveClass('error');
expect($('#characterName').data('error')).toBeDefined();
expect($('#characterName').data('error')).toBe('empty character name supplied');
});
});
The code to make this test pass can be found here. Let's expand this test a little and play with spies and test that the setError method was actually called. I am doing this because it's a concept I am wrestling with. Short of monkey patching, I have not been able to set up spies on events that are bound when the view initialises. However, you can set a spy on a method gets called as part of the event execution (such as the setError method in this case). So the test is updated as follows:
beforeEach(function() {
var spy = sinon.spy(this.view, 'setError');
this.originalName = this.view.model.get('characterName'),
this.originalRealm = this.view.model.get('realm');
$('#characterName').val('');
$('#realm').val('');
$('button').trigger('click');
});
afterEach(function() {
this.view.setError.restore();
});
...
it('should show error messages in the UI', function() {
expect(this.view.setError).toHaveBeenCalled();
expect($('#characterName')).toHaveClass('error');
expect($('#characterName').data('error')).toBeDefined();
expect($('#characterName').data('error')).toBe('empty character name supplied');
});
I already new the code was being called, but I feel happier now that I can assert that the method is being called and not just the outcome. Let's extend this and actually render an error message.
beforeEach(function() {
var spy = sinon.spy(this.view, 'setError'),
spyShowError = sinon.spy(this.view, 'showError');
this.originalName = this.view.model.get('characterName');
this.originalRealm = this.view.model.get('realm');
$('#characterName').val('');
$('#realm').val('');
$('button').trigger('click');
});
afterEach(function() {
this.view.setError.restore();
this.view.showError.restore();
});
...
it('should display an error message', function() {
expect(this.view.showError).toHaveBeenCalled();
expect($('#characterName').prev()).toHaveClass('error-message');
expect($('#characterName').prev().text()).toBe($('#characterName').data('error'));
});
Time to add a 'showError' method that will prepend a div to the element in question and insert the text stored in the element's data-error attribute. And this for now at least concludes the search view part.


Fabric objects do not just exist independent of each other. They form a very precise hierarchy.
Most of the objects inherit from a root fabric.Object
. fabric.Object
pretty much represents a 2-dimensional shape, positioned in 2-dimensional canvas plane.
It's an entity that has left/top
and width/height
properties, as well as a slew of other graphic characteristics.
Those properties that we saw on objects — fill
, stroke
, angle
, opacity
, flip*
, etc. —
are common to all Fabric objects that inherit from fabric.Object
.
笔记：fabric.Object作为父类，提供一些公共的属性和方法。
While child “classes” inherit from fabric.Object
, they often also define their own methods and properties.
For example, fabric.Circle
needs to have “radius” property.
And fabric.Image
needs to have getElement/setElement
methods for accessing/setting HTML <img>
element from which image instance originates.
笔记：fabric.Object的子类会提供一些自身所特有的属性和方法。
One of the amazing things about Fabric is how customizable it is. You can tweak dozens of various parameters on canvas or canvas objects, in order to make things behave exactly the way you want. Let's take a look at some of them.
Every object on canvas can be locked in few ways. "lockMovementX", "lockMovementY", "lockRotation", "lockScalingX", "lockScalingY" are properties that lock corresponding object actions.
So setting object.lockMovementX
to true
prevents object from being moved horizontally. You can still move it in vertical plane though.
Similarly, lockRotation
prevents rotation and lockScalingX/lockScalingY
— scaling.
All of these are cumulative. You can combine them together in any way.
You can control objects' borders and corners visibility via "hasControls
" and "hasBorders
" properties.
Just set them to false
and objects instantly render "naked".
You can also change their appearance by tweaking some of the customization properties "cornerDashArray", "borderDashArray", "borderColor", "transparentCorners" "cornerColor", "cornerStrokeColor", "cornerStyle", "selectionBackgroundColor", "padding" and "cornerSize" properties.


Summary
Amount due is cost per employee per year {{paymentCurrency}} {{paymentStructure ? paymentStructure.TOTAL_AMOUNT : 0}} * number of employees <{{paymentModel ? paymentModel.NoOfEmployees : 0}}> + taxes. In case of monthly payments - <{{ paymentStructure ? paymentStructure.COST_PER_MONTH : 0}} > per month is payable on 1st of each month
{{paymentCurrency}} {{paymentStructure && paymentStructure.CD_PER_MONTH ? this.paymentStructure.CD_PER_MONTH * paymentModel.NoOfEmployees : 0}} + taxes payable each month from {{ licensePeriod }}.
Amount payable is cost per year, after discount, {{paymentCurrency}} {{paymentStructure ? paymentStructure.TOTAL_AMOUNT : 0}} + taxes
{{paymentCurrency}} {{paymentStructure && paymentStructure.CD_PER_MONTH ? this.paymentStructure.CD_PER_MONTH : 0}} + taxes payable each month from {{ licensePeriod }}.


{% extends 'events/papers/emails/revision_submission_base.html' %} {% block role_message %}
{% trans %}In order to cast your judgment please follow the link to the paper below:{% endtrans %}


Food4Kids
No. of item:
0
Total:
0
Orange
$2
-
0
+
Add To Cart
Apple
$2.3
-
0
+
Add To Cart
Pear
$3
-
0
+
Add To Cart
Pineapple
$4
-
0
+
Add To Cart
Orange
$2
-
0
+
Add To Cart
Apple
$2.3
-
0
+
Add To Cart
Pear
$3
-
0
+
Add To Cart
Pineapple
$4
-
0
+
Add To Cart
Food4Kids
×
Name:
Credit Number:
Expiry Date:
CVV:


On July 21, UC Berkeley updated its reopening plans for the fall semester. According to the most recent announcement from the Division of Student Affairs, the campus will “begin the fall semester with fully remote instruction,” but hopes to switch to a hybrid model depending on public health conditions. Originally, UC Berkeley planned on starting the semester hybrid and shifting to a fully online model after Thanksgiving. To gain a better understanding of UC Berkeley’s reopening strategy, The Daily Californian compared UC Berkeley to other similar colleges and universities. To meet the virtual needs of students, instructors are improving remote learning techniques to simulate the interactive aspects of regular instruction. Beyond the classroom, UC Berkeley is striving to provide a more holistic college environment for new and returning students. “While we are pivoting to serve students who will be with us … remotely, we're keenly aware of how the entire student experience creates a Berkeley education,” said Stephen Sutton, vice chancellor for student affairs, in an email. As a large public campus, UC Berkeley faces challenges that smaller schools may not have to address. Campus administrators must implement strategies for managing tens of thousands of students who come from around the world and interact frequently in enclosed spaces. “Several challenges that are specific to the university context, like Berkeley, are ... the close-knit nature of contact, especially among people who live on campus,” said Joseph Lewnard, an assistant professor of epidemiology at UC Berkeley. “Second, the university is a complex environment, where many students live off campus in different communities, where they’ll have different exposures.” Reopening universities gained new significance in the wake of a July 6 announcement by U.S. Immigration and Customs Enforcement that international students must leave the United States if all of their classes are online. Though the rule was recently reversed, President Donald Trump’s administration's insistence on reopening schools contrasts the narrative among scientists and public health experts that a hasty reopening risks greater spread of COVID-19. According to Lewnard, “models that … encourage on-campus, in-person instruction in the way that it occurred before March will necessarily increase risk.”


When an error occurs in XOCL, the source of the error throws an exception. The exception is a value that, in general, contains a description of the problem and any data that might help explain the reason why the problem occurred. An exception is thrown to the most recently established handler; intermediate code is discarded. If no handler exists then the XMF VM will terminate. In most cases, the exception is caught by a user-defined handler or, for example in the case of the XMF console, a handler established by the command interpreter.
When an exception is caught, the handler can inspect the contents of the exception and decide what to do. For example it may be necessary to re-throw the exception to the next-most recently established handler, since it cannot be dealt with. On the other hand, it is usual to catch the exception, print a message, patch up the problem, or just give up on the requested action.
 If the normal expression completes without throwing an exception then its value is returned as the value of the try expression. Alternatively, an exception is thrown at some point during the execution of normal:
throw e
where e is an expression that produces the exception. An exception can be any value, but is typically an instance of the class Exception or one of its sub-classes. An exception is handled by the most recently established try expression. The evaluation of normal is terminated and execution passes to line 3. The variable x is bound to the thrown exception and abnormal is evaluated. If abnormal evaluates without throwing an exception then the value of abnormal is the value returned by the try expression. Otherwise, abnormal throws an exception (perhaps x) that is handled by the next most recently established try expression.


JOSEPH CALUZA
A10078691
Project Portfolio
This is the official portfolio of the Official Joseph Caluza™.
Projects
Asayake Taiko Webmaster 2012-present
Used: HTML5, jQuery
Lead Front-End Web Designer for Web Design Services Center
Used: HTML5, native javascript, jQuery
Last Updated: January 9, 2014
Web Development
HTML5, Bootstrap 3, Foundation
CSS
PHP, mySQL
Javascript, jQuery, CraftyJS
IDEs
Netbeans
JetBrains PHPStorm
Eclipse
Sublime Text Editor
Version Control
Git (
inspirAZN
)
VCS


Who We Are
MLH Localhost
MLH Localhost is a series of QAed, out-of-the-box workshops that anyone can use to learn and teach new skills
Jasmine Ren
She's a smart person.
Jamie Wittenberg
I used to be a high school math teacher; I made the transition to tech working with The Flatiron School, Wyncode Academy, and Codecademy. Now I'm at Major League Hacking, perfecting the learning experience for our community. With nearly a decade of teaching experience and close to five in tech, I have learned how to translate understanding the needs of a heterogenous group of students into painstaking empathy for my users.


Previous: Precomputation and LHS terminals, Up: LHS terminals [Contents][Index]
When LHS terminals are not in use, nulling terminals cannot occur, and applications need not take them in account. This is because, in order to be nullable, a symbol must appear on the LHS of a nullable rule. Without LHS terminals, therefore, no terminals can ever be either nullable or nulling.
Things become more complicated if LHS terminals are allowed. In that case nulling terminals can be created, and Libmarpa must take measures to prevent a recognizer from being created for a grammar with nulling terminals. Libmarpa will not allow a recognizer to be created from a grammar with nulling terminals because they are a logical contradiction. A terminal is (by definition) a symbol which can appear in the input, and a nulling symbol, by definition, cannot appear in the input.
Libmarpa’s marpa_g_precompute
method
fails with the error code MARPA_ERR_NULLING_TERMINAL
if it detects nulling terminals during precomputation.
The error code MARPA_ERR_NULLING_TERMINAL
is library-recoverable.
See marpa_g_precompute().
Libmarpa’s marpa_g_precompute
method
also triggers
one MARPA_EVENT_NULLING_TERMINAL
event
for every nulling terminal in the grammar.
This implies that
one or more MARPA_EVENT_NULLING_TERMINAL
events
occur iff
marpa_g_precompute
fails
with error code MARPA_ERR_NULLING_TERMINAL
.


Many online banks offer higher interest rates on savings accounts then local or large banks. A good idea is to have a savings account that automatically deducts money each month and is different from your local bank so you don't have easy access to the money.
Check the banks online ratings and understand the terms & conditions or any special restrictions such as min balances to receive the advertised rate. Rates change often so check back here or at the banks website to make sure you are getting the best interest rates. Always confirm that the bank you end up choosing is FDIC Insured. FDIC Lookup
Last Update: Oct 18, 2020
All America Bank (.80% APY)
Alliant Credit Union (Interest Rate: .65% APY)
Ally Bank (.60% APY)
American Express Bank (.60% APY)
Bank5 Connect (.55% APY)
Bank7 (.65% APY)
Barclays (.50% APY)
CIT Bank (.55% APY)
Capital One (.50% APY)
CIBC (.70% APY)
Citizens Access (.60% APY)
CFSB (.55% APY)
Customers Bank (.80% APY)
Discover Bank (.60% APY)
Dollar Savings Direct (.55% APY)
E*TRADE Bank (.05% APY)
FNBO Direct (.50% APY)
Heritage Bank (.74% APY)
HSBC Direct (.50% APY)
iGoBanking (.60% APY)
Incredible Bank (.15% APY)
MemoryBank (.25% APY)
MySavingsDirect (.50% APY)
Northern Bank Direct (.60% APY)
Northpointe Bank (.55% APY)
Northfield Bank (.45% APY)
Popular Direct (.70% APY)
PurePoint Financial (.40% APY)
SalemFivedirect (.80% APY)
SallieMae (.60% APY)
Synchrony Bank (.65% APY)
TIAA Bank (.55% APY)
Utah First Federal Credit Union (.15% APY)
Vio Bank (.76% APY)
VirtualBank (.55% APY)
Before selecting an online savings bank always confirm that they are FDIC Insured and review if they have any fees, etc.
Saving rates quoted on this website are based upon information obtained from the banks, without independent verification by Spending Alert, LLC. Spending Alert, LLC updates this information monthly, but makes no representation or warranty regarding interest rates, change in interest rates or fees by the banks referred to on this Website.
Spending Alert, LLC does not make any commission or revenue from the listed banks and does this as a service for the consumer.


Course Information for Spring 2017
Prerequisites (no substitutes will be accepted in the pilot offering)
- Data 8 (Stat/CS/Info C8). The basics of probability are in Sections 8.3 through 9.3 as well as Chapters 12 and 17 of the Data 8 textbook. All of the inference in Data 8 relies on probability; we’ll touch on all of it in Prob140 one way or another. And of course you should be familiar with Python and the datascience library.
- A year of calculus, at the level of Math 1A-1B or higher. Math 53 is ideal; you can take it simultaneously with Prob140. Here are some examples to work on. As students in Stat 134 have noticed, what’s required is a kind of mathematical maturity rather than knowing lots of computational formulas. You will rarely have to work out complicated integrals or derivatives by hand, but you will constantly work with abstraction – functions, domains, ranges, inverses, limits, and so on – as well as bounds, approximations, orders of magnitude, etc.
If you love logic, math, and Data 8, this course is for you.
Texts
Required:
- Probability for Data Science by Ani Adhikari and Jim Pitman. This will be available on the course website, like the Data 8 text.
- Probability by Jim Pitman, published by Springer NY. Available for Berkeley students on SpringerLink at no cost or low cost (for a printed version).
- Theory Meets Data by Ani Adhikari (Dibya Ghosh, Editor), with contributions from students in the pilot offering of the Data 8 connector Stat 88: Probability and Mathematical Statistics in Data Science. The PDF will be available on the course website.
Excellent references
The Required Components of Your Work
-
Weekly homework, which you will do in Juypter notebooks and turn in on Gradescope. We hope to make this process less annoying than it was in Data 8 this past Fall. You will learn some basic LaTex so that you can “write” math in your notebooks. It’s easy and fun. Homework will be posted on Wednesday evenings and will be due the following Tuesday by 11:59 pm.
-
One weekly lab, which will be designed so that you can complete it (or almost complete it) during lab. Each lab is due on the same Friday by 11:59 p.m.
- Quizzes, four times during the term, in discussion section. No computers involved. Quiz Dates are
- Wednesday 2/1 (3rd week)
- Wednesday 2/15 (5th week)
- Wednesday 3/22 (10th week)
- Wednesday 4/12 (12th week)
- Midterm in class on Thursday March 2. No substitutes except as required by university rules. No computers involved.
- Final Exam Friday May 12, 7 pm to 10 pm, Exam Group 20. The very last slot in finals week – I don’t like it any more than you do but we have no choice. No substitutes except as required by university rules. No computers involved. The final is required for getting a passing grade.
Data science is not a solitary activity; please expect to attend lectures, discussion section, and lab. Lectures will not be webcast, but the online text will contain what is covered apart from discussions generated by questions asked in class.
Grading
We will drop
- Your two lowest homeworks
- Your two lowest labs
- Your lowest quiz
Course grades will be assigned using the following weighted components:
- Homework 20%
- Labs 20%
- Quizzes 15%
- Midterm 15%
- Final 30%
Collaboration and Honesty
You are encouraged to discuss practice problems, homework, and labs with your fellow students and with course staff. Arguing with friends about exercises is an excellent and time-honored way to learn. However, you must write up your own assignments and your own code. Copying assignments from others is not only dishonest, it also doesn’t help anyone. Students must work independently on quizzes and exams – no collaboration allowed – and that independence is developed by working on assignments. I am extremely tough with dishonest students but I don’t expect to be in that situation in Prob140. I expect that you will work with integrity and with respect for other members of the class, just as the course staff will work with integrity and with respect for you.


Activity¶
Most modern applications struggle to manage data streams, such as those that contain an ongoing list of comments, activities, and tweets. In particular, mobile applications are prone to generating very large amounts of data in a data stream. Beyond that, additions to a data stream must often be routed automatically to subscribers or filtered or counted.
Nobackend provides an activity entity that is specifically designed for data streams. An activity is an entity type that represents activity stream actions (see the [JSON Activity Streams 1.0 specification](http://activitystrea.ms/specs/json/1.0/) for more information about these actions).
When a user creates an activity, it creates a relationship between the activity and the user who created it. Because this relationship exists, the activity will appear in the feed of any of the user’s followers. Think of the Activities endpoint (/users/{uuid|username}/activities
) as
an “outbox” of news items created by the user. Think of the Feed endpoint (/users/{uuid|username}/feed
) as an “inbox” of news items meant to be seen or consumed by the user.
A user can also post an activity to a group (located at /groups/{uuid|groupname}/activities
). This allows you to emulate Facebook-style group functionality, where a limited number of users can share content on a common “wall”. In any of these cases, there is no need to construct publish/subscribe relationships manually.
Activity entities are particularly useful in applications that enable users to post content to activity streams (also called feeds) and to display activity streams. Some examples of these applications are Twitter, foursquare, and Pinterest. For example, when a Twitter user posts a short, 140-character or less, “tweet”, that activity gets added to the user’s activity stream for display as well as to the activity streams of any of the user’s followers.
Using Nobackend APIs you can create, retrieve, update, and delete activity entities.
Note: Although not shown in the API examples below, you need to provide a valid access token with each API call. See [Authenticating users and application clients](../security-and-auth/authenticating-users-and-application-clients.html) for details.
Posting activities¶
Posting a user activity
Use the POST method to create an activity in the activities collection.
Request URI¶
POST /<org_id>/<app_id>/users/<uuid | username>/activities { request body }
Parameters
| Resource | Description |
|---|---|
| arg uuid|string org_id | Organization UUID or organization name |
| arg uuid|string app_id | Application UUID or application name |
| request body | One or more sets of activity properties |
Here’s an example request body:
{
"actor":{
"displayName":"John Doe",
"uuid":"1f3567aa-da83-11e1-afad-12313b01d5c1",
"username":"john.doe",
"image":{
"duration":0,
"height":80,
"url":"http://www.gravatar.com/avatar/","width":80},
<EMAIL_ADDRESS>},
"verb":"post",
"content":"Hello World!"
}
}
Example - Request¶
curl -X POST "https://api.tbaas.co/my-org/my-app/users/john.doe/activities" -d '{"actor":{"displayName":"John Doe","uuid":"1f3567aa-da83-11e1-afad-12313b01d5c1","username":"john.doe", "image":{"duration":0,"height":80,"url":"http://www.gravatar.com/avatar/","width":80}, "email":"john.doe@gmail.com"},"verb":"post","content":"Hello World!"}'
Example - Response¶
{
"action" : "post",
"application" : "5111c463-6a42-11e1-b6dd-1231380a0284",
"params" : {
},
"path" : "/users/1f3567aa-da83-11e1-afad-12313b01d5c1/activities",
"uri" : "https://api.tbaas.co/5111c463-6a42-11e1-b6dd-1231380a0284/users/1f3567aa-da83-11e1-afad-12313b01d5c1/activities",
"entities" : [ {
"uuid" : "da448955-f3aa-11e1-8042-12313d331ae8",
"type" : "activity",
"created" :<PHONE_NUMBER>974,
"modified" :<PHONE_NUMBER>974,
"actor" : {
"displayName" : "John Doe",
"uuid" : "1f3567aa-da83-11e1-afad-12313b01d5c1",
"username" : "john.doe",
"image" : {
"duration" : 0,
"height" : 80,
"url" : "http://www.gravatar.com/avatar/",
"width" : 80
},
"email"<EMAIL_ADDRESS>},
"content" : "Hello World!",
"metadata" : {
"path" : "/users/1f3567aa-da83-11e1-afad-12313b01d5c1/activities/da448955-f3aa-11e1-8042-12313d331ae8"
},
"published" :<PHONE_NUMBER>974,
"verb" : "post"
} ],
"timestamp" :<PHONE_NUMBER>827,
"duration" : 1406,
"organization": "my-org",
"applicationName": "my-app"
}
Note: Anytime a logged-in user makes a request, you can substitute “me” for the uuid or username. So the format of a request to create an activity for the currently logged-in user would look like this:
POST /<org_id>/<app_id>/users/me/activities { request body }
The /users/me
endpoint is accessible only if you provide an access token with the request. If you don’t provide an access token with the request, that is, you make an anonymous (or “guest”) call, the system will not be able to determine which user to return as /users/me
.
When you create an activity it creates a relationship between the activity and the user who created it. In other words, the newly created activity above belongs to john.doe. Another way of saying this is the user “owns” the activity. And because this relationship exists, the activity will appear in the feed of any of the user’s followers (in this example, anyone who is following john.doe). However, it will not appear in the feed of people the user follows. The activity is accessible at the /activities
endpoint to users who have the permission to read that endpoint.
Notice the properties specified in the request body in the previous example are actor, verb, and content. The actor, verb, and content properties are built into the Activity entity (see [Activity entity properties](../rest-endpoints/api-doc.html#activity) ). The actor property specifies properties of the entity that performs the action (here, user john.doe). The gravatar URL is used to create an icon for the activity. And because an Activity is simply an API Services data entity, you can also create custom properties.
The verb parameter is descriptive. You can use it to indicate what type of activity is posted, for example, an image versus text. The value post is defined in the JSON Activity Streams specification as “the act of authoring an object and then publishing it online.“
Posting an activity to a group¶
Use the POST method to post an activity to a specific group. In this case the activity is created in the activities collection and is accessible at the /activities
endpoint to users who have the permission to read that endpoint. In addition, a relationship is established between the activity and the group, and because of that, the activity will appear in the group’s feed. The group “owns” the activity. Also, the activity will be published in the feed of all users that are members of the group.
Request URI¶
POST /{org_id}/{app_id}/groups/{uuid|groupname}/activities {request body}
Parameters
| Resource | Description |
|---|---|
| arg uuid|string org_id | Organization UUID or organization name |
| arg uuid|string app_id | Application UUID or application name |
| arg uuid|string groupname | UUID or name of the group |
| request body | One or more sets of activity properties. |
Here’s a sample request body:
{
"actor":
{
"displayName":"John Doe",
"uuid":"1f3567aa-da83-11e1-afad-12313b01d5c1",
"username":"john.doe",
"image":{
"duration":0,
"height":80,
"url":"http://www.gravatar.com/avatar/","width":80},
<EMAIL_ADDRESS>"verb":"post",
"content":"Hello World!"
}
Example - Request¶
curl -X POST "https://api.tbaas.co/my-org/my-app/groups/mygroup/activities" -d '{"actor":{"displayName":"John Doe","uuid":"1f3567aa-da83-11e1-afad-12313b01d5c1","username":"john.doe", "image":{"duration":0,"height":80,"url":"http://www.gravatar.com/avatar/","width":80}, "email":"john.doe@gmail.com"},"verb":"post","content":"Hello World!"}'
Because this relationship exists, this activity will appear in the feed of all users who are members of mygroup. It won’t appear in the feeds of the group members’ followers or in feeds of users they follow.
Example - Response¶
{
"action": "post",
"application": "3400ba10-cd0c-11e1-bcf7-12313d1c4491",
"params": {},
"path": "/groups/d87edec7-fc4d-11e1-9917-12313d1520f1/activities",
"uri": "https://api.tbaas.co/my-org/my-app/groups/d87edec7-fc4d-11e1-9917-12313d1520f1/activities",
"entities": [
{
"uuid": "563f5d96-37f3-11e2-a0f7-02e81ae640dc",
"type": "activity",
"created":<PHONE_NUMBER>811,
"modified":<PHONE_NUMBER>811,
"actor": {
"displayName": "John Doe",
"uuid": "1f3567aa-da83-11e1-afad-12313b01d5c1",
"username": "john.doe",
"image": {
"duration": 0,
"height": 80,
"url": "http://www.gravatar.com/avatar/",
"width": 80
},
"email"<EMAIL_ADDRESS>},
"content": "Hello World!",
"metadata": {
"path": "/groups/d87edec7-fc4d-11e1-9917-12313d1520f1/activities/563f5d96-37f3-11e2-a0f7-02e81ae640dc"
},
"published":<PHONE_NUMBER>811,
"verb": "post"
}
],
"timestamp":<PHONE_NUMBER>800,
"duration": 81,
"organization": "my-org",
"applicationName": "my-app"
}
Creating an activity for a user’s followers in a group¶
Use the POST method to create an activity that will be published only in the feeds of users who (1) follow you, and (2) are in the same group to which you posted the activity. This is useful if you want to create specific groups of friends (for example, acquaintances or colleagues) and publish content to them with more precise privacy settings. This allows you to re-create a privacy model similar to Google+’s Circles or Facebook current privacy system.
When you create an activity for a user’s followers in a group:
The activity is accessible at the /activities
endpoint to users who have the permission to read that endpoint. The activity will not be cross-posted to the group’s activity endpoint (/groups/{uuid|groupname}/activities
)
A relationship is automatically created between the activity entity that was just created and the user within that group (/groups/{uuid|groupname}/users/{uuid|username}
)
The user within the group (/groups/{uuid|groupname}/users/{uuid|username}
) becomes the owner of the activity (through the owner property in the activity).
Request URI¶
POST /{org_id}/{app_id}/groups/{uuid|groupname}/users/{uuid|username}/activities {request body}
Parameters
| Resource | Description |
|---|---|
| arg uuid|string org_id | Organization UUID or organization name |
| arg uuid|string app_id | Application UUID or application name |
| arg uuid|string groupname | UUID or name of the group |
| arg uuid|string username | UUID or name of the user |
| request body | One or more sets of activity properties |
Example request body:
{
"actor":
{
"displayName":"John Doe",
"uuid":"1f3567aa-da83-11e1-afad-12313b01d5c1",
"username":"john.doe",
"image":{
"duration":0,
"height":80,
"url":"http://www.gravatar.com/avatar/","width":80},
<EMAIL_ADDRESS>"verb":"post",
"content":"Hello World!"
}
Example - Request¶
curl -X POST "https://api.tbaas.co/my-org/my-app/groups/mygroup/users/john.doe/activities" -d '{"actor":{"displayName":"John Doe","uuid":"1f3567aa-da83-11e1-afad-12313b01d5c1","username":"john.doe", "image":{"duration":0,"height":80,"url":"http://www.gravatar.com/avatar/","width":80}, "email":"john.doe@gmail.com"},"verb":"post","content":"Hello World!"}'
Because this relationship exists, this activity will appear in the feed of all users who are members of mygroup. It won’t appear in the feeds of the group members’ followers or in feeds of users they follow.
Example - Response¶
{
"action" : "post",
"application" : "3400ba10-cd0c-11e1-bcf7-12313d1c4491",
"params" : { },
"path" : "/groups/d87edec7-fc4d-11e1-9917-12313d1520f1/users/34e26bc9-2d00-11e2-a065-02e81ae640dc/activities",
"uri" : "https://api.tbaas.co/my-org/my-app/
/groups/d87edec7-fc4d-11e1-9917-12313d1520f1/users/34e26bc9-2d00-11e2-a065-02e81ae640dc/activities",
"entities" : [ {
"uuid" : "2440ca58-49ff-11e2-84c0-02e81adcf3d0",
"type" : "activity",
"created" :<PHONE_NUMBER>825,
"modified" :<PHONE_NUMBER>825,
"actor" : {
"displayName" : "John Doe",
"uuid" : "1f3567aa-da83-11e1-afad-12313b01d5c1",
"username" : "john.doe",
"image" : {
"duration" : 0,
"height" : 80,
"url" : "http://www.gravatar.com/avatar/",
"width" : 80
},
"email"<EMAIL_ADDRESS>},
"content" : "Happy New Year!",
"metadata" : {
"path" : "/groups/d87edec7-fc4d-11e1-9917-12313d1520f1/users/34e26bc9-2d00-11e2-a065-02e81ae640dc/activities/2440ca58-49ff-11e2-84c0-02e81adcf3d0"
},
"published" :<PHONE_NUMBER>825,
"verb" : "post"
} ],
"timestamp" :<PHONE_NUMBER>789,
"duration" : 95,
"organization" : "my-org",
"applicationName" : "my-app"
}
Retrieving activity feeds¶
Retrieving a user’s activity feed
Use the GET method to retrieve a user’s feed.
Request URI¶
GET /{org_id}/{app_id}/users/{uuid|username}/feed
Example - Request¶
curl -X GET "https://api.tbaas.co/my-org/my-app/users/john.doe/feed"
Example - Response
{
"action" : "get",
"application" : "3400ba10-cd0c-11e1-bcf7-12313d1c44914",
"params" : {},
"path" : "/users/d9693ec3-61c9-11e2-9ffc-02e81adcf3d0/feed",
"uri" : "https://api.tbaas.co/3400ba10-cd0c-11e1-bcf7-12313d1c44914/users/d9693ec3-61c9-11e2-9ffc-02e81adcf3d0/feed",
"entities" : [ {
"uuid" : "ffd79647-f399-11e1-aec3-12313b06ae01",
"type" : "activity",
"created" :<PHONE_NUMBER>569,
"modified" :<PHONE_NUMBER>569,
"actor" : {
"displayName" : "John Doe",
"image" : {
"duration" : 0,
"height" : 80,
"url" : "http://www.gravatar.com/avatar/",
"width" : 80
},
"uuid" : "d9693ec3-61c9-11e2-9ffc-02e81adcf3d0",
"email"<EMAIL_ADDRESS>"username" : "john.doe"
},
"content" : "Hello World!",
"metadata" : {
"cursor" : "gGkAAQMAgGkABgE5ffM1aQCAdQAQ_9eWR_OZEeGuwxIxOwauAQCAdQAQABlaOvOaEeGuwxIxOwauAQA",
"path" : "/users/d9693ec3-61c9-11e2-9ffc-02e81adcf3d0/feed/ffd79647-f399-11e1-aec3-12313b06ae01"
},
"published" :<PHONE_NUMBER>569,
"verb" : "post"
}, {
"uuid" : "2482a1c5-e7d0-11e1-96f6-12313b06d112",
"type" : "activity",
"created" :<PHONE_NUMBER>958,
"modified" :<PHONE_NUMBER>958,
"actor" : {
"displayName" : "moab",
"image" : {
"duration" : 0,
"height" : 80,
"url" : "http://www.gravatar.com/avatar/",
"width" : 80
},
"uuid" : "d9693ec3-61c9-11e2-9ffc-02e81adcf3d0",
"email"<EMAIL_ADDRESS>"username" : "moab"
},
"content" : "checking in code left and right!!",
"metadata" : {
"cursor" : "gGkAAQMAgGkABgE5MLFh7gCAdQAQJIKhxefQEeGW9hIxOwbREgCAdQAQJNEP6ufQEeGW9hIxOwbREgA",
"path" : "/users/d9693ec3-61c9-11e2-9ffc-02e81adcf3d0/feed/2482a1c5-e7d0-11e1-96f6-12313b06d112"
},
"published" :<PHONE_NUMBER>958,
"verb" : "post"
} ],
"timestamp" :<PHONE_NUMBER>316,
"duration" : 144,
"organization": "my-org",
"applicationName": "my-app"
}
Retrieving a group’s activity feed¶
Use the GET method to retrieve the feed for a group. This gets a list of all the activities that have been posted to this group, that is, the activities for which this group has a relationship (owns).
Request URI¶
GET /{org_id}/{app_id}/groups/{uuid|groupname}/feed
Parameters
| Resource | Description |
|---|---|
| arg uuid|string org_id | Organization UUID or organization name |
| arg uuid|string app_id | Application UUID or application name |
| arg uuid|string groupname | UUID or name of the group |
Example - Request¶
curl -X GET "https://api.tbaas.co/my-org/my-app/groups/mygroup/feed"
Example - Response
{
"action": "get",
"application": "3400ba10-cd0c-11e1-bcf7-12313d1c4491",
"params": {},
"path": "/groups/d87edec7-fc4d-11e1-9917-12313d1520f1/feed",
"uri": "https://api.tbaas.co/my-org/my-app/groups/d87edec7-fc4d-11e1-9917-12313d1520f1/feed",
"entities": [
{
"uuid": "563f5d96-37f3-11e2-a0f7-02e81ae640dc",
"type": "activity",
"created":<PHONE_NUMBER>811,
"modified":<PHONE_NUMBER>811,
"actor": {
"displayName": "John Doe",
"image": {
"duration": 0,
"height": 80,
"url": "http://www.gravatar.com/avatar/",
"width": 80
},
"uuid": "1f3567aa-da83-11e1-afad-12313b01d5c1",
"email"<EMAIL_ADDRESS>"username": "john.doe"
},
"content": "Hello World!",
"metadata": {
"cursor": "gGkAAQMAgGkABgE7PeHCgwCAdQAQVj9dljfzEeKg9wLoGuZA3ACAdQAQVkVRCTfzEeKg9wLoGuZA3AA",
"path": "/groups/d87edec7-fc4d-11e1-9917-12313d1520f1/feed/563f5d96-37f3-11e2-a0f7-02e81ae640dc"
},
"published":<PHONE_NUMBER>811,
"verb": "post"
}
],
"timestamp":<PHONE_NUMBER>756,
"duration": 29,
"organization": "my-org",
"applicationName": "my-app"
}


DfE enquiries
Central newsdesk 020 7783 8300
General enquiries 0370 000 2288
Press release
Measures proposed to root out bad behaviour, tackle underperformance and improve accountability of schools.
The Education Bill, published today, will help teachers raise standards in schools. It includes measures to root out bad behaviour, tackle underperformance and improve the way in which schools are held to account.
Measures in the Bill include:
Education Secretary Michael Gove said today:
We’re lucky that there are many teachers doing a fantastic job. But there are still too many schools that simply aren’t good enough. We must learn from other countries which do things better.
We’re giving more powers for teachers to do their job properly - the ability to impose better discipline - and freeing them from bureaucracy. The best schools will be freed from inspections so Ofsted will now concentrate on what matters - teaching and behaviour.
But we also need tough new powers to take action when things go wrong. In the worst schools there will be new intervention powers. Ofsted will focus on the worst-performing schools where they are needed most. It is unacceptable that children should suffer in schools that are not doing a good job.
Subject to the passage of the Bill, the Secretary of State will now be able to direct a local authority to close schools that are judged to be in special measures, require significant improvement, or have failed to comply with a warning notice. He will also be able to direct local authorities to give a warning notice to an underperforming school.
These new powers will mean the government can intervene whenever a school is not providing the kind of education children deserve.
The best school systems in the world are characterised by strong accountability, so in addition to recent changes to performance tables, the government is also reforming the school inspection system.
Under the current Ofsted framework inspectors make at least 27 separate judgements. We are focusing inspection on 4 key areas:
We want inspectors to spend more of their time concentrating on teaching to drive improvement in educational standards. The Bill will also exempt ‘outstanding’ schools from routine inspection so they can be free to continue doing what they do so well. Ofsted will be able to focus their resources on the underperforming schools.
Responding to these changes, Kate Dethridge, Head of Churchend Primary School, said:
It is good news that there will be a reduction in the criteria against which we are inspected. At the end of the day, the most important thing is to be judged on the core purpose of raising standards. Schools should be trusted to achieve the right outcomes for their pupils, without having to be judged on the process to achieve those outcomes.
It is also welcome that outstanding schools will be exempt from inspections. Constantly self-reviewing and improving the school, and maintaining standards, is a head’s core purpose. Going through the process of an Ofsted inspection is time-consuming and does not add any value in an outstanding school.
Greg Martin, Executive Head of Durand Academy, said:
In recent years monitoring mechanisms have become increasingly complex and we welcome the move today to streamline Ofsted inspections to focus on the things that matter most to parents - quality teaching, effective leadership, good behaviour and safety for every child.
These are also the components of all great schools and Ofsted inspectors will now be able to work closely with improving schools to get these fundamentals right.
International league tables show we are not performing at the same level as many countries across the world. The government believes we must learn from the best education systems. That’s why the Bill puts a duty on Ofqual, the independent watchdog for qualifications, to compare our exam standards against the highest performing systems. It will ensure that England does not continue to fall behind other countries.
The Bill also gives teachers the power to tackle bad behaviour and maintain good discipline. The Bill will:
Responding to the Bill, James McAtear, Head of Hartismere Secondary School, said:
These reforms will help to redress the balance in favour of good discipline in schools. They send out a strong message that our society is not willing to tolerate poor behaviour and that we will provide a safe and supportive environment in which every child can learn.
The government is also stripping away the overbearing and unnecessary red tape that takes up teacher time that would be better spent in the classroom or preparing lessons. The Bill includes measures to
Local authority powers to direct a college to invoke disciplinary procedures and appoint members to governing bodies will be removed.
Responding to the measures on bureaucracy, Sue Barratt, Head of Bournville Junior School, said:
Headteachers currently spend 15 or more hours a week on unnecessary paperwork. This time could be better spent doing more important things as a headteacher - doing what we’re there for, raising standards of teaching and learning in the school, and supporting our staff and pupils in the classroom and around the school. We really appreciate that the government is listening to the profession and realises that unnecessary bureaucracy is hindering schools from carrying out their core purpose of raising standards in education for all children.
Larry Montagu, Head of St. Peter’s Catholic School in Gloucester, said:
Any legislation that reduces bureaucracy and allows teachers to concentrate on their core purpose of helping children learn has got to be applauded.
Dr Reena Keeble, Head of Canon Lane First School, said:
I am pleased this Bill will cut bureaucracy - taking away paperwork gives us greater freedom to address children’s needs, which is what we are here for. Spending time doing admin or getting stats together for inspections and data collections takes you away from focusing on your core purpose of ensuring children are able to get an outstanding education.
Penny Barratt, Head of the Bridge School (a special school), said:
Schools will really welcome the removal and clarification of some statutory and non-statutory requirements. This will support the reduction of bureaucracy, which schools have to deal with on a day-to-day basis.
The Education Bill had its first reading on Wednesday 26 January 2011 and is published today.
A copy of the Bill is available on the House of Commons website.
Other measures in the bill:
The Bill will also take forward aspects of the changes to higher education student finance: change to interest rates on student loans and the regulation of fees for part-time students. All enquiries on these aspects should be taken to the Department for Business Innovation and Skills.
Central newsdesk 020 7783 8300
General enquiries 0370 000 2288
Published: 27 January 2011


|
Games Task Scheduler (GTS)
A multi-processor scheduling framework for games engines
|
Modules | |
| ParallelPatterns | |
Classes | |
| class | gts::MicroScheduler |
| A work-stealing task scheduler. The scheduler is executed by the WorkerPool it is initialized with. More... | |
| struct | gts::TaskContext |
| The context associated with the task being executed. More... | |
| struct | gts::WorkerThreadDesc |
| The description of a worker Thread. More... | |
| struct | gts::WorkerPoolVisitor |
| A visitor object for the worker pool. Allows the user to be notified at particular points during the WorkerPool's lifetime. More... | |
| struct | gts::WorkerPoolDesc |
| The description of a WorkerPool. More... | |
| struct | gts::MicroSchedulerDesc |
| The description of a MicroScheduler. More... | |
| class | gts::Task |
| A Task payload that embeds TFunc and TArgs into the Task's data. It makes it easy to construct a Task from a lambda or a function plus arguments similar to std::thread. More... | |
| class | gts::CStyleTask |
| A Task payload that embeds a function pointer and data argument into the the Task's data. More... | |
| class | gts::LambdaTaskWrapper< TFunc, TArgs > |
| A Task payload that embeds TFunc and TArgs into the Task's data. It makes it easy to construct a Task from a lambda or a function plus arguments similar to std::thread. More... | |
| class | gts::EmptyTask |
| A empty Task that can be used as dummy or placeholder. More... | |
| class | gts::WorkerPool |
| A collection of running Worker threads that a MicroScheduler can be run on. More... | |
Typedefs | |
| using | gts::OnCheckForTasksFcn = Task *(*)(void *pUserData, MicroScheduler *pThisScheduler, OwnedId localSchedulerId, bool isCallerExternal, bool &executedTask) |
Enumerations | |
| enum class | MicroSchedulerCallbackType { CHECK_FOR_TASK , COUNT } |
Variables | |
| constexpr size_t | gts::DESC_NAME_SIZE = 64 |
| The fixed size for descriptive names. | |
| constexpr uint32_t | gts::ANY_WORKER = UNKNOWN_UID |
Fine-grained Task scheduling abstraction.


| Prof. Dermot Barnes-Holmes was a Foundation Professor at the Department of Psychology at National University of Ireland, Maynooth. He is known for his research in human language and cognition through the development of the Relational Frame Theory (RFT) with Steven C. Hayes, and its applications in various psychological settings. |
What I enjoy most about my job as a researcher ... Supervising research students who are passionate about and genuinely interested in their research. Sharing what is often a voyage of intellectual discovery for both the student and me is still, after all these years, by far the most stimulating and enjoyable feature of what I do as an academic.
The biggest challenge in my career so far was ... balancing being a new head of department (appointed in 1999) with a pivotal point in my research career (the writing and publication of the seminal text on Relational Frame Theory in 2001).
One research project I will never forget is… There are at least three that really stand out for me. First, the writing of the 2001 RFT book with Steve Hayes and Bryan Roche, particularly the "crazy" multiple flying visits to Reno to work literally night and day with Steve on initial drafts of the book. Second, the research programme on the relating of derived relations, with Paul Smeets and Ian Stewart, as a model of analogical reasoning (from 1997-2005). And third, the last 10 years that have been devoted to the development of the Implicit Relational Assessment Procedure (IRAP), the Relational Elaboration and Coherence (REC) model, and the emergence from that work of the Multi-Dimensional Multi-Level (MDML) framework for analyzing arbitrarily applicable relational responding.
What I look for in a student who wants to work under my supervision ... Simple - an individual who is motivated almost exclusively by the research and very little else.
Student research could be improved by ... providing the supports necessary to encourage and sustain genuine creativity in the research process and minimize needless "box-ticking".
Academically, I most admire ... Steve Hayes ... because .... he has been like an intellectual father to me and, well, just look at the guy's CV!
I wish someone had told me at the beginning of my career ... It's okay, you're on the right track - just sit back and enjoy the ride!
The largest changes in psychological science in the next 10 years will be ... a far greater emphasis on how our research activity makes a meaningful difference in the real world (a change I welcome with open arms).


See Jenkins Violations Plugin for details on how to configure and use this plugin.
Filename patterns are optional. The syntax is Apache DirectoryScanner, for example **/*.xml matches xml-files anywhere in workspace.


Livecountsedit is a 'customizable (or fake) live subscriber counter' that was created by RandomPerson3465 on July 27, 2019.
Fake live subscriber counters started on January 22, 2019 when RandomPerson3465 uploaded a video of T-Series losing subscribers onto his now deleted YouTube channel. The video received over 600 thousand views by April 2019.
Livecountsedit was created when a Discord user 'Sync' messaged RandomPerson3465 about having a way to edit the subscriber counter on Livecounts.net.


Sphinx is written in python, and supports the ability to write custom extensions. We’ve written a few for the matplotlib documentation, some of which are part of matplotlib itself in the matplotlib.sphinxext module, some of which are included only in the sphinx doc directory, and there are other extensions written by other groups, eg numpy and ipython. We’re collecting these in this tutorial and showing you how to install and use them for your own project. First let’s grab the python extension files from the sphinxext directory from git (see Fetching the data), and install them in our sampledoc project sphinxext directory:
home:~/tmp/sampledoc> mkdir sphinxext
home:~/tmp/sampledoc> cp ../sampledoc_tut/sphinxext/*.py sphinxext/
home:~/tmp/sampledoc> ls sphinxext/
apigen.py docscrape_sphinx.py ipython_console_highlighting.py
docscrape.py inheritance_diagram.py numpydoc.py
In addition to the builtin matplotlib extensions for embedding pyplot plots and rendering math with matplotlib’s native math engine, we also have extensions for syntax highlighting ipython sessions, making inhertiance diagrams, and more.
We need to inform sphinx of our new extensions in the conf.py file by adding the following. First we tell it where to find the extensions:
# If your extensions are in another directory, add it here. If the
# directory is relative to the documentation root, use
# os.path.abspath to make it absolute, like shown here.
sys.path.append(os.path.abspath('sphinxext'))
And then we tell it what extensions to load:
# Add any Sphinx extension module names here, as strings. They can
# be extensions coming with Sphinx (named 'sphinx.ext.*') or your
# custom ones.
extensions = [
'matplotlib.sphinxext.mathmpl',
'matplotlib.sphinxext.only_directives',
'matplotlib.sphinxext.plot_directive',
'matplotlib.sphinxext.ipython_directive',
'sphinx.ext.autodoc',
'sphinx.ext.doctest',
'ipython_console_highlighting',
'inheritance_diagram',
'numpydoc']
Now let’s look at some of these in action. You can see the literal source for this file at extensions-literal.
Michael Droettboom contributed a sphinx extension which does pygments syntax highlighting on ipython sessions. Just use ipython as the language in the sourcecode directive:
.. sourcecode:: ipython
In [69]: lines = plot([1,2,3])
In [70]: setp(lines)
alpha: float
animated: [True | False]
antialiased or aa: [True | False]
...snip
and you will get the syntax highlighted output below.
In [69]: lines = plot([1,2,3])
In [70]: setp(lines)
alpha: float
animated: [True | False]
antialiased or aa: [True | False]
...snip
This support is included in this template, but will also be included in a future version of Pygments by default.
In sphinx you can include inline math or display math
To include math in your document, just use the math directive; here is a simpler equation:
.. math::
W^{3\beta}_{\delta_1 \rho_1 \sigma_2} \approx U^{3\beta}_{\delta_1 \rho_1}
which is rendered as
This documentation framework includes a Sphinx extension, sphinxext/mathmpl.py, that uses matplotlib to render math equations when generating HTML, and LaTeX itself when generating a PDF. This can be useful on systems that have matplotlib, but not LaTeX, installed. To use it, add mathmpl to the list of extensions in conf.py.
Current SVN versions of Sphinx now include built-in support for math. There are two flavors:
- pngmath: uses dvipng to render the equation
- jsmath: renders the math in the browser using Javascript
To use these extensions instead, add sphinx.ext.pngmath or sphinx.ext.jsmath to the list of extensions in conf.py.
All three of these options for math are designed to behave in the same way.
See the matplotlib mathtext guide for lots more information on writing mathematical expressions in matplotlib.
Inserting automatically-generated plots is easy. Simply put the script to generate the plot in the pyplots directory, and refer to it using the plot directive. First make a pyplots directory at the top level of your project (next to :conf.py) and copy the ellipses.py` file into it:
home:~/tmp/sampledoc> mkdir pyplots
home:~/tmp/sampledoc> cp ../sampledoc_tut/pyplots/ellipses.py pyplots/
You can refer to this file in your sphinx documentation; by default it will just inline the plot with links to the source and PF and high resolution PNGS. To also include the source code for the plot in the document, pass the include-source parameter:
.. plot:: pyplots/ellipses.py
:include-source:
In the HTML version of the document, the plot includes links to the original source code, a high-resolution PNG and a PDF. In the PDF version of the document, the plot is included as a scalable PDF.
You can also inline code for plots directly, and the code will be executed at documentation build time and the figure inserted into your docs; the following code:
.. plot::
import matplotlib.pyplot as plt
import numpy as np
x = np.random.randn(1000)
plt.hist( x, 20)
plt.grid()
plt.title(r'Normal: $\mu=%.2f, \sigma=%.2f$'%(x.mean(), x.std()))
plt.show()
produces this output:
See the matplotlib pyplot tutorial and the gallery for lots of examples of matplotlib plots.
Inheritance diagrams can be inserted directly into the document by providing a list of class or module names to the inheritance-diagram directive.
For example:
.. inheritance-diagram:: codecs
produces:
See the Ipython Directive for a tutorial on embedding stateful, matplotlib aware ipython sessions into your rest docs with multiline and doctest support.
.. _extensions:
****************************************************
Sphinx extensions for embedded plots, math and more
****************************************************
Sphinx is written in python, and supports the ability to write custom
extensions. We've written a few for the matplotlib documentation,
some of which are part of matplotlib itself in the
matplotlib.sphinxext module, some of which are included only in the
sphinx doc directory, and there are other extensions written by other
groups, eg numpy and ipython. We're collecting these in this tutorial
and showing you how to install and use them for your own project.
First let's grab the python extension files from the :file:`sphinxext`
directory from git (see :ref:`fetching-the-data`), and install them in
our :file:`sampledoc` project :file:`sphinxext` directory::
home:~/tmp/sampledoc> mkdir sphinxext
home:~/tmp/sampledoc> cp ../sampledoc_tut/sphinxext/*.py sphinxext/
home:~/tmp/sampledoc> ls sphinxext/
apigen.py docscrape_sphinx.py ipython_console_highlighting.py
docscrape.py inheritance_diagram.py numpydoc.py
In addition to the builtin matplotlib extensions for embedding pyplot
plots and rendering math with matplotlib's native math engine, we also
have extensions for syntax highlighting ipython sessions, making
inhertiance diagrams, and more.
We need to inform sphinx of our new extensions in the :file:`conf.py`
file by adding the following. First we tell it where to find the extensions::
# If your extensions are in another directory, add it here. If the
# directory is relative to the documentation root, use
# os.path.abspath to make it absolute, like shown here.
sys.path.append(os.path.abspath('sphinxext'))
And then we tell it what extensions to load::
# Add any Sphinx extension module names here, as strings. They can
# be extensions coming with Sphinx (named 'sphinx.ext.*') or your
# custom ones.
extensions = [
'matplotlib.sphinxext.mathmpl',
'matplotlib.sphinxext.only_directives',
'matplotlib.sphinxext.plot_directive',
'matplotlib.sphinxext.ipython_directive',
'sphinx.ext.autodoc',
'sphinx.ext.doctest',
'ipython_console_highlighting',
'inheritance_diagram',
'numpydoc']
Now let's look at some of these in action. You can see the literal
source for this file at :ref:`extensions-literal`.
.. _ipython-highlighting:
ipython sessions
================
Michael Droettboom contributed a sphinx extension which does `pygments
<http://pygments.org>`_ syntax highlighting on `ipython
<http://ipython.scipy.org>`_ sessions. Just use ipython as the
language in the ``sourcecode`` directive::
.. sourcecode:: ipython
In [69]: lines = plot([1,2,3])
In [70]: setp(lines)
alpha: float
animated: [True | False]
antialiased or aa: [True | False]
...snip
and you will get the syntax highlighted output below.
.. sourcecode:: ipython
In [69]: lines = plot([1,2,3])
In [70]: setp(lines)
alpha: float
animated: [True | False]
antialiased or aa: [True | False]
...snip
This support is included in this template, but will also be included
in a future version of Pygments by default.
.. _using-math:
Using math
==========
In sphinx you can include inline math :math:`x\leftarrow y\ x\forall
y\ x-y` or display math
.. math::
W^{3\beta}_{\delta_1 \rho_1 \sigma_2} = U^{3\beta}_{\delta_1 \rho_1} + \frac{1}{8 \pi 2} \int^{\alpha_2}_{\alpha_2} d \alpha^\prime_2 \left[\frac{ U^{2\beta}_{\delta_1 \rho_1} - \alpha^\prime_2U^{1\beta}_{\rho_1 \sigma_2} }{U^{0\beta}_{\rho_1 \sigma_2}}\right]
To include math in your document, just use the math directive; here is
a simpler equation::
.. math::
W^{3\beta}_{\delta_1 \rho_1 \sigma_2} \approx U^{3\beta}_{\delta_1 \rho_1}
which is rendered as
.. math::
W^{3\beta}_{\delta_1 \rho_1 \sigma_2} \approx U^{3\beta}_{\delta_1 \rho_1}
This documentation framework includes a Sphinx extension,
:file:`sphinxext/mathmpl.py`, that uses matplotlib to render math
equations when generating HTML, and LaTeX itself when generating a
PDF. This can be useful on systems that have matplotlib, but not
LaTeX, installed. To use it, add ``mathmpl`` to the list of
extensions in :file:`conf.py`.
Current SVN versions of Sphinx now include built-in support for math.
There are two flavors:
- pngmath: uses dvipng to render the equation
- jsmath: renders the math in the browser using Javascript
To use these extensions instead, add ``sphinx.ext.pngmath`` or
``sphinx.ext.jsmath`` to the list of extensions in :file:`conf.py`.
All three of these options for math are designed to behave in the same
way.
See the matplotlib `mathtext guide
<http://matplotlib.sourceforge.net/users/mathtext.html>`_ for lots
more information on writing mathematical expressions in matplotlib.
.. _pyplots:
Inserting matplotlib plots
==========================
Inserting automatically-generated plots is easy. Simply put the
script to generate the plot in the :file:`pyplots` directory, and
refer to it using the ``plot`` directive. First make a
:file:`pyplots` directory at the top level of your project (next to
:``conf.py``) and copy the :file:`ellipses.py`` file into it::
home:~/tmp/sampledoc> mkdir pyplots
home:~/tmp/sampledoc> cp ../sampledoc_tut/pyplots/ellipses.py pyplots/
You can refer to this file in your sphinx documentation; by default it
will just inline the plot with links to the source and PF and high
resolution PNGS. To also include the source code for the plot in the
document, pass the ``include-source`` parameter::
.. plot:: pyplots/ellipses.py
:include-source:
In the HTML version of the document, the plot includes links to the
original source code, a high-resolution PNG and a PDF. In the PDF
version of the document, the plot is included as a scalable PDF.
.. plot:: pyplots/ellipses.py
:include-source:
You can also inline code for plots directly, and the code will be
executed at documentation build time and the figure inserted into your
docs; the following code::
.. plot::
import matplotlib.pyplot as plt
import numpy as np
x = np.random.randn(1000)
plt.hist( x, 20)
plt.grid()
plt.title(r'Normal: $\mu=%.2f, \sigma=%.2f$'%(x.mean(), x.std()))
plt.show()
produces this output:
.. plot::
import matplotlib.pyplot as plt
import numpy as np
x = np.random.randn(1000)
plt.hist( x, 20)
plt.grid()
plt.title(r'Normal: $\mu=%.2f, \sigma=%.2f$'%(x.mean(), x.std()))
plt.show()
See the matplotlib `pyplot tutorial
<http://matplotlib.sourceforge.net/users/pyplot_tutorial.html>`_ and
the `gallery <http://matplotlib.sourceforge.net/gallery.html>`_ for
lots of examples of matplotlib plots.
Inheritance diagrams
====================
Inheritance diagrams can be inserted directly into the document by
providing a list of class or module names to the
``inheritance-diagram`` directive.
For example::
.. inheritance-diagram:: codecs
produces:
.. inheritance-diagram:: codecs
.. _extensions-literal:
See the :ref:`ipython_directive` for a tutorial on embedding stateful,
matplotlib aware ipython sessions into your rest docs with multiline
and doctest support.
This file
=========
.. literalinclude:: extensions.rst


This month, across all Grassroot Extra accounts, {{ monthAccountBillings['SMS_COUNT'] }} SMSs and {{ monthAccountBillings['USSD_COUNT'] }} USSD sessions have been accounted. That implies {{ (monthAccountBillings['SMS_CHARGE'] / 100) | currency: 'ZAR':'symbol-narrow' }}c in SMS charges, and {{ (monthAccountBillings['USSD_COUNT'] / 100) | currency: 'ZAR':'symbol-narrow' }}c in USSD charges. Overall, {{ (monthAccountBillings['SMS_COUNT'] / monthAccountBillings['SYSTEM_SMS_COUNT']) | percent }} of SMSs are being charged, and {{ (monthAccountBillings['USSD_COUNT'] / monthAccountBillings['SYSTEM_USSD_COUNT']) | percent}} of USSD sessions.


Dive is a Threes-like game blending additive and multiplicative number theory. Tiles merge with their divisors.
How to play: Use your arrow keys or swipe to move the tiles (WASD and HJKL work too). When two tiles touch, one of which divides the other, they merge into one, adding their values!
When you make a new tile N, the game divides N by all current seeds, and the result is "unlocked" as a new seed if it is not 1. These new seeds aren't actually always prime! (Can you get a composite one?)
The basic lore of Threes variants, of which there are many (three cheers to github!), is well known by now: the deluge was opened by 2048, created by Gabriele Cirulli, based on 1024 by Veewo Studio which in turn was conceptually similar to Threes by Asher Vollmer.
The basic idea of this variant was due to Allen Knutson, with design contributions also from myself and Vynce Montgomery. It was first implemented as DIV by TheMoreYouKnow; this version is a fork of theirs.
The name "Dive" is the historically most justified way to spell /dɪv/ in English; compare "give", "live".


Previous
Next
SECURE PAYMENT
We do not store credit card details nor have access to your credit card information.
QUALITY SHIPPING
We ensure that our delivered products are in pristine condition.

CATEGORIES
ALBUMS
APPAREL
DOLLS
IMAGE PICKETS
KEY RINGS
LIGHT STICKS
PACKAGES
PHONE CASES
PHOTOBOOKS
PHOTOCARDS
POSTERS
STICKERS
HOTTEST SELLERS
SEE MORE >
No products available
PREORDERS
SEE MORE >
No products available
NEWEST PRODUCTS
No products available


A magic square is a table of numbers where the numbers in each row, column and diagonal always add up to the same result. This site is a homage to a one-of-a-kind magic square.
German artist Albrecht Dürer's engraving Melencolia I contains a 4x4 magic square where not only the rows, columns and diagonals add up to 34 but also several other interesting patterns in it also add up to 34 - such as the numbers in the four corners and the numbers in the central square. This site explores all such patterns in Dürer's square.
Created by Carlos Zanella - http://zanel.la


Provides real-time error reporting for your JavaScript, Node.js, .NET Core, ASP.NET, Web API, WebForms, WPF, Console, and MVC apps. It organizes the gathered information into simple actionable data that will help your app become exceptionless!
Check it outYour code. Your way. Faster. CodeSmith Generator is a software development tool to help you get your job done faster. Technically speaking it is a template driven Source Code Generator that automates the creation of common application source code for any language.
Check it out


We are making some improvements, don't worry the commit web hooks are still working.
While we're down go visit Our github


NCover FAQ
If you have questions that this document does not address, contact Peter Waldschmidt or try the NCover Forums.
1. What is code coverage analysis?
A code coverage analyzer monitors your code at runtime and records information about which lines of code were executed. NCover shows each sequence point in your application along with the number of times that point was executed. Sequence points are generated by the compiler and stored in the debug information (.pdb) files. A sequence point basically corresponds to a single program statement (often a line of code) in your high-level language.
2. Why would I want to do code coverage analysis?
Unit test suites are often used as a quality tool during the development process to keep the codebase stable as it changes and expands. Tools such as NUnit are often used to run and report on the test suites. However, when implementing unit testing in your build process, you have no way of knowing how much of your code the unit tests are actually testing. This is where code coverage comes in. You can run NUnit within NCover and use the code coverage report to determine which code was not tested by that particular test suite.
3. What versions of the CLR does NCover support?
NCover 1.5.x requires the .NET framework version 2.0.50727 to be installed; however, the application being profiled can be written against any shipping version of the framework. NCover has been tested profiling coverage of .NET 2.0, .NET 1.1 and .NET 1.0 applications.
4. Which version of NCover should I install?
If you have the .NET 2.0 framework installed on your machine then you should use the latest NCover version available. NCover as of version 1.5 can profile .NET 2.0, 1.1 and 1.0 applications.
For development teams who do not have the .NET framework 2.0 installed but do have the .NET framework version 1.1.4322, you can try NCover 1.3.3. Note however that this version is no longer supported as it has a number of known issues and limitations.
5. What is the command line syntax for NCover?
Here is the usage info from the NCover command line (for NCover versions from 1.5.6 only):
NCover.Console [<command line> [<command args>]] [//svc <service name>] [//iis] [//a <assembly list>] [//w <working directory>] [//ea <exclusion list>] [//reg] [//x <xml output file>] [//s [<settings file>]] [//r [<settings file>]] [//v] [//q] [//l <log file>] //svc For profiling windows services //iis For profiling web applications //a List of assemblies to profile separated by semi-colons i.e. "MyAssembly1;MyAssembly2". Do not include paths or suffixes. //w Working directory for profiled application //ea List of attributes marking classes or methods to exclude from coverage //reg Register profiler temporarily for user. (helps with xcopy deployment) //x Specify coverage output file. (default: coverage.xml). //pm Specify name of process to profile (i.e. myapp.exe) //s Save settings to a file (defaults: NCover.Settings) //r Use settings file, overriding other settings (default: NCover.Settings) //l Specify profiler log file (default: coverage.log). //q No logging (quiet) //v Enable verbose logging (show instrumented code)
6. Does NCover required a special compilation step for my code?
No. Some code coverage tools change your source code and force you to recompile it into a special build. NCover is designed to work on shipping code. NCover uses the .NET Framework profiling API to monitor your code. It does require build symbols, but can be run on release code without any modifications.
7. How does NCover work?
NCover uses the .NET Framework profiler API to monitor an application's execution. When a method is loaded by the CLR, NCover retrieves the IL and replaces it with instrumented IL code. NCover does not change your original IL code, it simply inserts new code to update a visit counter at each sequence point. Upon request, (usually after the .NET process has shut down) the profiler outputs statistics to the coverage file.
8. What is the output of NCover?
NCover generally writes out three files after analysis completes.
<method class="NCoverTest.ClassLoaded" name="HasDeadCode"> <seqpnt document="C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs" column="13" line="48" endcolumn="58" endline="48" visitcount="1" /> <seqpnt document="C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs" column="13" line="49" endcolumn="22" endline="49" visitcount="1" /> <seqpnt document="C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs" column="17" line="50" endcolumn="24" endline="50" visitcount="1" /> <seqpnt document="C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs" column="13" line="51" endcolumn="48" endline="51" visitcount="0" /> <seqpnt document="C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs" column="9" line="52" endcolumn="10" endline="52" visitcount="0" /> </method>
| Visit Count | Line | Column | End Line | End Column | Document |
| 1 | 48 | 13 | 48 | 58 | C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs |
| 1 | 49 | 13 | 49 | 22 | C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs |
| 1 | 50 | 17 | 50 | 24 | C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs |
| 0 | 51 | 13 | 51 | 48 | C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs |
| 0 | 52 | 9 | 52 | 10 | C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs |
Suggested usages of the coverage.xml output are to display it in the NCoverExplorer gui with the source code highlighted, to generate html reports, or to include it in your continuous build server reports such as CruiseControl.Net. For more information on these options see below in the FAQ.
9. How do I use coverage exclusions?
First you should define an attribute to markup your excluded code with. You will likely want to put this in a common assembly to make it reusable, or indeed within a "CommonAssemblyInfo.cs" that you include in all your application assemblies.
namespace MyNamespace { class CoverageExcludeAttribute : System.Attribute { } }
Apply the attribute to the C# classes and/or methods you wish to mark as excluded from code coverage statistics:
[CoverageExclude] private void SomeMethodToExclude() {}
Finally, ensure you pass the full qualified attribute information in the NCover command line:
NCover.Console MyApplication.exe //ea MyNamespace.CoverageExcludeAttribute
Note that if you are using the TestDriven.Net VS.Net add-in to "Test with Coverage" it will automatically pass through "//ea CoverageExcludeAttribute" which you should define without a namespace like above. For further information refer to this blog entry.
10. Examples
Coverage while running a simple executable until it exits:
NCover.Console MyApplication.exe
Coverage while running all the unit tests in an assembly using NUnit, profiling all loaded assemblies with .pdb build symbols:
NCover.Console nunit-console.exe MyApplication.Tests.dll
Coverage of only a subset of loaded assemblies while running unit tests:
NCover.Console nunit-console.exe MyApplication.Tests.dll //a MyApplication.Core;MyApplication.Utilities
Coverage of a windows service. Stop the service to generate the coverage output:
NCover.Console //svc MyServiceName
Coverage of an ASP.Net application. Stop the IIS service to generate the coverage output:
NCover.Console //iis
11. Where can I get help or support?
Your best approach is to browse the NCover forums as well as the blog by the author Peter Waldschmidt. If you cannot find a similar issue mentioned feel free to post your query and perhaps someone can help.
12. How do I "xcopy deploy" NCover like my other build tools?
Many developers prefer to have their build tools such as NUnit, NAnt etc stored in source control in a Tools folder along with the source code. This ensures that a new developer can obtain and build the application without having to install additional tools on their own machines.
NCover can also be deployed in this fashion. However the one gotcha with NCover versus other tools is that the profiler within CoverLib.dll must be COM registered on the local machine before you execute it. Prior to NCover 1.5.6 this was usually achieved as part of your build script, which would call regsvr32 with the path to the CoverLib.dll in your Tools folder. Alternatively the <ncover> NAnt and MSBuild tasks described below will do this for you. As of NCover 1.5.6 you can also use the //reg option in the command line arguments which will temporarily register the profiler. Note that the //reg option will not work for IIS or Windows Service profiling unless you are running NCover under the same Windows login account as the IIS worker process, or your Windows Service.
13. How do I see my source code highlighted with the coverage results?
NCoverExplorer is a gui and console-based .NET application developed by Grant Drake. NCoverExplorer parses the coverage.xml files output from NCover and displays the results integrated with your source code. It also includes a number of additional features to merge, filter, sort and generate html reports. The console version is designed to be used as part of an automated build process. The support forums for NCoverExplorer are located with the NCover ones at http://ncover.org/.
14. How do I run NCover from within the Visual Studio.Net IDE?
The TestDriven.Net add-in by Jamie Cansdale offers a right-click capability within the IDE to execute your unit tests with code coverage. The results of the NCover code coverage are displayed with the bundled NCoverExplorer gui for analysis and reporting.
15. How do I run NCover from a NAnt or MSBuild task?
You can use an <exec> task with NAnt or an <Exec> task with MSBuild. Alternatively you may want to use the custom <ncover> task for NAnt or <NCover> task for MSBuild developed by Grant Drake for a more developer friendly syntax. The source code, compiled assemblies and documentation are located in the NCoverExplorer.Extras.zip available from http://ncoverexplorer.org/.
16. How do I include NCover output in my CruiseControl.Net build reports?
CruiseControl.Net is a continuous integration build server which offers web-based reporting of the outputs of a build such as unit test results and code coverage reporting. The default CruiseControl.Net installation includes a basic stylesheet which works in combination with the standard coverage.xml formatted output. So all you need to do is include the execution of NCover as part of your build, then add a CruiseControl.Net merge file publisher task to integrate the coverage.xml results into the build output.
An improvement on the above to display more attractive and powerful reports as well as minimize the build log size is to use NCoverExplorer. The NCoverExplorer.Console.exe is designed to produce a more concise xml report summary that is combined with an alternate xsl stylesheet for CruiseControl.Net. You can find more information and screenshots in this blog entry - all the necessary tasks, examples and documentation are located within NCoverExplorer.Extras.zip available from http://ncoverexplorer.org/.
17. How do I merge multiple NCover coverage.xml results?
You can can use NCoverExplorer to merge the results of multiple coverage runs. For more information refer to this blog entry.
18. Troubleshooting: Why is my coverage.xml file empty?
19. Troubleshooting: I have coverage.xml output but my XYZ assembly is not included in it?
20. Troubleshooting: After running NCover my coverage.log says "Failed to load symbols for module XYZ"?
21. Troubleshooting: I get a "Profiled process terminated. Profiler connection not established" message?
22. Troubleshooting: My coverage exclusions are not working?


Modules:
Info module:
This module is responsible of language information. It affords information such as the name, family, writing direction, etc. of a language.
Lang module:
This module is responsible of languages character detection. It is used to test if a text contains all the characters of a language or it is a hybrid. Also, it affords the function which transforms the numbers to their pronunciation in a certain language.
Trans module:
It is used for language translateration. Certain languages have many translateration systems.
Use Cases:
Morse code:
This is a demonstration of morse code with available languages. You can even listen to it.


Ph.D. Candidate (Present), University of Windsor, Windsor, Ontario, Canada
Graduate Assistant, University of Windsor, Windsor, Ontario, Canada
Statistical Analyst, University of Toronto, Toronto, Ontario, Canada
Past:
Research Assistant, McMaster University, Hamilton, ON, Canada
MSc. Graduate, McMaster University, Hamilton, Ontario, Canada
Contact
Windsor, Ontario
Canada
Tel:<PHONE_NUMBER>
Email<EMAIL_ADDRESS>Sathish Chandra Pichika is pursuing his Ph.D. in Statistics at the University of Windsor working under the advisor Dr. Severein Nkurunziza. Also, he currently employed as Statistical Analyst in University of Toronto working with Dr. David JA Jenkins. In the past, he worked as Research Assistant in McMaster University, where he completed his M.Sc in December’11 at McMaster University, Canada, where he was supervised by Dr. Joseph Beyene. He received his B.Sc and M.Sc degree from Loyola College, Chennai, India in 2007 and 2009. His current research focus is on Probability, structural change-point modeling, data science, repeated measure data analysis.
Will be updated very soon.
Data visualization tools are more powerful than ever. You can create almost any type of chart from a data set. Just because you can create many different types, however, doesn’t mean you should. Less is more. Clarity is better than complexity. Overwhelming your report audience with too much information, too many visuals, or too many sections can cause them to lose focus.
Understand your data, create a story from it, and build a report that tells that story. Your audience wants the highlights – concerns, issues, a call to action, and so forth. Human memory and attention are limited. Do not expect your audience to remember information from a previous page. Remind your audience what they are looking at on each page. Choose effective visualizations and lay out your page so that your audience can quickly and easily find the insights that they need.
Creating an accessible report benefits your entire audience, not only those with special needs. In addition to users with hearing or visual impairments, your report needs to be available to senior users, users in difficult reading conditions (for example, on a mobile device outdoors), and so on.  Anticipating user needs and understanding user limitations ensure that your entire audience can gain insight from your data story. Understanding the basic concepts of accessible content creation (for example, adequate labeling and color usage) can empower your own decision-making as you create reports for your company.
Well-designed reports are visually consistent. Ensure that your visuals, such as text sizes, title fonts, and graph colors, are consistent throughout your entire report. This creates a cohesive experience and avoids cognitive overload or misinterpretation of your data story. You might want to consider creating a set of report templates that you and others in your company can share.


Queensland
Queensland, a land as diverse as society itself. From the Daintree Rainforest to the Sunshine Coast, you needn't be an avid cyclist to appreciate all this environmental marvel has to offer.
Queensland is also home to the amusement park capital of Australia, the Gold Coast featuring exciting adventures like Movie World and Dreamworld!
Of course, if your willing to do a little deep-sea cycling, the Great Barrier Reef is a must see destination. Get in before it's gone!


Home
Blogs
Resume
Projects
About me
1st blog post
CSS concepts
Arrays vs Hashes
Enumerables
Ruby Classes
JavaScript baby!!!
Technology
Redone Website


Loved the entire ambience and location of the hotel.very good location and the staff are also helpful and understanding. perfect stay
Sign up here to receive interesting updates


---
layout: base
title: Article Archive
permalink: /2013archive/
header_text: Listing of Reports and Posts
year: 2013
---
{% comment %}Limitation of this is that need a post each month for it to differentiate between years, etc{% endcomment %}
{% capture thispageyear %}{{ page.year }}{% endcapture %}
{% for post in site.posts %}
{% capture thispostyear %}{{ post.date | date: "%Y" }}{% endcapture %}
{% if thispostyear == thispageyear %}
{% comment %}This closes the nested list if a new month has begun, unless it's the very first post of course. Also need to ensure closes if very last post.{% endcomment %}
{% capture thispostmonth %}{{ post.date | date: "%B" }}{% endcapture %}
{% comment %}This opens the nested list for a new month or if its the very first post in the loop{% endcomment %}
{% if forloop.first or lastpostmonth != thispostmonth %}
{{post.date | date: "%B %Y"}}
{% endif %}
{% case post.type %}
{% when 'news' %}
- {{ post.title }}
{{ post.tagline }}
-
{{ post.content | strip_html | truncatewords: 60 }}
(Read more)
{% endcase %}
{% capture lastpostmonth %}{{ post.date | date: "%B" }}{% endcapture %}
{% endif %}
{% endfor %}


We're going to build a recipe app
- image
- author
- ingredients
- directions
- tags
Step 1 - Set up document structure and layout
- Parts: list of recipes, recipe details, edit recipe
- Menu to open each part
- Include styling
- ~ 45 minutes, 15 minutes discuss / demo
Step 2 - Create objects
- Service object for interaction with local storage
- Recipe object for a single recipe
- Check if you need any other object
- ~ 45 minutes, 15 minutes discuss / demo
Step 3 - Hook up page events
- At start, load existing recipes
- When clicking view on a recipe, open details
- When clicking edit, open edit recipe
- When adding new recipe, open edit form
- Note: tracking a recipe with an ID
- Note: recognize add vs. edit
- ~ 2 hours, 1 hour discuss / demo
Step 4 - Add service calls to backend
- Create a second Service object to do CRUD tasks
- Use the node server as backend
- ~ 45 minutes, 15 minutes discuss / demo


World Wide Prevalence of Slavery in 2013
Percentage of slaves by inhabitants
Total number of slaves
Data source:
Global Slavery Index


-
- NAMEMingqi Hu
- DATE OF BIRTHFebruary 14th, 1990
- ADDRESSNanJing China
- PHONE+56 069 234234
- FOCUSCloud Computing and Networks
- MASTER LANGUAGESC/C++,JAVA,C#, PYTHON,JAVASCRIPT
-<EMAIL_ADDRESS>- WEIBOhttp://weibo.com/u/5143027608
Hello!
Welcome to my personal site!
The site is about my focus field,personal honby and some shares!
For anyone who is interested in Cloud Computing or Data Mining , I'm glad to make friend with you to communicate the theme!
-
SOFTWARE SKILLS
- Adobe Fireworks
- Adobe Photoshop
- Adobe Illustrator
- Adobe Dreamweaver
- Corel Painter
PROGRAMMING SKILLS
- HTML / HTML 5
- CSS / CSS 3
- PHP
- PYTHON / DJANGO
- JAVA / SSH
- NOSQL / MONGODB
EDUCATION
- 2013 - 2017
NanJing University of Science and TechnologySoftware Engine Direction
INTEREST
- Sports
Running & Table tennis
- Movies
The Matrix , The legend of 1900 Mixture of emotions , Wana say somethings but can't...
- Games
The Old Scroll , MineCraft...
- Technology
Cloud Computing Cloud Computing is future!
-
CONTACT INFO
XiaoLingWei 200 , NanJing , JiangSu
ChinaMAP


Player Reports
Last Updated: 2021-03-30
action_test_all.html
action_test_all.json
action_test_scl5.html
action_test_scl5.json
action_test_scl6.html
action_test_scl6.json
alias_list.json
spy_game_count_all.html
spy_game_count_all.json
spy_game_count_scl5.html
spy_game_count_scl5.json
spy_game_count_scl6.html
spy_game_count_scl6.json
spy_selection_all.html
spy_selection_all.json
spy_selection_scl5.html
spy_selection_scl5.json
spy_selection_scl6.html
spy_selection_scl6.json


Anam1634.github.io
Ion Discover Dj Pro Kurzanleitung. View and Download ION DISCOVER DJ quick start manual online. ION Audio Computer DJ System QuickStart Guide. DISCOVER DJ DJ Equipment pdf manual download.
ION DISCOVER DJ QUICK START MANUAL Pdf Download.


I'm currently a student at Galvanize preparing to be a Web Developer. Previously, I worked as a Mechanical Engineer, but wanted to change things up!
Outside of work, I lead a small group of college students at the University of Washington as part of my church's college ministry, Acts2Fellowship.
Read More!


A Qt Journey
from Desktop to Mobile
Nicolas Froment / @lasconic
MuseScore
Help musicians to master their instruments
MuseScore
Free music notation editor for desktop
Built with Qt since 2002
MuseScore notation software
- Qt 5.3
- Qt Widgets
- ~200 000 LOCs for layout and painting
MuseScore.com
Community website
Users shares scores created with MuseScore
Image of piano + tablets
Image of phone in metro
Mobile apps features
- Android and iOS
- Not a full blown editor
- Connect to MuseScore.com and list scores
- Open external scores
- Render, display and play the scores
- Two apps per OS, one free, one paid
Legacy
- Layout code
- Painting code: QPainter
Work and maintainance cost
- ObjectiveC and Java skills
- Maintaining two codebases
Qt5
- Bring iOS and Android support
- Qt Quick 2 and Controls
- Qt Creator up to the job
- QQuickPaintedItem
QQuickPaintedItem
void QQuickPaintedItem::paint(QPainter * painter);
Screen DPI
QScreen* screen = QGuiApplication::primaryScreen();
qreal mm = screen->physicalDotsPerInch() / INCH;
Tips and Tricks
- Use Screen DPI
- Style parameters component
Style parameters component
GlobalAppSettings.qml
// store some global app settings
QtObject {
id: app
property double mm: nativeSettings.mm
property double buttonBorder: mm * 0.75
//colors
property string bgColor: "#F8F2E5"
property string bgHighlightColor: "#F1EBDE"
}
Tips and Tricks
- Use Screen DPI
- Style parameters component
- Qt Quick Controls, Layouts and Styles
Qt Quick Controls, Layouts and Styles
Example: a custom busy indicator
Tips and Tricks
- Use Screen DPI
- Style parameters component
- Qt Quick Controls, Layouts and Styles
- Icon Font
Icon Font
import "MyFont.js" as MyFont
Label {
text: MyFont.Icon.logo
font.family: "MyFont"
}
- Font Awesome anyone?
- IcoMoon: SVG to font
- Use the TTF in QML app
- Small utility script to extract JavaScript
A word about Qt Creator
- Better every day
- Refactoring
- Direct deployment on iOS and Android device and simulator
- Lacks: Packaging iOS, some Java support
External services we use
- Google Analytics
- Crashlytics
- Testflight
- Transifex
Calling native code
- Share a URL
- Google Analytics
Distribution
- Distribution on
- Apple App Store
- Google Play
- Amazon
- Samsung
- Smooth process with Apple and Google
- No copy protection for the moment
Conclusion
One codebase: 4 apps
Tools are good and evolve quickly
Integration with OS and 3rd party tools


Filter:
Student Name
Student City
Operations
{{student.name | uppercase}}
{{student.city | uppercase}}
remove
Name:
City: