|
FESTR 0.9
Finite-Element Spectral Transfer of Radiation
|
3-D Cartesian vectors More...
#include <Vector3d.h>
Public Member Functions | |
| Vector3d () | |
| Default constructor. More... | |
| Vector3d (const double xin, const double yin, const double zin) | |
| Parametrized constructor (Cartesian input) More... | |
| Vector3d (const double theta, const double phi) | |
| Parametrized constructor for a unit vector (spherical input) More... | |
| void | setx (const double xin) |
| Setter for Cartesian component x (Vector3d::x) More... | |
| double | getx () const |
| Getter for Cartesian component x (Vector3d::x) More... | |
| void | sety (const double yin) |
| Setter for Cartesian component y (Vector3d::y) More... | |
| double | gety () const |
| Getter for Cartesian component y (Vector3d::y) More... | |
| void | setz (const double zin) |
| Setter for Cartesian component z (Vector3d::z) More... | |
| double | getz () const |
| Getter for Cartesian component z (Vector3d::z) More... | |
| void | set0 () |
| Set *this vector to null. More... | |
| double | norm () const |
| Vector norm. More... | |
| double | abs_diff (const Vector3d &v) const |
| Absolute difference between two vectors. More... | |
| std::string | to_string () const |
| String representation of a Vector3d object. More... | |
| Vector3d | operator+ () const |
| Unary plus. More... | |
| Vector3d | operator- () const |
| Unary minus. More... | |
| Vector3d & | operator+= (const Vector3d &v) |
| Adds to a vector. More... | |
| Vector3d & | operator-= (const Vector3d &v) |
| Subtracts from a vector. More... | |
| Vector3d | operator+ (const Vector3d &v) const |
| Vector addition. More... | |
| Vector3d | operator- (const Vector3d &v) const |
| Vector subtraction. More... | |
| template<typename T > | |
| Vector3d | operator*= (const T g) |
| Multiplies a vector by a scalar g. More... | |
| template<typename T > | |
| Vector3d | operator/= (const T g) |
| Divides a vector by a scalar g. More... | |
| Vector3d | operator* (const double f) const |
| Multiplication of a vector by a scalar f. More... | |
| Vector3d | operator* (const float f) const |
| Multiplication of a vector by a scalar f. More... | |
| Vector3d | operator* (const int f) const |
| Multiplication of a vector by a scalar f. More... | |
| Vector3d | operator* (const size_t f) const |
| Multiplication of a vector by a scalar f. More... | |
| template<typename T > | |
| Vector3d | operator/ (const T g) const |
| Division of a vector by a scalar g. More... | |
| Vector3d & | normalize () |
| Make vector unit length, maintain its direction. More... | |
| Vector3d & | reverse () |
| Flip vector direction, maintain its length. More... | |
| Vector3d | unit () const |
| Unit vector in the same direction as *this. More... | |
| double | operator* (const Vector3d &v) const |
| Scalar product of two vectors. More... | |
| Vector3d & | operator%= (const Vector3d &v) |
| Vector multiplication. More... | |
| Vector3d | operator% (const Vector3d &v) const |
| Vector product of two vectors. More... | |
| double | cos_angle (const Vector3d &v) const |
| Cosine of the angle between two vectors. More... | |
| double | angle_rad (const Vector3d &v) const |
| The (smaller) angle between two vectors, in radians. More... | |
| double | distance (const Vector3d &v) const |
| Distance betwen two points. More... | |
| Vector3d | right_normal () const |
| Unit vector turned clockwise in 2-D (z-component is assumed = 0) More... | |
| int | get_turn (const Vector3d &tail, const Vector3d &head) const |
| Relative orientation of two 2-D vectors in their common plane, see pmh_2014_1125 (*this relative to head-tail) More... | |
| Vector3d | parallel_to (const Vector3d &v) const |
| Component of *this vector along a non-null vector v. More... | |
| Vector3d | perpendicular_to (const Vector3d &v) const |
| Component of *this vector perpendicular to a non-null vector v. More... | |
| bool | is_between (const Vector3d &tail, const Vector3d &head) const |
| Detects ordering of three co-linear points, see pmh_2015_0508, page 5 (*this relative to head and tail) More... | |
| Vector3d | get_rz () const |
| Convert *this to cylindrical RZ coordinates in the *this/z plane. More... | |
Static Public Member Functions | |
| static double | get_big () |
| Getter for proxy for Infinity (Vector3d::BIG) More... | |
| static double | get_small () |
| Getter for proxy for Zero (Vector3d::SMALL) More... | |
3-D Cartesian vectors
Definition at line 24 of file Vector3d.h.
| Vector3d::Vector3d | ( | ) |
Default constructor.
Definition at line 28 of file Vector3d.cpp.
| Vector3d::Vector3d | ( | const double | xin, |
| const double | yin, | ||
| const double | zin | ||
| ) |
Parametrized constructor (Cartesian input)
| [in] | xin | Cartesian component x |
| [in] | yin | Cartesian component y |
| [in] | zin | Cartesian component z |
Definition at line 32 of file Vector3d.cpp.
| Vector3d::Vector3d | ( | const double | theta, |
| const double | phi | ||
| ) |
Parametrized constructor for a unit vector (spherical input)
| [in] | theta | Polar angle (radians) |
| [in] | phi | Azimuthal angle (radians) |
Definition at line 37 of file Vector3d.cpp.
| double Vector3d::abs_diff | ( | const Vector3d & | v | ) | const |
Absolute difference between two vectors.
| [in] | v | Vector3d |
Definition at line 98 of file Vector3d.cpp.
| double Vector3d::angle_rad | ( | const Vector3d & | v | ) | const |
The (smaller) angle between two vectors, in radians.
| [in] | v | Vector3d |
Definition at line 258 of file Vector3d.cpp.
| double Vector3d::cos_angle | ( | const Vector3d & | v | ) | const |
Cosine of the angle between two vectors.
| [in] | v | Vector3d |
Definition at line 248 of file Vector3d.cpp.
| double Vector3d::distance | ( | const Vector3d & | v | ) | const |
Distance betwen two points.
| [in] | v | Vector3d |
Definition at line 267 of file Vector3d.cpp.
|
inlinestatic |
Getter for proxy for Infinity (Vector3d::BIG)
Definition at line 89 of file Vector3d.h.
| Vector3d Vector3d::get_rz | ( | ) | const |
Convert *this to cylindrical RZ coordinates in the *this/z plane.
Definition at line 317 of file Vector3d.cpp.
|
inlinestatic |
Getter for proxy for Zero (Vector3d::SMALL)
Definition at line 95 of file Vector3d.h.
Relative orientation of two 2-D vectors in their common plane, see pmh_2014_1125 (*this relative to head-tail)
Definition at line 283 of file Vector3d.cpp.
| double Vector3d::getx | ( | ) | const |
Getter for Cartesian component x (Vector3d::x)
Definition at line 49 of file Vector3d.cpp.
| double Vector3d::gety | ( | ) | const |
Getter for Cartesian component y (Vector3d::y)
Definition at line 63 of file Vector3d.cpp.
| double Vector3d::getz | ( | ) | const |
Getter for Cartesian component z (Vector3d::z)
Definition at line 77 of file Vector3d.cpp.
Detects ordering of three co-linear points, see pmh_2015_0508, page 5 (*this relative to head and tail)
Definition at line 308 of file Vector3d.cpp.
| double Vector3d::norm | ( | ) | const |
| Vector3d & Vector3d::normalize | ( | ) |
Make vector unit length, maintain its direction.
Definition at line 193 of file Vector3d.cpp.
Vector product of two vectors.
| [in] | v | Vector3d |
Definition at line 239 of file Vector3d.cpp.
Vector multiplication.
| [in] | v | Vector3d |
Definition at line 228 of file Vector3d.cpp.
| Vector3d Vector3d::operator* | ( | const double | f | ) | const |
Multiplication of a vector by a scalar f.
| [in] | f | Scalar |
Definition at line 165 of file Vector3d.cpp.
| Vector3d Vector3d::operator* | ( | const float | f | ) | const |
Multiplication of a vector by a scalar f.
| [in] | f | Scalar |
Definition at line 172 of file Vector3d.cpp.
| Vector3d Vector3d::operator* | ( | const int | f | ) | const |
Multiplication of a vector by a scalar f.
| [in] | f | Scalar |
Definition at line 179 of file Vector3d.cpp.
| Vector3d Vector3d::operator* | ( | const size_t | f | ) | const |
Multiplication of a vector by a scalar f.
| [in] | f | Scalar |
Definition at line 186 of file Vector3d.cpp.
| double Vector3d::operator* | ( | const Vector3d & | v | ) | const |
Scalar product of two vectors.
| [in] | v | Vector3d |
Definition at line 221 of file Vector3d.cpp.
|
inline |
Multiplies a vector by a scalar g.
| [in] | g | Scalar |
Definition at line 162 of file Vector3d.h.
| Vector3d Vector3d::operator+ | ( | ) | const |
| Vector3d Vector3d::operator- | ( | ) | const |
Subtracts from a vector.
| [in] | v | Vector3d |
Definition at line 141 of file Vector3d.cpp.
|
inline |
Division of a vector by a scalar g.
| [in] | g | Scalar |
Definition at line 227 of file Vector3d.h.
|
inline |
Divides a vector by a scalar g.
| [in] | g | Scalar |
Definition at line 178 of file Vector3d.h.
Component of *this vector along a non-null vector v.
| [in] | v | Vector3d |
Definition at line 293 of file Vector3d.cpp.
Component of *this vector perpendicular to a non-null vector v.
| [in] | v | Vector3d |
Definition at line 301 of file Vector3d.cpp.
| Vector3d & Vector3d::reverse | ( | ) |
| Vector3d Vector3d::right_normal | ( | ) | const |
Unit vector turned clockwise in 2-D (z-component is assumed = 0)
Definition at line 275 of file Vector3d.cpp.
| void Vector3d::set0 | ( | ) |
Set *this vector to null.
Definition at line 84 of file Vector3d.cpp.
| void Vector3d::setx | ( | const double | xin | ) |
Setter for Cartesian component x (Vector3d::x)
| [in] | xin | Cartesian component x |
Definition at line 42 of file Vector3d.cpp.
| void Vector3d::sety | ( | const double | yin | ) |
Setter for Cartesian component y (Vector3d::y)
| [in] | yin | Cartesian component y |
Definition at line 56 of file Vector3d.cpp.
| void Vector3d::setz | ( | const double | zin | ) |
Setter for Cartesian component z (Vector3d::z)
| [in] | zin | Cartesian component z |
Definition at line 70 of file Vector3d.cpp.
| std::string Vector3d::to_string | ( | ) | const |
String representation of a Vector3d object.
Definition at line 108 of file Vector3d.cpp.
| Vector3d Vector3d::unit | ( | ) | const |
Unit vector in the same direction as *this.
Definition at line 213 of file Vector3d.cpp.


--- layout: post title: The Long Goodbye date: 2009-04-04 01:25:00.000000000 -07:00 type: post published: true status: publish categories: [] tags: - Check Point - nokia meta: _publicize_pending: '1' author: login: phoneboy email<EMAIL_ADDRESS>display_name: Dameon Welch first_name: '' last_name: '' ---
Over my 10 years in Nokia's Security Appliance Business, I have met a lot of people. Many of these people worked in the business and moved onto other areas of Nokia. Others were the direct result of my "poking around." At one point, I hoped that I could leverage some of these contacts to branch out into other areas of Nokia.
Then, a funny thing happened at the end of September 2008. Nokia announced they were selling the Security Appliance Business to an outside investor. We were to become a new, independent company. Shortly thereafter, the wheels fell off the economy and the credit market dried up. This made such a venture untenable.
Shortly before Christmas, Nokia announced we were being sold to Check Point Software . It wasn't the original plan, but under the circumstances, it made the most sense.
Despite the uncertain economic climate, not to mention the uncertain future all of us faced, a funny thing happened. We all pulled together, tightened our belts a little, and forged ahead. Profitability continued. Epic amounts of customer satisfaction were attained. We showed incredible strength and determination. Every one of us.
Meanwhile, the rest of Nokia downsized and reorganized. The company is asked employees to volunteer for a layoff as well as ideas for cost savings. I would not be surprised if additional actions are being considered to ensure survival during this protracted recession.
Clearly, my days at Nokia are numbered. Some of us will end up at Check Point. Others, sadly will not. It's not only a long goodbye to a company that has treated me well for 10+ years, but to a "family" of people I've worked with. While like all families, we disagreed at times, we all tried our best to "delight our customers" and be "very human" (to borrow a couple of Nokia's values).
While it is goodbye to some, many of us will continue to work together as part of Check Point. Clearly, it won't be the same as it was. I have hope that, in time, it will be much better than what we had.


Helen
Ione
Lindberg
Home
Portfolio
Contact
(current)
>
Contact
Me:
Email address
Name
Message
Submit


Visitors who have come to spend time with us and survived :)
We quickly got in a snorkel trip to a coral reef. The water was not the normal crystal clear water we would like to see, but we had decent visibility to swim with the fishy and Lee and Edie even got to spot a sea turtle.
Usually we keep the boat in the same spot, and can dinghy around to see stuff, but with most all Bahama's storms, the wind starts out from the SE, the clocks around to SW, then strong strong winds out of the North, then NE and then East until the storm is over. We moved the boat 8 times in the 7 days Lee and Edie were here, just to find a calm anchorage.
We got our fair share of winds, we saw gusts up to 45 knots, but Lee could only capture 37,7 on the camera, but proof the winds were really blowing.
We took several walks on the beach during the big winds, and had to be careful. The blowing sand sandblasted the bare legs and got in hair and faces.
We were able to find a calm spot to anchor, and not anchor dragging, so no seasickness the whole trip.
Edie and Lee were very considerate with our limited menu choices and helped out with the shopping. They even took us out for a nice lunch at the local restaurant for burgers and fries.
We were sorry that the storm came, as we would have liked them to see more snorkeling sights and be able to jump in and go swimming every day - but one of the many things we can't control is the weather.
They had a good visit anyway, and we hope that they come back again.
Who: Lee & Edie Hearst
When: March 2012
Their story:
Big winds, not much snorkeling,
moved the boat for good protection
walk the sandy beaches, naps.
|
Enjoying the view from the top of the hill |
Good naps and good books |
|
Wind Wind Wind |
Walking the beach and exploring |
|
Playing Pinochle and Zero |
. Colorful starfish |
|
Swinging off the boat for a swim |
Closeness on the dinghy rides |
|
Lots of boats anchored for the storm |
Checking out the local landmarks |
|
Petting the tame ray at the beach |
Lost, just check out the sign post to find your distance back home. |
|
Pink houses on the beach |
Edie impressed us with her artistic ability |
|
How the wind does blow |
Some people cruise on big boats, some on small |


---
products:
featured:
limit: {{theme_settings.homepage_featured_products_count}}
---
{{#partial "page"}}
{{#each shipping_messages}}
{{> components/common/alert-info message}}
{{/each}}
{{{region name="home_promotion_one"}}}
{{{region name="home_promotion_two"}}}
{{{region name="home_promotion_three"}}}
{{{region name="home_promotion_four"}}}
{{{region name="home_promotion_five"}}}
{{#if products.featured}}
{{> components/products/featured products=products.featured columns=theme_settings.homepage_featured_products_column_count}}
{{/if}}
{{{region name="home_promotion_six"}}}
{{/partial}}
{{> layout/base}}


Man convicted in death of state trooper faces sentencing
by EndPlayWORCESTER, Mass. (AP) - A Massachusetts man convicted of causing the death of a state police trooper faces sentencing this week.
David Njuguna (en-juh-GOO'-nuh) is scheduled to be sentenced Thursday in Worcester Superior Court.
The 33-year-old Webster man was convicted last Tuesday of involuntary manslaughter in the March 2016 death of Trooper Thomas Clardy.
Prosecutors say Njuguna was speeding and high on pot when he struck Clardy's stopped cruiser on the Massachusetts Turnpike in Charlton. The 44-year-old Clardy was a father of seven.
Judge Janet Kenton-Walker cleared Njuguna of OUI manslaughter and felony motor vehicle homicide because prosecutors had not proved he was high.
The defendant's lawyers argued that he suffered a medical-related seizure that caused the crash.
Njuguna faces up to 20 years behind bars on the manslaughter charge.


Girls Rock run comedy workshops, weekend events and conferences in London, Manchester, Brighton and Edinburgh on stand up, comedy writing, improvisation, sketch and character, and ‘Time of the Month’ a scratch night to try out new comedy ideas
They run comedy workshops, weekend events and conferences in London, Manchester, Brighton and Edinburgh on stand up, comedy writing, improvisation, sketch and character, and ‘Time of the Month’ a scratch night to try out new comedy ideas
Write Description
Write Description
Write Description
Write Description
Write Description
Write Description
WomenArts Comedy Books Women Fashion Blogging London Music


THIS AGREEMENT is made between Her Majesty the Queen in right of the Province of British Columbia, as
represented by the Minister of Health (the "Province") and {{organization.name}} (the
"Applicant") and witnesses that, for good and valuable
consideration (the receipt and sufficiency of which is hereby acknowledged), the Parties agree as follows:
-
This Agreement consists of:
all of the terms and conditions of which are binding upon the Province and Applicant upon execution of
this
Cover Sheet by both Parties.
-
The Applicant's signing authority and Authorized Site location for the purposes of this Agreement is:
| Signing Authority |
{{signingAuthority.firstName}} {{signingAuthority.lastName}}
{{signingAuthority.emailAddress}}
|
| Authorized Site |
{{organization.suite}} {{organization.street? organization.street: ''}} {{organization.streetName}}
{{organization.city}}, {{organization.province}}. {{organization.postalCode}}
|
Note that the Authorized Site must be located within Canada.
-
[Select one or more as applicable:]
-
{{ isWebEnabled===true ? "✓": "▢" }}
The Applicant will Administer MSP using the MSP Direct Web Interface.
You must provide at least one Access
Administrator or User.
-
{{ organization.blueCross ? "✓": "▢" }}
The Applicant will Administer MSP using software supported by Pacific Blue Cross.
-
{{ organization.thirdParty? "✓": "▢" }}
The following organization will Administer MSP on the Applicant's behalf:
| {{ (organization.thirdParty) ? "Organization Number" : "" }}
|
{{organization.organizationNumber}} |
-
The Applicant will Administer MSP for [Select one or more as applicable:]
-
{{ (signingAuthority.administeringFor && signingAuthority.administeringFor.includes('Employees'))? "✓": "▢" }}
Employees
-
{{ (signingAuthority.administeringFor && signingAuthority.administeringFor.includes('International Students') )? "✓": "▢" }}
International Students
-
{{ (signingAuthority.administeringFor && signingAuthority.administeringFor.includes('Other') )? "✓": "▢" }}
Other (requires further approval)
-
The Applicant agrees with and represents and warrants to the Province that it has read, understood and
agreed
to the terms and conditions of this Agreement, including this Cover Sheet and the Access Terms and
Conditions,
and that this Agreement has been executed by a duly authorized signatory of the Applicant, and is a binding
agreement of the Applicant.
-
This Agreement may be executed in counterparts, which when taken together will constitute one and the same
agreement.
- {{ organization.name }}
- Print Name:
{{signingAuthority.firstName}} {{signingAuthority.lastName}}
- Date
:
{{date | date: 'MMM-dd-yyyy' }}


Adding Code
Use GitHub to add code or you can use this
License
Downloads For Number Theory
This is the small, basic number theory package (number_theory_essentials.py):
This is the large number theory package the small package is required (number_theory.py):
number theory essentials needs this list of numbers(numbertheorylists.py):
Downloads for Counting and Probability
The essential counting and probability file, counting_and_probibility_essensials.py:
The extended version, counting_and_probability.py:


Electronic Payments
National Automated Clearing House Association (NACHA)
2011–2016
electronicpayments.org
- Brand Strategist
- Information Architect
- Content Strategist
- UX Designer
- Front-End Developer
Electronic Payments
I helped NACHA define a strong brand for its electronic payment products Direct Deposit and Direct Payment.
Then I extended this brand strategy into targeted online messaging for specific audiences, marketing collateral for banks and businesses, and a set of resources for Financial Institutions of any size.
Our 5-year engagement with NACHA allowed us to design and develop several iterations of their Drupal site, brand strategies, marketing campaigns, a collection of printed pieces, an overhauled eStore, and a strong content strategy to educate each of the 6 user verticals: consumer, small business, non-profit, religious institutions, business, and financial institutions.


Choosing an appropriate vehicle for transportation
For any transportation company vehicles play a great role in establishing high quality logistics services.
No wonder selecting an appropriate transportation vehicle, be it a truck or a van, is a highly important task. In this article James Roth, the Head of our Logistics Department, will unveil some of the key principles you should know about when selecting a vehicle for transportation purposes.
READ MORE


Interesting angles
Earth’s axial tilt
Our planet’s angle of tilt is about 23.44 degrees, relative to Earth's orbit around the sun.
Tower of Pisa
Before the restoration the tower was tilted at an angle of 5.5 degrees. After the restoration it leans at about 3.5 degrees.


Contents
Dependencies:
% Matlab statistics toolbox % Matlab signal processing toolbox % Statistical Parametric Mapping (SPM) software https://www.fil.ion.ucl.ac.uk/spm/ % For full functionality, the full suite of CANlab toolboxes is recommended. See here: Installing Tools
Canlab dataset basic usage
Shows how to load a sample canlab_dataset object, extract variables, and make some plots.
% Instructions to include in help files as appropriate: % ----------------------------------------------------------------------- % % Before you start, the CANlab_Core_Tools must be added to your path with % subfolders. Otherwise, you will get errors. % % Sample datasets are in the "Sample_datasets" folder in CANlab_Core_Tools. % % This example will use behavioral data in the file: % 'Jepma_IE2_single_trial_canlab_dataset.mat' % The dataset is a multi-level dataset with 34 subjects, 2 subject-level vars, 10 event-level vars % consisting of a time series of trial-by-trial ratings of pain, expectations, and cue values for each subject % % These data have been submitted for publication (M. Jepma, Wager et al.) % Please do not reuse without permission.
Load the sample dataset and print a summary
% Load sample data file (this is in Sample_datasets in Core - make sure it's on your path) load('Jepma_IE2_single_trial_canlab_dataset.mat'); % loads object called DAT % Print a summary: print_summary(DAT); % see also list_variables(DAT)
--------- DATASET VARS -------- Experiment name: IE2 : Marieke Jepma 34 subjects, 2 subject-level vars, 10 event-level vars Warning: Missing variable type for variable MeanPain. Type assumed to be numeric. Warning: Missing variable type for variable MeanNPS. Type assumed to be numeric. --------- SUBJECT LEVEL VARS: data_obj.Subj_Level -------- Var_name Description __________ ___________ 'MeanPain' 'MeanPain' 'MeanNPS' 'MeanNPS' Warning: Missing variable type for variable trial. Type assumed to be numeric. Warning: Missing variable type for variable temp. Type assumed to be numeric. Warning: Missing variable type for variable cue. Type assumed to be numeric. Warning: Missing variable type for variable cue valence. Type assumed to be numeric. Warning: Missing variable type for variable expected pain. Type assumed to be numeric. Warning: Missing variable type for variable reported pain. Type assumed to be numeric. Warning: Missing variable type for variable vif. Type assumed to be numeric. Warning: Missing variable type for variable NPS. Type assumed to be numeric. Warning: Missing variable type for variable Expected pain next trial. Type assumed to be numeric. Warning: Missing variable type for variable Pain next trial. Type assumed to be numeric. --------- EVENT LEVEL VARS: data_obj.Event_Level -------- Var_name Description __________________________ __________________________________________________________ 'trial' 'Trial number' 'temp' 'Temperature: -0.5 = 48 degrees, 0.5 = 49 degrees' 'cue' 'Cue identity: 1-3 = CSlow, Cue 4-6 = CShigh, 7 = neutral' 'cue valence' 'Cue valence: -.5 low +.5 high' 'expected pain' 'Expected pain' 'reported pain' 'Reported pain' 'vif' 'Variance inflation factor for trial' 'NPS' 'NPS response' 'Expected pain next trial' 'Expected pain on next trial' 'Pain next trial' 'Reported pain on next trial' Warning: Missing variable type for variable MeanPain. Type assumed to be numeric. Warning: Missing variable type for variable MeanNPS. Type assumed to be numeric. Warning: Missing variable type for variable trial. Type assumed to be numeric. Warning: Missing variable type for variable temp. Type assumed to be numeric. Warning: Missing variable type for variable cue. Type assumed to be numeric. Warning: Missing variable type for variable cue valence. Type assumed to be numeric. Warning: Missing variable type for variable expected pain. Type assumed to be numeric. Warning: Missing variable type for variable reported pain. Type assumed to be numeric. Warning: Missing variable type for variable vif. Type assumed to be numeric. Warning: Missing variable type for variable NPS. Type assumed to be numeric. Warning: Missing variable type for variable Expected pain next trial. Type assumed to be numeric. Warning: Missing variable type for variable Pain next trial. Type assumed to be numeric.  Type assumed to be numeric. Warning: Missing variable type for variable reported pain. Type assumed to be numeric. r = 0.76, t( 33) = 12.53, p = 0.000000, num. missing: 2
Extract data from one variable conditional on another variable, and plot
% Now extract expectation and pain variables conditional on cue value: [~, expect_cshigh] = get_var(DAT, 'expected pain', 'conditional', {'cue valence' 1}); [~, expect_csmed] = get_var(DAT, 'expected pain', 'conditional', {'cue valence' 0}); [~, expect_cslow] = get_var(DAT, 'expected pain', 'conditional', {'cue valence' -1}); [~, pain_cshigh] = get_var(DAT, 'reported pain', 'conditional', {'cue valence' 1}); [~, pain_csmed] = get_var(DAT, 'reported pain', 'conditional', {'cue valence' 0}); [~, pain_cslow] = get_var(DAT, 'reported pain', 'conditional', {'cue valence' -1}); % Now make the plot, without individual subject lines % First set colors and condition names color1 = {[.9 .4 .2] [.6 .3 0]}; color2 = {[.5 .5 .5] [.2 .2 .2]}; color3 = {[.4 .8 .4] [.2 .7 .2]}; condition_names = {'High Cue' 'Medium Cue' 'Low Cue'}; % Now plot: subplot(1, 2, 2) [han1, Xbin, Ybin] = line_plot_multisubject(expect_cshigh, pain_cshigh, 'n_bins', 5, 'group_avg_ref_line', 'MarkerTypes', 'o', 'colors', color1, 'center', 'noind', 'nolines'); [han2, Xbin, Ybin] = line_plot_multisubject(expect_csmed, pain_csmed, 'n_bins', 5, 'group_avg_ref_line', 'MarkerTypes', 'o', 'colors',color2, 'center', 'noind', 'nolines'); [han3, Xbin, Ybin] = line_plot_multisubject(expect_cslow, pain_cslow, 'n_bins', 5, 'group_avg_ref_line', 'MarkerTypes', 'o', 'colors',color3, 'center', 'noind', 'nolines'); xlabel('Expectations'); ylabel('Pain'); set(gca, 'FontSize', 24); legend([han1.grpline_handle(1) han2.grpline_handle(1) han3.grpline_handle(1)], condition_names); drawnow, snapnow
Warning: Missing variable type for variable expected pain. Type assumed to be numeric. Warning: Missing variable type for variable expected pain. Type assumed to be numeric. Warning: Missing variable type for variable expected pain. Type assumed to be numeric. Warning: Missing variable type for variable reported pain. Type assumed to be numeric. Warning: Missing variable type for variable reported pain. Type assumed to be numeric. Warning: Missing variable type for variable reported pain. Type assumed to be numeric. r = 0.54, t( 33) = 3.64, p = 0.000919, num. missing: 3 r = 0.24, t( 33) = 1.43, p = 0.161345, num. missing: 3 r = 0.59, t( 33) = 5.64, p = 0.000003, num. missing: 2


pp. 396ff.
Clock, pp. 399ff.
Bomb, pp. 404f.
Tile set (sprite sheet), pp. 407ff.
Frame set (sprite animator), pp. 417ff.
Core HTML5 Canvas, ch. 6
pp. 396ff.
Clock, pp. 399ff.
Bomb, pp. 404f.
Tile set (sprite sheet), pp. 407ff.
Frame set (sprite animator), pp. 417ff.


Family's tribute to 'wonderful' father as they honour his last wish
by Holly HumeTributes have been paid to a "wonderful" father-of-three from Suffolk as his family honoured his last wishes at a Christmas-themed market.
Matthew Clark, from Aldeburgh, was just 58 when he died on December 1 - following a recent accident which left him unwell.
Now his family, which includes wife Jane and sons Fred, George and Ed, have paid tribute to him after helping to hand out hats he had bought to give out at the town's Victorian market this weekend.
Son Fred, who is 29 and works as a solicitor, said: "He was quite the adventurer really, he did huge charity bike rides and had an amazing life."
Described by his son as "wonderful", he had raised money for East Anglia's Children's Hospices (EACH) for many years, taking on charity bike rides alongside other work.
His adventures took him around the world - from Cairo to Jerusalem, the length of Australia from Darwin to Sydney and even Shanghai to Singapore.
He died a week before he was due to celebrate his 30th wedding anniversary with wife Jane.
Fred, who said his father had wanted Aldeburgh's younger population to enjoy this weekend's festivities, added: "He bought all of the hats before he died and so we wanted to use them as he had wanted to.
"We're actually hoping that we'll make it an annual event now seeing as it was such a success.
"The children loved them and it made us so happy to see that they were everywhere you looked in the sea of festivities over the weekend.
"It was wonderful and there was so much going on so we were really pleased we could do it for him."
The hats were on show at the St Peter and St Paul's Church, with more than 200 given away to eager children getting ready for the Christmas celebrations.
Matthew's wife, Jane, posted a tribute to him on social media after the event, adding: "He very much wanted to see the community's younger generation enjoy the day."
All of the money raised from the Christmas market was donated to the parish church. It was part of a day of festivities across Aldeburgh.
Matthew had lived in Aldeburgh and Essex throughout his life, splitting time between his farm in Halstead and his home in Suffolk.


You are at school with the kitten.
The lock on the cage slips.
The bell rings.
The cat gets scared.
You lose!
Mr D. catches the kitten.
You win!
The kitten runs around the classroom.
The kitten jumps out the window.
You lose!
You watch the kitten play.
You win!
The kitten runs around the classroom.
The kitten jumps out the window.
You run after the kitten.
But you don't catch it.
You lose!
You catch it.
You win!


This tests audio and video recorded by Bloom 4.9 on Wasta 20 Linux.
Your browser does not support the audio tag!?
Your browser does not support the video tag!?
Video courtesy of
Big Buck Bunny
.


Hello human, my name is Aaron. I'm a nerd living in Boston focused on continuous learning, and enjoying life while working hard. I work as a a Software Engineer at Skylla Technologies. I'm a curious person with many interests. This is my home on the web. I post short thoughts on my micro blog and longer posts are here.
Check out what I'm up to currently on my now page.


--- layout: post title: Owning My Expertise tags: - blog - personal-growth ---
Yesterday I had the amazing pleasure of leading a workshop for women and non-binary folks in tech as part of Write/Speak/Code's Own Your Expertise event in Chicago. I was so nervous, but at the same time excited to help out fellow programmers by bringing my previous career expertise — writing — to bear in my new profession.
Basically, the idea of the OYE workshop was to pump each other up, believe in our own knowledge and the value of our thoughts to the broader tech community, and produce some kind of deliverable based on that knowledge. After a half-day of talks and brainstorming topics, participants could choose between a couple of different workshops in each area of writing, speaking, and coding.
My workshop was titled "Design Patters for Bloggers," which I was inspired to put together after having set out to watch all of Christopher Okhravi's videos on design patterns (I'm still not even halfway through them, but I highly recommend — super accessible and fun).
After expanding on each of four basic writing templates with the group, I challenged each participant to choose one of these design patterns (or make up their own, if they so chose) to apply to their topic. I had them start with an outline, a way of mapping the pieces of the design pattern to the various facets of the topic. Then we went around and gave feedback on those choices, and then there was about a half hour left for free writing.
I was so proud of each and every one of the folks who attended this workshop. I could tell that they were invested in making their ideas shine and bringing them to a larger audience. And by the end of the workshop, they all had a draft of a blog post ready to go! (Or revise, and then go, but I digress.)
What was equally powerful for me, though, was when I asked for their feedback at the end of the session. I asked them if these few, in my eyes, paltry examples of How People Write On The Internet were helpful to get their creative juices flowing.
The response was overwhelmingly positive. I honestly couldn't believe it! I expected them to be like "sure, this was fine," or something — I wasn't sure what I expected. But it really fed my soul to be able to own my expertise for the good of the tech community. 10/10 did not regret stretching myself to do this nerve-wracking thing; would do again.
P.S. Here are the design patterns I presented:
Informer
Storyteller
Iterator
Explainer


Big Daddy ***
rated PG-13 Columbia Pictures 93 minutes starring Adam Sandler, Joey Lauren Adams, Jon Stewart, Cole and Dylan Sprouse, Josh Mostel, Leslie Mann, Allen Covert, Rob Schneider, Kristy Swanson, Steve Buscemi based on the story by Steve Franks written by Steve Franks, Tim Herlihy and Adam Sandler directed by Dennis Dugan
Adam Sandler makes more money than any other 32-year-old comic on the planet, but he also takes more slack from the critics than basically anyone else. To him, and to his fans, it should be a breath of fresh air when I admit that I enjoyed his latest film, "Big Daddy".
The boyish Sandler stars as Sonny Koufax, a New York City law school graduate who's a toll booth collector while preparing to eventually take the bar exam. His life, however, is taking a turn for the worse, as his girfriend(Kristy Swanson) dumps him for an older man. One day, while his roommate(Jon Stewart) is in China on business, a child(played by twins Cole and Dylan Sprouse) comes to the door with a note saying that he is Julian, the product of a one-night-stand that Sonny's roommate had 5 years before.
Seeking a sense of responsibility that he knows he has lost, and partly to impress his girlfriend, he decides to become the father of the child, named Julian. He decides to give him the life that his father never gave him; a life where the father will not give orders; he will merely make suggestions. This way of parenting makes the two of them very good friends. They piss on walls; they trip oncoming skaters, and they do what basically any Adam Sandler-raised child thinks is cool.
Julian also helps Sonny get a girl named Layla, played by Joey Lauren Adams of "Chasing Amy" fame. She turns out to be the sister of his roommate's girlfriend(Leslie Mann), but she is charmed by his wit and his newfound sense of "responsibility".
The usual eclectic clan of Sandler characters is back. Rob Schneider plays a foreign delivery boy who comes to Sonny's apartment to Indian wrestle him; Steve Buscemi plays a homeless man who desires a Sausage McMuffin; and Allen Covert plays Sonny's gay friend(a sign of Sandler becoming more PC). Sandler's early films, "Billy Madison" and "Happy Gilmore", were unashamedly dumb, but also incredibly funny. His two latest, and more popular, films, "The Wedding Singer" and "The Waterboy" are my two least favorite of his. "The Wedding Singer" misfired by trying to portray Sandler as a romantic lead.  "Big Daddy", however, is a step in the right direction.
"Big Daddy" has taken "Happy Gilmore" director Dennis Dugan and successfully combined Sandler's comedic and dramatic ability. "Big Daddy" has its share of predicability and throwaway lines(not to mention the cheesiness factor), but it's consistently funny and entertaining, warmhearting and accessible.
Accessibility really is Adam Sandler's whole routine. He represents those who may not have "talent", but he is showing them(and us) that anyone can make it big. At heart, Sandler is still a teenager obsessed with fart jokes. As for those who have talent and still don't make it big...
a review by Akiva Gottlieb, The Teenage Movie Critic<EMAIL_ADDRESS>http://teenagemoviecritic.8m.com
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


Israel shuts down Al-Rasasi Mosque in Jerusalem
by Anadolu AgencyJERUSALEM: Israeli authorities on Wednesday shut down Al-Rasasi Mosque in Jerusalem.
The Muslim house of worship – located near Al-Aqsa Mosque, the third holiest site in Islam – was shut for six months on the grounds that parts of it were being used as an office by Jerusalem’s Jordan-run Religious Endowments Authority.
The offices of Palestinian state television and the Palestinian National Education Directorate in East Jerusalem were also shut for six months following a raid by Israeli police earlier in the day.
Just weeks earlier, on November 13, scores of Jewish settlers forced their way into the Al-Aqsa Mosque compound, according to a Palestinian agency.
“Around 123 settlers backed by Israeli police stormed the Al-Aqsa compound since early morning,” said the Jerusalem Islamic Waqf, a Jordan-run agency responsible for overseeing the city’s Muslim and Christian holy sites.
Settlers swarmed into the site via the Al-Maghariba Gate, usually guarded by Israeli police.
For Muslims, Al-Aqsa represents the world’s third-holiest site. Jews, for their part, refer to the area as the ‘Temple Mount’ claiming it was the site of two Jewish temples in ancient times.
Israel occupied East Jerusalem, in which Al-Aqsa is located, during the 1967 Middle East War. It formally annexed the entire city in 1980, claiming it as its capital – a move never recognised by the international community.


NextGen School
Hi, Mr. Admin
Dashboard
Office
Student
Fees
Income
Expenses
Attendance
Exam
Academics
HR
Inventory
Reports
Disabled Student
Class*
Select
Class 1
Class 2
Class 3
Section*
Select
A
B
Search By Keyword
Search
Admission Number
Student Name
Class
Father Name
Date Of Birth
Gender
Category
Mobile Number
Action
1234
Mr. Ahsiqur Rahman
Class 5A
Fother Name
12-12-2019
Male
General
0123456798
1234
Mr. Ahsiqur Rahman
Class 5A
Fother Name
12-12-2019
Male
General
0123456798
1234
Mr. Ahsiqur Rahman
Class 5A
Fother Name
12-12-2019
Male
General
0123456798
1234
Mr. Ahsiqur Rahman
Class 5A
Fother Name
12-12-2019
Male
General
0123456798


2020
January 1, 2021
The year that started in March. The idea for this post came while reading this The Economist’s piece about Christmas newsletters. There have been many metaphors to describe these past nine months. The one I found most fitting (heard at some point on a Zoom call, a landmark of the pandemic) is that this all felt to me like I had been forced into a long-haul flight, with all the limitations, lack of comfort, and dislike that comes with flying; but somehow I was thrown on business class, while many people found themeselves in economy, or in some new, worse (under-)class.
Privilege is a word that has resonated a lot and stayed with me over this year. Part of it is the extremely uneven nature of the pandemic, where front workers and some parts of society are living the biggest disruption to life since WWII, while many of us can barely “do our part” and stay home, wash our hands and wear a mask. Part is also the exposure, laid bare a bit more this year, of much longer-standing inequalities in society and my position/role in each of them. The first step to action is acknowledgement, and 2020 has provided plenty of “nudge” in that direction. I have started to re-evaluate my role and position of power in many of these contexts and I hope I can do more in 2021.
Such an unusual year has made me miss many things. At the risk of sounding obvious, “social distancing” has put distance between people. Visiting family, hugging friends, interacting with students, and direct exchanges with colleagues are all things we have had to “do” through the mediation of a screen this year. For someone who pays close attention to cities as a job, I have found both fascinating and terrifying how the pandemic has turned urban spaces upside down, Here was my (failed) speculative take on what cities would become during the pandemic. and how the “core tech” that makes cities one of our best inventions –bringing people together– was disabled on purpose during most of this year. Although it has been formative to discover how much modern technology allows (the equivalent in the 1918 flu pandemic sure was less fun!), I can’t wait to go back to a world where that is an option rather than the only one.
I have also missed travelling a lot. My travel was so full just before the pandemic that the first weeks docked home felt good, very good. The fantastic weather the UK saw this spring and the back garden (privilege, again) that let us get a patch of greenery to read in also helped inmensely. But, as the days passed, I started remembering everything I like about travelling, missing the places I was meant to visit again, and the new ones I would have discovered. As the year progressed, I found myself even missing early rises to catch a 6am train on my way to London just for the day, the rush and adrenaline of having somewhere to go, and someone to meet. If there is a silverlining in all this is that we miss what we love, and some of these aspects were probably too taken for granted to be fully appreciated. Maybe the new year will mean a “reset” that’ll make me live more fully in the future.
But 2020 was not entirely lost. There has been some good out of this forced change of routines. Less trains, planes and trips has meant a bit more time in Liverpool, and lockdowns made sure that was spent mostly laying around the house. One of the most consistently rewarding ways I have found to fill that space and time has been through narrative. One could argue I read for a living, but this year I have read for fun more than I thought I’d be able. Here is a list with a few picks. And it’s been great.
Less work travel has also allowed me to have a bit more space to think and be less reactive about how I plan my work. I have worked hard on two big projectsOne is a book and the other one a big “endeavour”. that I don’t think I’d have been able to find the time and mindspace to focus on in the way I have this year. And on the topic of work, I can’t wait to see what happens to all this tech and practices we have rolled out to keep universities, teaching and research going, while distributed and remote. Back in March, we joked with colleagues that, had the University announced in January a plan to move teaching delivery to 80%-100% online in the next two years, we would have all thought it was a pipe dream; yet, two months later, we all silently made it happen pretty much in two weeks… Once it’s not the only option, I think a lot of good will come from having proven it can work.
Taken altogether , this has been quite the year. The most unusual and unprecedented in many ways, yet the most boring in others. As we have just stepped into a 2021 full of promises and hope, what do I want to take with me from 2020? As a major fan of the rule of three, I’ll take that many. The first is the liberating sense of resilience I felt when both collectively as a society and individually as myself, we were able to “reinvent” ourselves and continue doing things that either needed to be done or we wanted to do, just in slightly different ways. The second is the power of habit. When you don’t have to go anywhere and your commute takes the distance that connects your kitchen to the living room, there’s the risk that you’re fooled to believe you have “all the time there is”. Finding a good routine and sticking to it have proven extremely valuable. And finally, perhaps the most obvious one, the pandemic has taught me to take as little for granted as possible, because it almost never is. From being able to ride the whole thing with E, to family, friends and work colleagues, this year has made even clearer how lucky I am, how grateful I should be, and how much good I should work to put back into the world. And, if I can take even just a little bit of that with me into 2021, then maybe it has not been that terrible of a year.


Tanhaji - The Unsung Warrior Trailer Launch: Ajay Devgn, Rohit Shetty, Saif Ali Khan Make A Powerful Entry
19 Nov 2019, 09:10 by Saheli Maity
The stars of Tanhaji: The Unsung Warrior Ajay Devgn, Saif Ali Khan and Sharad Kelkar look dapper at the trailer launch of their film. Along with the star cast, we also see the producer, Bhushan Kumar and Ajay’s best friend and Singham’s director Rohit Shetty.
One of the most-awaited historical drama, Tanhaji: The Unsung Warrior has just dropped online and for the same, a trailer launch event has been organised in the city (Image Source:- viral Bhayani)
Ajay Devgn is seen making a banging entry with his best friend and Singham’s director Rohit Shetty. The actor-director duo is seen twinning in black (Image Source:- viral Bhayani)
Saif Ali Khan who plays the antagonist in the film makes a dapper entry. Dressed in an olive-green suit and white shirt, the actor looks suave (Image Source:- viral Bhayani)
Apart from Ajay Devgn and Saif Ali Khan, Sharad Kelkar who will be seen essaying Chhatrapati Shivaji Maharaj was also seen wearing a black shirt (Image Source:- viral Bhayani)
Along with the lead actors, the producer, Bhushan Kumar was also seen in black. Looks like the theme of Tanhaji: The Unsung Warrior trailer launch event is all-black (Image Source:- viral Bhayani)
Kajol and Luke Kenny have given the trailer launch a miss (Image Source:- viral Bhayani)
After launching the trailer of Tanhaji: The Unsung Warrior, the star cast took part in a Q&A round with the media (Image Source:- viral Bhayani)


|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface InspectableGraph
A read-only graph. A graph G = {N, E} is a set of nodes and edges. Each edge connects exactly two nodes that also belong to the same graph. That is, no edge can connect to a node that is not part of the graph.
Node and edge iterators returned reflect the most current state of the graph. That is, if a node iteration is in progress and a node, which has not been iterated yet, is removed, it will not appear at all. Similarly, a new node may or may not appear in an iteration that started before the new node addition. It is guaranteed that removed elements will not (re-)appear in iterations, after their removals (assuming single-threaded execution). Elements may, or may not, be removed through the iterators, depending on the graph implementation.
All iterator-style methods (e.g., nodes()
, edges()
), actually return ExtendedListIterable
instances, to provide a richer set of operations, beyond simple iteration. Note that these methods
return subclasses of Iterable
, so they can be used in the enhanced for-loop:
for (Node node : graph.nodes()) {
...
}
Each graph can be decorated with arbitrary key-value entries through the tuple()
method.
Listeners can be attached to any graph, to receive events of interest, such as additions/removals
of nodes/edges, etc.
Node
,
Edge
| Method Summary | |
|---|---|
void |
addEdgeListener(EdgeListener listener)
Adds an EdgeListener to this graph. |
void |
addGraphListener(GraphListener listener)
Adds a GraphListener to this graph. |
void |
addNodeListener(NodeListener listener)
Adds a NodeListener to this graph. |
ExtendedListIterable<Node> |
adjacentNodes(Node node)
Returns an ExtendedListIterable over all
nodes that are neighbors with the specified node. |
ExtendedListIterable<Node> |
adjacentNodes(Node node,
Direction direction)
Returns an ExtendedListIterable over all
nodes that are neighbors with the specified node, in the specified direction. |
Edge |
anEdge()
Convenient method that returns an edge of this graph. |
Edge |
anEdge(Node node)
Convenient method that returns an edge of this graph, incident to the specified node. |
Edge |
anEdge(Node node,
Direction direction)
Convenient method that returns an edge of this graph, incident to the specified node, at the specified direction. |
Edge |
anEdge(Node n1,
Node n2)
Convenient method that returns an edge of this graph, incident to the specified nodes. |
Edge |
anEdge(Node n1,
Node n2,
Direction direction)
Convenient method that returns an edge of this graph, incident to the specified nodes, at the specified direction. |
Node |
aNode()
Convenient method that returns a node of this graph. |
Node |
aNode(Node neighbor)
Convenient method that returns a node of this graph that is neighbor to the specified node. |
Node |
aNode(Node neighbor,
Direction direction)
Convenient method that returns a node of this graph that is neighbor to the specified node, in the specified direction. |
boolean |
areAdjacent(Node n1,
Node n2)
Returns whether there exists an edge connecting the specified nodes. |
boolean |
areAdjacent(Node n1,
Node n2,
Direction direction)
Returns whether there exists an edge connecting the specified nodes, with the specified direction. |
boolean |
containsEdge(Edge edge)
Returns whether this graph contains the specified edge. |
boolean |
containsNode(Node node)
Returns whether this graph contains the specified node. |
int |
degree(Node node)
Returns the degree of the specified node. |
int |
degree(Node node,
Direction direction)
Returns the degree of the specified node, depending on direction: Direction.OUT : equivalent to outDegree(node)
Direction.IN : equivalent to inDegree(node)
Direction.EITHER : equivalent to degree(node) |
int |
edgeCount()
Returns the number of edge contained in this graph (and returned by edges method). |
ExtendedListIterable<Edge> |
edges()
Returns an ExtendedListIterable over all edges of this graph. |
ExtendedListIterable<Edge> |
edges(Node node)
Returns an ExtendedListIterable over all
edges that contain the specified node. |
ExtendedListIterable<Edge> |
edges(Node node,
Direction direction)
Returns an ExtendedListIterable over all
edges that contain the specified node at the specified direction. |
ExtendedListIterable<Edge> |
edges(Node n1,
Node n2)
Returns an ExtendedListIterable over all
edges that connect the specified nodes, in either direction. |
ExtendedListIterable<Edge> |
edges(Node n1,
Node n2,
Direction direction)
Returns an ExtendedListIterable over all
edges that connect the specified nodes, in the specified direction. |
java.util.List<EdgeListener> |
getEdgeListeners()
Returns a read-only view of the currently registered edge listeners. |
java.util.List<NodeListener> |
getNodeListeners()
Returns a read-only view of the currently registered node listeners. |
void |
hint(Hint hint)
Provides hints to the graph implementation about desired runtime performance. |
int |
inDegree(Node node)
Returns the in-degree of the specified node. |
boolean |
isEmpty()
Returns nodeCount() == 0. |
int |
nodeCount()
Returns the number of nodes contained in this graph (and returned by nodes method). |
ExtendedListIterable<Node> |
nodes()
Returns an ExtendedListIterable over all nodes of this graph. |
int |
outDegree(Node node)
Returns the out-degree of the specified node. |
void |
removeEdgeListener(EdgeListener listener)
Removes the specified EdgeListener from this graph. |
void |
removeGraphListener(GraphListener listener)
Removes the specified GraphListener from this graph. |
void |
removeNodeListener(NodeListener listener)
Removes the specified NodeListener from this graph. |
Tuple |
tuple()
Returns the (single) tuple object associated with this graph. |
| Method Detail |
|---|
boolean isEmpty()
int nodeCount()
nodes
method).
int edgeCount()
edges
method).
ExtendedListIterable<Edge> edges()
ExtendedListIterable
over all edges of this graph.
ExtendedListIterable<Node> nodes()
ExtendedListIterable
over all nodes of this graph.
ExtendedListIterable<Edge> edges(Node node)
ExtendedListIterable
over all
edges that contain the specified node. This is equivalent to edges(node, Direction.EITHER)
node
- the node that all the returned edges must contain
java.lang.IllegalArgumentException
- when !containsNode(node)ExtendedListIterable<Edge> edges(Node node, Direction direction)
ExtendedListIterable
over all
edges that contain the specified node at the specified direction. That is, return every edge e,
when direction is:
Direction.OUT
, such that e.n1() == node
Direction.IN
, such that e.n2() == node
Direction.EITHER
, such that e.isIncident(node)
node
- the node that all the returned edges must containdirection
- specifies the direction of the returned edge, relatively to the specified node
java.lang.IllegalArgumentException
- when !containsNode(node)
gr.forth.ics.util.NullArgumentException
- when direction is nullExtendedListIterable<Edge> edges(Node n1, Node n2)
ExtendedListIterable
over all
edges that connect the specified nodes, in either direction. This is equivalent to
edges(n1, n2, Direction.EITHER)
.
java.lang.IllegalArgumentException
- when !containsNode(n1) or !containsNode(n2)ExtendedListIterable<Edge> edges(Node n1, Node n2, Direction direction)
ExtendedListIterable
over all
edges that connect the specified nodes, in the specified direction. That is, return every
edge e, when direction is:
Direction.OUT
, such that e.n1() == n1 && e.n2() == n2
Direction.IN
, such that e.n2() == n1 && e.n1() == n2
Direction.EITHER
, such that e.isIncident(n1) && e.isIncident(n2)
java.lang.IllegalArgumentException
- when !containsNode(n1) or !containsNode(n2)
gr.forth.ics.util.NullArgumentException
- when direction is nullExtendedListIterable<Node> adjacentNodes(Node node)
ExtendedListIterable
over all
nodes that are neighbors with the specified node. Two nodes are "neighbors" if there exists
an edge connecting the two. Actually, for every incident edge, a neighbor is reported, so in
the case of parallel edges, neighbors are reported multiple times.
This is equivalent to adjacentNodes(node, Direction.EITHER)
java.lang.IllegalArgumentException
- when !containsNode(node)adjacentNodes(Node, Direction)
ExtendedListIterable<Node> adjacentNodes(Node node, Direction direction)
ExtendedListIterable
over all
nodes that are neighbors with the specified node, in the specified direction.
Two nodes are "neighbors" if there exists an edge connecting the two. Actually, for
every incident edge, a neighbor is reported, so in the case of parallel edges,
neighbors are reported multiple times.
See edges(Node, Direction)
method for the semantics of
the Direction parameter.
node
- the node of which the neighbors are returneddirection
- the direction in which to seek neighbors
java.lang.IllegalArgumentException
- when !containsNode(node)
gr.forth.ics.util.NullArgumentException
- when direction is nullboolean areAdjacent(Node n1, Node n2)
areAdjacent(n1, n2, Direction.EITHER)
java.lang.IllegalArgumentException
- when !containsNode(n1) or !containsNode(n2)areAdjacent(Node, Node, Direction)
boolean areAdjacent(Node n1, Node n2, Direction direction)
Direction.OUT
, e.n1() == n1 && e.n2() == n2
Direction.IN
, e.n2() == n1 && e.n1() == n2
Direction.EITHER
, e.isIncident(n1) && e.isIncident(n2)
java.lang.IllegalArgumentException
- when !containsNode(n1) or !containsNode(n2)
gr.forth.ics.util.NullArgumentException
- when direction is nullareAdjacent(Node, Node, Direction)
Edge anEdge()
java.util.NoSuchElementException
- when edgeCount() == 0edges()
Edge anEdge(Node node)
gr.forth.ics.util.NullArgumentException
- when node is null
java.util.NoSuchElementException
- when no such edge existsedges(Node)
Edge anEdge(Node node, Direction direction)
java.lang.IllegalArgumentException
- when !containsNode(node)
gr.forth.ics.util.NullArgumentException
- when direction is null
java.util.NoSuchElementException
- when no such edge existsedges(Node, Direction)
Edge anEdge(Node n1, Node n2)
java.lang.IllegalArgumentException
- when !containsNode(n1) or !containsNode(n2)
java.util.NoSuchElementException
- when no such edge existsedges(Node, Node)
Edge anEdge(Node n1, Node n2, Direction direction)
java.lang.IllegalArgumentException
- when !containsNode(n1) or !containsNode(n2)
gr.forth.ics.util.NullArgumentException
- when direction is null
java.util.NoSuchElementException
- when no such edge existsedges(Node, Node, Direction)
Node aNode()
java.util.NoSuchElementException
- when nodeCount() == 0nodes()
Node aNode(Node neighbor)
java.lang.IllegalArgumentException
- when !containsNode(node)
java.util.NoSuchElementException
- when no such node existsadjacentNodes(Node)
Node aNode(Node neighbor, Direction direction)
java.lang.IllegalArgumentException
- when !containsNode(node)
gr.forth.ics.util.NullArgumentException
- when direction is null
java.util.NoSuchElementException
- when no such node existsadjacentNodes(Node, Direction)
boolean containsEdge(Edge edge)
boolean containsNode(Node node)
int inDegree(Node node)
java.lang.IllegalArgumentException
- when !containsNode(node)int outDegree(Node node)
java.lang.IllegalArgumentException
- when !containsNode(node)int degree(Node node)
java.lang.IllegalArgumentException
- when !containsNode(node)int degree(Node node, Direction direction)
Direction.OUT
: equivalent to outDegree(node)Direction.IN
: equivalent to inDegree(node)Direction.EITHER
: equivalent to degree(node)
java.lang.IllegalArgumentException
- when !containsNode(node)
NullArgumentException
- when direction == nullvoid addGraphListener(GraphListener listener)
GraphListener
void removeGraphListener(GraphListener listener)
GraphListener
void addNodeListener(NodeListener listener)
NodeListener
void removeNodeListener(NodeListener listener)
NodeListener
void addEdgeListener(EdgeListener listener)
EdgeListener
void removeEdgeListener(EdgeListener listener)
EdgeListener
java.util.List<NodeListener> getNodeListeners()
NodeListener
,
GraphListener
java.util.List<EdgeListener> getEdgeListeners()
EdgeListener
,
GraphListener
Tuple tuple()
void hint(Hint hint)
Hint
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


Agitprop leaflets were airdropped over the backdrop of a political rally to raise awareness and encourage people to participate. [G|D]
As he approached the outcrop, he stopped and crouched down, listening to the conversation taking place and trying to eavesdrop on the croppers discussing their yield. [G|D]
A single snowdropprop was placed outside to celebrate the return of Spring, its delicate petals glistening in the light of the sun amidst the raindrops. [G|D]
With a thunderous roar, the turboprop aircraft flew majestically past, the sun reflecting off its glossy fuselage like teardrops, shining brilliantly against the strop of blue sky. [G|D]


4.0.1
A storage framework for Nxus applications using waterline.
"config": {
"storage": {
"adapters": {
"default": "sails-mongo"
},
"connections": {
"default": {
"adapter": "default",
"url": "mongodb://...."
}
},
}
}
You define models by extending a base model class: BaseModel is a general-purpose base class; GeoModel is a base class for models containing a GeoJSON attribute. You can also define your own base class by extending BaseModel or GeoModel.
(The PointModel base class, for models containing a GeoJSON coordinate point attribute, is deprecated; use GeoModel instead.)
HasModels is a base class for nxus modules that define or use
models. It automatically registers all model definitions contained in
the module ./models
subdirectory. It makes model definitions
available through its HasModels#models property, which you
can configure to load models defined by your module or other modules.
The Storage model() and modelDir() methods let you explicitly register model definitions, and you can use getModel() to load definitions. However, these methods are rarely used, since using the HasModels base class is typically more concise and convenient.
The storage model emits events for create, update, and destroy. You can register a handler for all events:
storage.on('model.create', (identity, record) => {})
storage.on('model.update', (identity, record) => {})
storage.on('model.destroy', (identity, record) => {})
Or just a specific model identity:
storage.on('model.create.user', (identity, record) => {})
storage.on('model.update.user', (identity, record) => {})
storage.on('model.destroy.user', (identity, record) => {})
load
load
, e.g.
var User = BaseModel.extend({
identity: 'user',
...
});
application.get('storage').model(User)startup
The configured database is connected during load.after
You can query models from startup
and beyond, retrieve the model by the 'identity':
application.get('storage').getModel('user').then((User) => {
User.create(...);
});
Storage provides a common interface for defining models. Uses the Waterline ORM.
Extends NxusModule
Base class for nxus modules that define or use models.
It automatically registers all model definitions contained in
the module ./models
subdirectory. It makes model definitions
available through its #HasModels#models property, which you
can configure to load models defined by your module or other modules.
Extends NxusModule
(Object
= {}
)
Configuration options.
| Name | Description |
|---|---|
options.modelNames (Object | Array)
(default null )
|
Model definitions to load.
If specified as an object, each object property specifies a
model
–
its key is a model identity (the model's
identity
property), and its value is used as the model's
name in
HasModels#models
. If specified as an array,
each array element specifies a model
–
the element
string serves as both model identity and name.
|
Override to define the model names to access.
modelNames
option to specify names of models to be made available in the
this.models
property.
(Array | Object)
:
Model identities to add to
this.models
, or object of {identity: name}
modelNames() {
return ['user']
}
Base class for Waterline model definitions.
It extends the Waterline.Collection
to make it less awkward to use
and better adapted to the nxus environment.
It provides an extend() method that is
better-behaved than the Waterline extend()
method.
It emits create, update, and destroy events for model instances. The model identity and record are passed as parameters to the handler. You can register to be notified of all events of a specified type, or restrict notifications to a specific model by specifying its identity as a suffix to the event type:
model.create
, model.create.
identity
- emitted after createmodel.update
, model.update.
identity
- emitted after updatemodel.destroy
, model.destroy.
identity
- emitted after destroyUse the extend()
method to create a Waterline model based on
BaseModel
. For example:
import {BaseModel} from 'nxus-storage'
const MyModel = BaseModel.extend({
identity: 'my-model',
attributes: {
name: 'string'
}
})
Extends Waterline.Collection
Name of the database connection for the model.
Connections are defined in the storage configuration settings.
The default connection is default
; override to select another
configuration.
Gets a display name for the record.
Provides a consistent way to obtain a display name. The default
definition examines the record's id
, createdAt
, and
updatedAt
attributes, returning the first that has a string
value. Override the default definition to provide a more useful
display name.
string
:
display name
Base class for Waterline models containing a GeoJSON geographic attribute.
It provides methods for performing geo queries on the GeoJSON
attribute – findWithin()
selects records that lie within
specified coordinates, and findIntersects()
selects records that
intersect.
To implement the geo queries, the GeoJSON data must be indexed. And because the MongoDB 2dsphere index can handle only GeoJSON geometry features, the index is applied to a derived features attribute that contains just the geometry features from the primary GeoJSON attribute.
The GeoModel
provides the machinery for keeping the features
attribute synchronized with the primary GeoJSON attribute. It also
attempts to ensure the features attribute is well-formed and has a
consistent organization. For Polygon objects, it discards duplicate
points, closes open paths and ensures clockwise winding order. It
combines Geometry objects so there is at most one of each geometry
type: Polygon/MultiPolygon, Point/MultiPoint and
LineString/MultiLineString.
The createGeoIndex()
method should be invoked to ensure the index
is created. Typically, you do this after the startup lifecycle phase.
Configuration is through these model properties:
geometryField
(string) - Name of the primary GeoJSON attribute (default is geo
).geometryFeatureField
(string) - Name of the geometry features attribute (default is geoFeatures
).
Both of these attributes must also be defined as model attributes with
type json
.Use the extend()
method to create a Waterline model based on
GeoModel
. For example:
import {GeoModel} from 'nxus-storage'
const MyGeo = GeoModel.extend({
identity: 'my-geo',
attributes: {
...
location: 'json',
locationFeatures: 'json'
},
geometryField: 'location',
geometryFeaturesField: 'locationFeatures'
})
Extends BaseModel
Ensures index is defined for geographic attribute.
(Actually, on the attribute specified by geometryFeatureField
.)
Promise
:
A promise that resolves or rejects when index
creation completes. It's worthwhile attaching a
.catch()
clause to this promise to log errors; index creation can fail
for a variety of reasons, including invalid data in the
geometry feature attribute.
Finds records within specified geographic coordinates.
The method goes through some odd gyrations in order to mesh the MongoDB geographic query with Waterline query handling.
First, it indirectly returns a Waterline query, by returning a
promise that resolves to a function that evaluates to the query.
This due to the fact that the query has promise semantics.
Returning it indirectly defers evaluation, allowing you to refine
it (using the chainable methods such as .populate(),
.where(), and
.sort()`) before evaluating it.
Second, it actually evaluates the MongoDB geographic query to produce a list of matching record ids, and the returned Waterline query is a second query based on these ids. Again, this to allow you to refine the query before evaluation. Be aware that this won't scale well to huge record sets, but should work for any of moderate size.
(Object)
A GeoJSON geometry object
specifying the geographic region to select; it must be of type
Polygon
or
MultiPolygon
.
Promise
:
A promise that resolves to a function that
returns a Waterline query for the specified coordinates.
```
model.findWithin({ 'type': 'Polygon', 'coordinates': ... }).then((query) => {
return query().where(...).populate(...)
}).then((records) => {
...
})
```
Finds records intersecting specified geographic coordinates.
(Object)
A GeoJSON geometry object
specifying the geographic region to select.
Promise
:
A promise that resolves to a function that
returns a Waterline query for the specified coordinates. See
findWithin()
for further explanation.
Gets GeoJSON geometry object from the GeoJSON geographic attribute.
Typical use is to extract Polygon
geometry objects for use as
coordinates for the findWithin()
or findIntersects()
methods.
Object
:
GeoJSON geometry object; undefined if no
matching geometry objects were present
Base collection for Waterline models containing a GeoJSON coordinate point attribute.
Extends BaseModel


My PSI PPL page
The PSI PPL (probabilistic programming language) system is found at psisolver.org and github.com/eth-sri/psi.
My PSI PPL models
Note: some of these models are not very good...
Back to my homepage
Created by Hakan Kjellerstrand (hakank@gmail.com)


Mobile as platform which connects our product via Bluetooth to discover & learn new things in a new world.
New device lets you express the intelligent interactions, which responds to peoples value & increase sensing capabilities.
New approach to think & deliver communications between humans and machines on Interactive designs.
Founder,UI/UX Designer
Designer with a dreaming eye, passionate about designs and white is my most expensive art.
Co-founder,Developer
<code> is my dual name, would you like to talk beyond this.
Co-founder,Architect
I discover and program the solution for present by keeping an eye on future.
Marketing and Sales
"The most expensive signature" would you be interested in signing from this pen?
2018 © Sensvio Inc


See: Description
| Interface | Description |
|---|---|
| EnterpriseBean | |
| EnterpriseBeanFoo | |
| RpcBean |
| Class | Description |
|---|---|
| AbstractClusteringType |
Java class for abstract-clusteringType complex type.
|
| AbstractNamingEntryType |
Java class for abstract-naming-entryType complex type.
|
| AbstractSecurityType |
Java class for abstract-securityType complex type.
|
| AbstractServiceType |
Java class for abstract-serviceType complex type.
|
| ActivationConfigPropertyType |
Java class for activation-config-propertyType complex type.
|
| ActivationConfigType |
Java class for activation-configType complex type.
|
| ApplicationType |
Java class for applicationType complex type.
|
| ArtifactType |
Refers to either another module running in the server, or
an entry in the server's Repository.
|
| AttributeType |
Java class for attributeType complex type.
|
| AutoIncrementTableType |
Handles the case where an arbitrary SQL statement is executed,
and the JDBC driver returns a new automatically generated ID.
|
| ClassFilterType |
Java class for classFilterType complex type.
|
| CmpFieldGroupMappingType |
Java class for cmp-field-group-mappingType complex type.
|
| CmrFieldGroupMappingType |
Java class for cmr-field-group-mappingType complex type.
|
| CustomGeneratorType |
Handles a user-provided generator.
|
| DatabaseGeneratedType |
Indicates that the database automatically populates a primary key
ID in the listed column(s).
|
| DependenciesType |
Java class for dependenciesType complex type.
|
| DependencyType |
Java class for dependencyType complex type.
|
| DepPatternType |
Java class for patternType complex type.
|
| EjbLocalRefType |
Java class for ejb-local-refType complex type.
|
| EjbRefType |
Java class for ejb-refType complex type.
|
| EjbRelationshipRoleType |
Java class for ejb-relationship-roleType complex type.
|
| EjbRelationshipRoleType.CmrField |
Java class for anonymous complex type.
|
| EjbRelationshipRoleType.RelationshipRoleSource |
Java class for anonymous complex type.
|
| EjbRelationshipRoleType.RoleMapping |
Java class for anonymous complex type.
|
| EjbRelationshipRoleType.RoleMapping.CmrFieldMapping |
Java class for anonymous complex type.
|
| EjbRelationType |
Java class for ejb-relationType complex type.
|
| EmptyType |
Java class for emptyType complex type.
|
| EntityBeanType |
Java class for entity-beanType complex type.
|
| EntityBeanType.Cache |
Java class for anonymous complex type.
|
| EntityBeanType.CmpFieldMapping |
Java class for anonymous complex type.
|
| EntityBeanType.PrefetchGroup |
Java class for anonymous complex type.
|
| EntityGroupMappingType |
Java class for entity-group-mappingType complex type.
|
| EnvironmentType |
Java class for environmentType complex type.
|
| ExtModuleType |
Mirrors the moduleType defined by application_1_4.xsd and adds an
optional alt-dd element defining a Geronimo specific deployment descriptor.
|
| GbeanLocatorType |
Java class for gbean-locatorType complex type.
|
| GbeanRefType |
Java class for gbean-refType complex type.
|
| GbeanType |
Java class for gbeanType complex type.
|
| GeronimoEjbJarType |
Java class for geronimo-ejb-jarType complex type.
|
| GroupType |
Java class for groupType complex type.
|
| GroupType.CmrField |
Java class for anonymous complex type.
|
| JaxbOpenejbJar2 | |
| Jndi | |
| KeyGeneratorType |
Primary Key generation element.
|
| MessageDestinationType |
Java class for message-destinationType complex type.
|
| MessageDrivenBeanType |
Java class for message-driven-beanType complex type.
|
| ModuleType |
Mirrors the moduleType defined by application_1_4.xsd and adds an
optional alt-dd element defining a Geronimo specific deployment descriptor.
|
| NamespaceFilter | |
| ObjectFactory |
This object contains factory methods for each
Java content interface and Java element interface
generated in the org.apache.openejb.jee.oej2 package.
|
| OpenejbClusteringWadiType |
Java class for openejb-clustering-wadiType complex type.
|
| OpenejbJarType |
Java class for openejb-jarType complex type.
|
| PatternType |
Java class for patternType complex type.
|
| PersistenceContextRefType |
Java class for persistence-context-refType complex type.
|
| PersistenceUnitRefType | |
| PortCompletionType |
Java class for port-completionType complex type.
|
| PortType |
Java class for portType complex type.
|
| PropertyType |
Java class for propertyType complex type.
|
| QueryType |
Java class for queryType complex type.
|
| QueryType.QueryMethod |
Java class for anonymous complex type.
|
| QueryType.QueryMethod.MethodParams |
Java class for anonymous complex type.
|
| ReferencesType |
Java class for referencesType complex type.
|
| ReferenceType |
Java class for referenceType complex type.
|
| ResourceEnvRefType |
Java class for resource-env-refType complex type.
|
| ResourceLocatorType |
Java class for resource-locatorType complex type.
|
| ResourceRefType |
Java class for resource-refType complex type.
|
| SecurityType | |
| SequenceTableType |
Indicates that a separate table holds a list of table name/ID
pairs and the server should fetch the next ID from that table.
|
| ServiceCompletionType |
Java class for service-completionType complex type.
|
| ServiceModuleType |
Java class for serviceModuleType complex type.
|
| ServiceRefType |
Java class for service-refType complex type.
|
| SessionBeanType |
Java class for session-beanType complex type.
|
| SqlGeneratorType |
Indicates that an arbitrary SQL statement should be used to
generate the next ID.
|
| TssLinkType | |
| WebServiceBindingType | |
| WebServiceBindingType.WebServiceSecurityType | |
| WebServiceSecurityType |
Java class for web-service-securityType complex type.
|
| XmlAttributeType |
Java class for xml-attributeType complex type.
|
| Enum | Description |
|---|---|
| AuthMethodType |
Java class for auth-methodType.
|
| ImportType |
Java class for importType.
|
| PersistenceContextTypeType |
Java class for persistence-context-typeType.
|
| TransportGuaranteeType |
Java class for transport-guaranteeType.
|


Source Code
GitHub:
License
nativeDroid2 is distributed under the MIT-License
Components
nativeDroid2 benefits from the following external libraries:
fontawesome (v4.3.0)
Webfont icons licensed under
SIL OFL 1.1
Waves
Nice ripple-effect created by
Alfiana Sibuea
and released under
MIT license
.
flexboxgrid
Grid System by Kristofer Joseph licensed under the
Apache License, Version 2.0
.
material-design-iconic-font
Wonderful Material Design Iconset -
License Detail
animate.css
Animate.css is licensed under the
MIT license
.


Hspec's expectation language is built on top of
HUnit, hence it is possible to use
HUnit assertions instead. E.g. shouldBe is just another name for HUnit's
@?=. You can use whatever you prefer and it will work
seamlessly.
Example code:
runhaskell Spec.hs
reverse
reverses a list [✔]
Finished in 0.0005 seconds
1 example, 0 failures
Running a HUnit test suite with Hspec
fromHUnitTest from the
hspec-contrib package can
be used to convert a HUnit test suite to a Spec. This can be used to run
existing HUnit tests with Hspec. Ordinary spec items and HUnit tests can be
freely intermixed.
Example code:
runhaskell Spec.hs
some ordinary spec items
returns the first element of a list [✔]
some legacy HUnit tests
test_read_is_inverse_to_show [✔]
test_23_is_equal_to_42 [✘]
Failures:
Spec.hs:29:6:
1) some legacy HUnit tests test_23_is_equal_to_42
expected: 42 but got: 23
To rerun use: --match "/some legacy HUnit tests/test_23_is_equal_to_42/"
Randomized with seed 921447365
Finished in 0.0005 seconds
3 examples, 1 failure


Projects
EpiMobile: Pathogen Point of Care Diagnosis and Global Surveillance using Mobile Devices (Paper, Code, Talk)
Areas: Bioinformatics, Distributed Systems, Healthcare Information Systems
Rapid identification of disease causing infectious agents (pathogens) in patient samples is important to mount effective responses to potential, or ongoing, disease outbreaks. New advances in genomic sequencing technologies are enabling more effective point-of-care diagnosis – where patient samples can be analyzed for the detection of pathogen DNA. However, it has yet to be understood how these technologies can be applied in the field and under resource constraints that hinder cloud access for computation.
Here we present EpiMobile, a conceptual model and minimal viable product (MVP) implementation of a genomics point-of-care workflow using mobile devices. EpiMobile enables analyses of genomic data harvested by a portable genome sequencer and the distribution of analysis results to local clinical or healthcare teams as well as national, or global, public health agencies, whilst considering computational processing and Internet connectivity resource constraints.
Our evaluation of EpiMobile indicates that it has a minimal resource consumption footprint and is accurate when run of a dataset with known outcomes. However, we emphasize that the conceptual and exploratory nature of our work affects to what extent our results would map to real world settings. We discuss the utility of EpiMobile through a set of usage scenarios currently supported by our MVP implementation. We believe that our work provides an interesting overview of an exciting and emerging healthcare application context as well as proposing an interesting implementation of genomics point-of-care.
Cross-Compatibility Checker (Paper, Code, Talk)
Areas: Software Engineering, Web Development
Web browsers are built by different organizations and writing software that runs smoothly on all existing browsers is a challenging task. Due to the pace that browsers implement or adopt certain web features, users' experience may be hindered by visual and functional incompatibilities due to unsupported or non-standard features in a given browser.
In order to address the detection of cross-browser incompatibilities in early stages of web development, we propose XCompatibility-Checker a lightweight tool that automates the identification of features that are not supported by different browsers. The tool’s evaluation was twofold (i) it was able to detect cross-browser incompatibilities in 38 open source web applications; as well as (ii) a user study and qualitative survey indicates that the tool improves developers' awareness and ability to detect cross-browser incompatibilities.
Therefore, our proposed tool helps web developers improve the quality of their web applications.
Salvador: A Decentralized, Secure Backup System (Paper, Talk)
Areas: Distributed Systems
Many modern systems that offer file backup and sharing rely on distributed storage in order to achieve load balancing, fault-tolerance, and scalability. Systems like Dropbox provide a form of interaction that resembles a client-server from the user’s perspective while leveraging a Cloud-based architecture and that is highly distributed. Dropbox is a file hosting service that enables users to store and share personal data with semantics similar to those of a local file system while storing the data across many geographically distributed servers.
Other systems adopt a P2P architecture, such as pStore and the Cooperative File System (CFS). pStore is a secure, distributed backup system that leverages unused disk space that offers features such as encryption and sharing and CFS is a read-only storage system. In this work we present Salvador, a system that draws inspiration from many of the systems mentioned.
Salvador does not offer file sharing capabilities, which means that the only user with access to the entire file and allowed to backup or restore that file is its owner and creator of that file. At the same time, the semantics of Salvador are similar to that of Dropbox in the sense that users can easily create, edit, or delete files on their computer while being able to recover such files by collecting its parts from peers and reconstructing the file locally.
TDWiki - The Technical Debt Wiki (Paper)
Areas: Software Engineering, Technical Debt
TDWiki is a collaborative computational infrastructure for supporting technical debt knowledge sharing and evolution. It was built to be an autonomous system to extract data about researches being made on Technical Debt field and provide Intelligence over this data and visualizations of this information, also it has a social/collaborative aspect, where Researchers/Engineers/Managers can help to grow the knowledge


Robin
We did it! You found the exit! Remember the following line, it’s proof that you actually found the key:
“A closed door is seldomly an invitation”
Now you can go and make yourself a cup of coffee until we move on with the rest of the program, or you can explore the escape room to see if you can find any of the easter eggs


Endpoint can be easily protected with a custom or existing backend. Authentication and Authorization are given as argument to the Controller. Authorization backend will be given the request object. You can then have a very fine grained control on Authorization.
Authentication implement the get_user(identifier) method. As Authentication need to read the list of users somewhere, it need a datastore to work with.
As always, datastore can be anything from a simple python list, a database, another api and so on.
Authentication return the user object the datastore provide
class ApiKeyAuthentication(Authentication):
def __init__(self, datastore, **options):
self.datastore = datastore
def get_user(self, identifier):
try:
user = self.datastore.get(identifier)
return user
except NotFound:
return None
Authorization need a way to indentify a user. An Authentication backend is used for this need.
They implements the check_auth(request) method. This method should return None if authorization is granted or raise an Unauthorized error otherwise.
Note
this documentation use “user” as a placeholder. You do not need a user. Only something to identify the request. This could be anything from a hash, a password, public key and so on...
class ApiKeyAuthorization(Authorization):
"""
This authentication backend use an api key to authenticate and
authorize users
"""
def __init__(self, authentication, **options):
self.authentication = authentication
def check_auth(self, request):
"""
Check if a user is authorized to perform a particular action.
"""
data = request.values.to_dict()
if "apikey" in data:
if self.authentication.get_user(data['apikey']):
return
else:
raise Unauthorized
raise Unauthorized
For this example we will use a very simple datastore ressource for authentication purpose :
ressources = [{"id": "azerty"}]
The ressource is a python dict. Is ok to use the PythonListDataStore to connect to the ressource.
The model will be simple too:
class AuthModel(models.Model):
fields = [
models.StringField(name="id", required=True)
]
Then here is our datastore fully functional:
datastore = PythonListDataStore(ressources, AuthModel)
Then we can instanciate an ApiKeyAuthentication :
authentication = ApiKeyAuthentication(datastore)
Finnaly, ApiKeyAuthorization can be instanciated too:
auth = ApiKeyAuthorization
You can now use any of your api and protect it with the ApiKeyAuthorization you just created:
class ApiAppAuth(Controller):
controller = {
"options": {"authentication": auth,
"authorization": ApiKeyAuthorization
}
}
<other arguments>...
Each time a user access this api, he must use ?apikey=azerty to be granted access to the api.