pydrake.manipulation.planner¶
Tools for manipulation planning.
-
class
pydrake.manipulation.planner.
DifferentialInverseKinematicsParameters
¶ Contains parameters for differential inverse kinematics.
-
__init__
(self: pydrake.manipulation.planner.DifferentialInverseKinematicsParameters, num_positions: int = 0, num_velocities: int = 0) → None¶ Constructor. Initializes the nominal joint position to zeros of size
num_positions
. Timestep is initialized to 1. The end effector gains are initialized to ones. All constraints are initialized to nullopt.- Parameter
num_positions
: - Number of generalized positions.
- Parameter
num_velocities
: - Number of generalized velocities.
- Parameter
-
get_end_effector_velocity_gain
(self: pydrake.manipulation.planner.DifferentialInverseKinematicsParameters) → numpy.ndarray[numpy.float64[6, 1]]¶
-
get_joint_acceleration_limits
(self: pydrake.manipulation.planner.DifferentialInverseKinematicsParameters) → Optional[Tuple[numpy.ndarray[numpy.float64[m, 1]], numpy.ndarray[numpy.float64[m, 1]]]]¶
-
get_joint_position_limits
(self: pydrake.manipulation.planner.DifferentialInverseKinematicsParameters) → Optional[Tuple[numpy.ndarray[numpy.float64[m, 1]], numpy.ndarray[numpy.float64[m, 1]]]]¶
-
get_joint_velocity_limits
(self: pydrake.manipulation.planner.DifferentialInverseKinematicsParameters) → Optional[Tuple[numpy.ndarray[numpy.float64[m, 1]], numpy.ndarray[numpy.float64[m, 1]]]]¶
-
get_nominal_joint_position
(self: pydrake.manipulation.planner.DifferentialInverseKinematicsParameters) → numpy.ndarray[numpy.float64[m, 1]]¶
-
get_num_positions
(self: pydrake.manipulation.planner.DifferentialInverseKinematicsParameters) → int¶
-
get_num_velocities
(self: pydrake.manipulation.planner.DifferentialInverseKinematicsParameters) → int¶
-
get_timestep
(self: pydrake.manipulation.planner.DifferentialInverseKinematicsParameters) → float¶ @name Getters.
-
get_unconstrained_degrees_of_freedom_velocity_limit
(self: pydrake.manipulation.planner.DifferentialInverseKinematicsParameters) → Optional[float]¶
-
set_end_effector_velocity_gain
(self: pydrake.manipulation.planner.DifferentialInverseKinematicsParameters, arg0: numpy.ndarray[numpy.float64[6, 1]]) → None¶ Sets the end effector gains in the body frame. Gains can be used to specify relative importance among different dimensions.
Raises: - RuntimeError if any element of
gain_E
is larger than 1 or - smaller than 0.
- RuntimeError if any element of
-
set_joint_acceleration_limits
(self: pydrake.manipulation.planner.DifferentialInverseKinematicsParameters, arg0: Tuple[numpy.ndarray[numpy.float64[m, 1]], numpy.ndarray[numpy.float64[m, 1]]]) → None¶ Sets the joint acceleration limits.
- Parameter
q_bounds
: - The first element is the lower bound, and the second is the upper bound.
Raises: - RuntimeError if the first or second element of
q_bounds
has - the wrong dimension or any element of the second element is
- smaller than its corresponding part in the first element.
- Parameter
-
set_joint_position_limits
(self: pydrake.manipulation.planner.DifferentialInverseKinematicsParameters, arg0: Tuple[numpy.ndarray[numpy.float64[m, 1]], numpy.ndarray[numpy.float64[m, 1]]]) → None¶ Sets the joint position limits.
- Parameter
q_bounds
: - The first element is the lower bound, and the second is the upper bound.
Raises: - RuntimeError if the first or second element of
q_bounds
has - the wrong dimension or any element of the second element is
- smaller than its corresponding part in the first element.
- Parameter
-
set_joint_velocity_limits
(self: pydrake.manipulation.planner.DifferentialInverseKinematicsParameters, arg0: Tuple[numpy.ndarray[numpy.float64[m, 1]], numpy.ndarray[numpy.float64[m, 1]]]) → None¶ Sets the joint velocity limits.
- Parameter
q_bounds
: - The first element is the lower bound, and the second is the upper bound.
Raises: - RuntimeError if the first or second element of
q_bounds
has - the wrong dimension or any element of the second element is
- smaller than its corresponding part in the first element.
- Parameter
-
set_nominal_joint_position
(self: pydrake.manipulation.planner.DifferentialInverseKinematicsParameters, arg0: numpy.ndarray[numpy.float64[m, 1]]) → None¶ Sets the nominal joint position.
Raises: RuntimeError if nominal_joint_position
’s dimension differs.
-
set_timestep
(self: pydrake.manipulation.planner.DifferentialInverseKinematicsParameters, arg0: float) → None¶ @name Setters. Sets timestep to
dt
.Raises: RuntimeError if dt <= 0.
-
set_unconstrained_degrees_of_freedom_velocity_limit
(self: pydrake.manipulation.planner.DifferentialInverseKinematicsParameters, arg0: float) → None¶ Sets the max magnitude of the velocity in the unconstrained degree of freedom to
limit
.Raises: RuntimeError if limit < 0.
-
-
class
pydrake.manipulation.planner.
DifferentialInverseKinematicsResult
¶ -
__init__
(self: pydrake.manipulation.planner.DifferentialInverseKinematicsResult, **kwargs) → None¶
-
joint_velocities
¶
-
status
¶
-
-
class
pydrake.manipulation.planner.
DifferentialInverseKinematicsStatus
¶ Members:
kSolutionFound : Found the optimal solution.
kNoSolutionFound : Solver unable to find a solution.
kStuck : Unable to follow the desired velocity direction
-
__init__
(self: pydrake.manipulation.planner.DifferentialInverseKinematicsStatus, arg0: int) → None¶
-
kNoSolutionFound
= DifferentialInverseKinematicsStatus.kNoSolutionFound¶
-
kSolutionFound
= DifferentialInverseKinematicsStatus.kSolutionFound¶
-
kStuck
= DifferentialInverseKinematicsStatus.kStuck¶
-
name
¶
-
-
pydrake.manipulation.planner.
DoDifferentialInverseKinematics
(*args, **kwargs)¶ Overloaded function.
- DoDifferentialInverseKinematics(q_current: numpy.ndarray[numpy.float64[m, 1]], v_current: numpy.ndarray[numpy.float64[m, 1]], V: numpy.ndarray[numpy.float64[m, 1]], J: numpy.ndarray[numpy.float64[m, n]], parameters: pydrake.manipulation.planner.DifferentialInverseKinematicsParameters) -> pydrake.manipulation.planner.DifferentialInverseKinematicsResult
Computes a generalized velocity v_next, via the following MathematicalProgram:
min_{v_next,alpha} 100 * | alpha - |V| |^2 // iff J.rows() < J.cols(), then + | q_current + v_next*dt - q_nominal |^2
s.t. J*v_next = alpha * V / |V| // J*v_next has the same direction as V joint_lim_min <= q_current + v_next*dt <= joint_lim_max joint_vel_lim_min <= v_next <= joint_vel_lim_max joint_accel_lim_min <= (v_next - v_current)/dt <= joint_accel_lim_max for all i > J.rows(), -unconstrained_vel_lim <= S.col(i)’ v_next <= unconstrained_vel_lim where J = UΣS’ is the SVD, with the singular values in decreasing order. Note that the constraint is imposed on each column independently.
and any additional linear constraints added via AddLinearVelocityConstraint() in the DifferentialInverseKinematicsParameters. where J.rows() == V.size() and J.cols() == v_current.size() == q_current.size() == v_next.size(). V can have any size, with each element representing a constraint on the solution (6 constraints specifying an end-effector pose is typical, but not required).
Intuitively, this finds a v_next such that J*v_next is in the same direction as V, and the difference between |V| and |J * v_next| is minimized while all constraints in
parameters
are satisfied as well. If the problem is redundant, a secondary objective to minimize |q_current + v_next * dt - q_nominal| is added to the problem.It is possible that the solver is unable to find such a generalized velocity while not violating the constraints, in which case, status will be set to kStuck in the returned DifferentialInverseKinematicsResult.
- Parameter
q_current
: - The current generalized position.
- Parameter
v_current
: - The current generalized position.
- Parameter
V
: - Desired spatial velocity. It must have the same number of rows as
J
. - Parameter
J
: - Jacobian with respect to generalized velocities v. It must have
the same number of rows as
V
. J * v need to represent the same spatial velocity asV
. - Parameter
parameters
: - Collection of various problem specific constraints and constants.
Returns: If the solver successfully finds a solution, joint_velocities will be set to v, otherwise it will be nullopt. - DoDifferentialInverseKinematics(robot: drake::multibody::MultibodyPlant<double>, context: pydrake.systems.framework.Context_[float], V_WE_desired: numpy.ndarray[numpy.float64[6, 1]], frame_E: drake::multibody::Frame<double>, parameters: pydrake.manipulation.planner.DifferentialInverseKinematicsParameters) -> pydrake.manipulation.planner.DifferentialInverseKinematicsResult
A wrapper over DoDifferentialInverseKinematics(q_current, v_current, V, J, params) that tracks frame E’s spatial velocity. q_current and v_current are taken from
context
. V is computed by first transformingV_WE
to V_WE_E, then taking the element-wise product between V_WE_E and the gains (specified in frame E) inparameters
, and only selecting the non zero elements. J is computed similarly.- Parameter
robot
: - A MultibodyPlant model.
- Parameter
context
: - Must be the Context of the MultibodyPlant. Contains the current generalized position and velocity.
- Parameter
V_WE_desired
: - Desired world frame spatial velocity of
frame_E
. - Parameter
frame_E
: - End effector frame.
- Parameter
parameters
: - Collection of various problem specific constraints and constants.
Returns: If the solver successfully finds a solution, joint_velocities will be set to v, otherwise it will be nullopt. - DoDifferentialInverseKinematics(robot: drake::multibody::MultibodyPlant<double>, context: pydrake.systems.framework.Context_[float], X_WE_desired: pydrake.common.eigen_geometry.Isometry3_[float], frame_E: drake::multibody::Frame<double>, parameters: pydrake.manipulation.planner.DifferentialInverseKinematicsParameters) -> pydrake.manipulation.planner.DifferentialInverseKinematicsResult
A wrapper over DoDifferentialInverseKinematics(robot, context, V_WE_desired, frame_E, params) that tracks frame E’s pose in the world frame. q_current and v_current are taken from
cache
. V_WE is computed by ComputePoseDiffInCommonFrame(X_WE, X_WE_desired) / dt, where X_WE is computed fromcontext
, and dt is taken fromparameters
.- Parameter
robot
: - A MultibodyPlant model.
- Parameter
context
: - Must be the Context of the MultibodyPlant. Contains the current generalized position and velocity.
- Parameter
X_WE_desired
: - Desired pose of
frame_E
in the world frame. - Parameter
frame_E
: - End effector frame.
- Parameter
parameters
: - Collection of various problem specific constraints and constants.
Returns: If the solver successfully finds a solution, joint_velocities will be set to v, otherwise it will be nullopt.


Total Product: 170
Available: 110
Inventory
Add Product
Product List
Notification
Logout
Sync
Tokopedia.com
Chocoglider
2
{{connected}}
×
Unable to connect to the internet!
Please check your internet connection and try again.


When you type your name you will see different variations in the number of characters, lowercase and uppercase text.


--- layout: default --- {{ page.title }} {{ content }} {%- if site.show_notes_graph -%}Here are all the notes in this garden, along with their links, visualized as a graph.{% include notes-graph.html %}{%- endif -%}
Here are all the notes in this garden, along with their links, visualized as a graph.


|
Simbody
3.6
|
Options for the handleEvent() method. More...
Public Types | |
| enum | Option { None = 0x0000, DontThrow = 0x0001, UseInfinityNorm = 0x0002 } |
Public Member Functions | |
| HandleEventsOptions () | |
| HandleEventsOptions (Real accuracy) | |
| HandleEventsOptions (Option opt) | |
| HandleEventsOptions & | clear () |
| Restore this object to its default-constructed state (no options selected, default accuracy). More... | |
| HandleEventsOptions & | setAccuracy (Real accuracy) |
| The norm of the constraint errors must be driven to below this value for a project() to be considered successful. More... | |
| HandleEventsOptions & | clearOption (Option opt) |
| Remove a given option from the set. More... | |
| HandleEventsOptions & | setOption (Option opt) |
| Select a given option from the set. More... | |
| Real | getAccuracy () const |
| Return the current value for the accuracy option. More... | |
| bool | isOptionSet (Option opt) const |
| HandleEventsOptions & | operator|= (const HandleEventsOptions &opts) |
| HandleEventsOptions & | operator &= (const HandleEventsOptions &opts) |
| HandleEventsOptions & | operator-= (const HandleEventsOptions &opts) |
| HandleEventsOptions & | operator|= (Option opt) |
| HandleEventsOptions & | operator-= (Option opt) |
Static Public Member Functions | |
| static Real | getDefaultAccuracy () |
Options for the handleEvent() method.
Accuracy should be be set by the caller, but if not the default is 1e-4.
|
inline |
|
inlineexplicit |
|
inlineexplicit |
|
inline |
Restore this object to its default-constructed state (no options selected, default accuracy).
A reference to the newly-cleared object is returned.
|
inline |
The norm of the constraint errors must be driven to below this value for a project() to be considered successful.
Normally an RMS norm is used but you can override that to use an infinity norm instead.
|
inline |
Remove a given option from the set.
Nothing happens if the option wasn't already set.
|
inline |
Select a given option from the set.
Nothing happens if the option wasn't already set.
|
inline |
Return the current value for the accuracy option.
|
inline |
|
inlinestatic |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |


We'll row together.
We hold ourselves highly accountable to clients and peers in every interaction because we believe that managing expectations fosters a positive and productive work environment.
Get StartedEvery member of the team is trained to be physically and mentally tough to weather the challenges we face every day. Our desire is to do things differently and we are confident that this is what sets us apart. We take a step forward and commit to solving problems by asking questions that give rise to unexplored answers and better solutions. We are strategic dreamers that see every interaction as an opportunity to create more opportunities for our customers, our clients, our colleagues, and our communities. We value close collaboration among our diverse set of talents with varying perspectives, and encourage respectful debate in pursuit of a common goal. Simply put, this is how we ROW.
Know More


I like designing experiences that inspire others. I'm passionate about technology & entrepreneurship for healthcare innovation and social good. Look at my resume, code, design, or experience below!
-Working on innovation team to build facial recognition software for retail.
-Currently building backend database system with Node.js and AWS Lambda and DynamoDB.
-Working on health innovation projects driven by technology.
-Interests in digital transformation, data analytics & visualization, and human-centered design.
Western University - Health Informatics Research
-Machine learning research to develop a predictive risk model for depression outcomes using Canada-wide database.
-Cleaned data and built final model with group of 300K+ individuals from an initial dataset of 1.2M primary care patients
-See my R code on Github! -Read my final paper here.
U.buk
U.buk aims to improve the efficiency of Toronto’s walk-in clinics by reducing patient wait times through an interactive, web-based platform.
It is a web application that allows patients to pre-book medical consultations based on published wait times and send their symptoms and contact data to a nearby walk-in clinic prior to arrival.
As the lead designer, my role included the presentation deck visuals, user research, and prototyping of our product screenshots to demonstrate U.buk's functionality.
U.buk received 3rd in the SpinMaster Business Plan competition and a Finalist award at the ship* startup festival.
U.buk aims to alleviate pain points in the patient walk-in clinic experience by:
-showing current wait times in nearby clinics within a 10km radius
-allowing patients to enter and submit medical information to facilities prior to visit
-notifying patients of the soonest estimated time a doctor will able to see them
A mobile-optimized experience allows patients to select an appropriate location and rapidly complete necessary paperwork prior to arrival at the appointment.
Our demonstration screenshots were based off of researching challenges millenials and families have in booking appointments.
Through a web application, clinics will be able to manage appointments, update wait times, analyze traffic flow, and submit billing information.
U.buk allows them to redirect resources into maximizing quality and efficiency in patient care; leveraging an online platform reduces receptionist calls, triaging, and paperwork.
WVA
Western Venture Association provides members with education and opportunities in private equity and venture capital while bridging the gap between business acumen and entrepreneurship.
We organize educationals, group discussions, and conferences that connect university students with private equity and venture capital firms to understand the role funding plays in new businesses.
My role as a marketing director includes designing marketing plans, managing email marketing and social media outlets, connecting with sponsors, and writing blogs about recent VC and PE news.
The following graphics are from our educational with Google and represent a shift in branding towards geometric form for a more exciting, bold approach to the VC industry.
These graphics are from our 2016-2017 flagship conference, the WVA Open. Open had over 200 students registered and partnered with Shopify, Ivey Business School, and several VC firms.
In addition to our main conference, we host monthly educationals and socials to educate our members about VC and PE.
Brightspark - Educational Tour Leader
-Led 15 inter-provincial tours for groups of 50 to 150 students, organizing logistics and delivering educational content.
-Awarded 4.5 out of 5 stars by clients, resulted in being sought out by management to lead additional tours.
-Delivered tours in Ottawa, Montreal, Quebec City, Toronto, Halifax, Moncton


{% extends "register/base.html" %} {% block content %}
A member registration confirmation email has been sent. Membership registration is not yet completed。
A confirmation email has been sent, so please complete the registration from the link provided in the confirmation email.


class: center, middle # Yesterday: * Test Review * Stock data analysis lab --- ## Data Analysis Review Exercise: Project: I am a stock investor who wants to buy into a new stock. Evaluate 5 stocks and come up with a few visualizations showing me what stock to pick. ### Requirements: * Work through the data analysis lifechycle. * Use alphavantage.co API to get stock data * Create several charts to show which stock will provide the best return on investment. * Render several stocks on the same chart with different colors, and a key indicating which color is which stock. * Suggested charts: price history over time, change in price over time, average change per year * Use either JS & D3 or Python & Matplotlib to generate your charts. --- ## Deliverables * Details of each of the steps in the data analysys lifecycle * Recommendation of which stock to invest in. * Create a web page detailing your recommentation, as well as embed your charts to support your recommendation. --- ## Today: * Finish up yesterday's data graphing lab * Tech stocks took a dive yesterday. * Run your graphs again and see if they look any different from yesterday morning. * Quick mapping lab * Pick a Pusher tutorial to base your software project on for tomorrow * Open study time for tomorrow's Exam. --- ## Mapping Review Exercise: Project: Look at Open Data Philly's data sets and find an interesting GeoJSON data set. Parse the GeoJSON file and render it in a leaflet map. * https://www.opendataphilly.org/organization/30e750ce-14ad-4403-9bf4-85a776a2bda8?res_format=geojson&page=1


@* * Copyright 2021 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import uk.gov.hmrc.eoricommoncomponent.frontend.config.AppConfig @this(appConfig: AppConfig) @(additionalContent: Option[Html] = None)(implicit messages: Messages, request: Request[_])
@additionalContent
@helpers.noMarginParagraph(messages("cds.if.you.need.help.telephone1")) @helpers.noMarginParagraph(messages("cds.if.you.need.help.telephone2"))
@helpers.noMarginParagraph(html = Some(link("cds.if.you.need.help.telephone.link", appConfig.callCharges, "_self")))


Maintenance
<% if (message) { %>
<%= message %>
<% } else { %>
We’re undergoing a bit of scheduled maintenance.
<% } %>
We’re sorry for the inconvenience this may cause.
We’ll be back up and running as fast as possible


"SHAALABBIN "or Shaal’bim, a place of foxes, a town of the tribe of Dan(Joshua 19:42; Judges 1:35). It was one of the chief towns from which Solomon drew his supplies (1 Kings 4:9). It is probably the modern village of Selbit, 3 miles north of Ajalon.
"SHAALABBIN "or Shaal’bim, a place of foxes, a town of the tribe of Dan(Joshua 19:42; Judges 1:35). It was one of the chief towns from which Solomon drew his supplies (1 Kings 4:9). It is probably the modern village of Selbit, 3 miles north of Ajalon.


Cloud Nano
DKK 1.999 / week
iOS device
Cloud Mini
DKK 2.999 / week
Windows + iOS device
Hybrid Regular
DKK 7.999 / week
Windows + Mac + iOS + Android devices. Local server & wifi
All comes with Office365 30 days trial, 2 virtual server (AD+Azure AD Connect)


CNIT 133 Homework 7 - Object Model and Event Model
CNIT 133 Homework 7 - Part 1
CSS Properies Changer
CNIT 133 Homework 7 - Part 2
Homework Navigation Bar Links
JavaScript & jQuery The
Missing
Manual
CSS Properies Changer
Homework Navigation Bar Links


Home
Rooms and suites
Resort facilities
Resort facilities
Resort Map
FAQs
Login |
Sign up
Check-in date
Check-out date
Room type
All or standard, superior, deluxe, suite
superior
deluxe
suite
Number of rooms
1
1
2
3
Filter by ...
Include breakfast ?
All
Yes
No
Non-smoking room?
All
Yes
No
Pay later ?
All
Yes
No
Standard
From SG$90
View more
Standard
From SG$90
View more
Standard
From SG$90
View more
Standard
From SG$90
View more
Standard
From SG$90
View more
Standard
From SG$90
View more


Preparation time
overnight
Cooking time
1 to 2 hours
Serves
Serves 4
Lamb neck is a cheaper cut which is usually slow cooked, but here José uses a marinade to tenderise the meat and serves it medium-rare.
For the lamb, mix all the ingredients, except the lamb, to make a paste. Rub all over the lamb and leave to marinate in the fridge for at least 12 hours.
When ready to cook, preheat the oven to 190C/170C Fan/Gas 5.
For the tomatoes, put the tomatoes on a baking tray with the garlic. Drizzle with lots of olive oil and season generously with salt and pepper. Roast for 45–60 minutes, or until the tomatoes are starting to caramelise.
Meanwhile for the potatoes, mix the potatoes, peppers, onion, garlic and bay leaf on a baking tray. Season with sea salt and plenty of black pepper. Pour over about 3 tablespoons olive oil and toss to coat the vegetables.
Roast on the top shelf of the oven for 15 minutes, then turn the vegetables over. Return to the oven and roast for another 15 minutes, or until the potatoes are golden-brown and the other vegetables are tender and nicely caramelised all over.
When the tomatoes are ready, heat a little olive oil in a saucepan and gently fry the shallot for 10 minutes. Tip in the roasted tomatoes. Squeeze the roasted garlic from their skins and add to the pan. Add the thyme and stock. Bring to the boil and simmer for 10 minutes.
Heat a large ovenproof frying pan over a medium heat. Add the lamb necks and fry until golden-brown on all sides (you don’t need any oil in the pan as this will come from the marinade). Transfer to the oven for 2–4 minutes, or until medium-rare. Set aside to rest for 2 minutes.
To serve, put the roasted potatoes and vegetables in the middle of warmed serving plates. Top with some of the tomatoes. Slice the lamb and arrange on top of the potatoes. Season with salt and pepper and drizzle with a little olive oil.


Hot Restaurant
Book Your Seat Before They're All Gone!
Bootstrap Example
Bootstrap Example
Button Menu
Plan Your Night
Make Reservation
View Tables


An initiative to serve BC citizens provided by the Ministry of Health, HealthBook BC leverages Hyperledger Indy open source blockchain technology.


Dobson on resting Kolisi: I'd be guided by him
Herman Mostert - Sport24
Cape Town - Stormers coach John Dobson has confirmed that Siya Kolisi will lead the team in next year's Super Rugby competition but stressed the importance of managing the Springbok captain carefully.
"Siya will be the skipper," Dobson told reporters at the Stormers' High Performance Centre in Bellville on Monday.
While the Stormers are hard at work preparing for next year's Super Rugby edition, Dobson said the World Cup-winning Springboks would only return sometime in December.
Dobson will give the returning Boks more time off after a gruelling week in which they toured the country on the Springboks' trophy parade
"It was going to be the second of December, with the exception of Pieter-Steph (du Toit - as per agreed in his contract), but the players have spent a week on a bus, so we may be pushing (their return) back a week or two," Dobson said.
Kolisi has become a superstar in the country and managing the Bok skipper would be paramount, Dobson stressed.
"He is the captain and he'll be the leader of the group but I shudder to think of the demands being made of him at the moment. We're going to have manage him."
Dobson said he would sit down with Kolisi to plot a way forward for the season ahead.
"I'd be guided by him. I think that's the right way of doing it. I don't want to be overly naïve... we have to get momentum early in this competition so there's less pressure on us when we go on tour. And maybe that's the window where we could give him a bit of a break."
In case of Kolisi getting a break, Dobson said he was impressed by the leadership abilities of another Springbok.
"Steven Kitshoff did a great job as captain this year," the coach stressed.
The Stormers also announced that their Super Rugby squad will be confirmed in due course, as will Dobson's management team.
The Cape franchise open their 2020 Super Rugby campaign at home against the Hurricanes at Newlands on Saturday, February 1.


---
layout: null
section-type: contact
title: Contact
---
## Contact
I am open for collaborations!
Drop me an email if you are interested in the area of news and social media research.
Jisun An
Scientist at Social Computing Team,
Qatar Computing Research Institute, Hamad Bin Khalifa University


COMPRESS
BZIP2 is a lossless data compression algorithm, it is available on a BSD based license.
It uses Burrows-Wheelers transform into Move To Front ending with Huffmans algorithm.
Similar to GZIP but slower. Has bigger compression rate in most cases.
Original BZIP2 was developed by Julian Seward and this implementation is not the original.


Home
Courses
Reviews
Contact
Sign Up
Learn Anything Online
Find Course
Web Dev
App Dev
Game Dev
Language
Learn More


Heap, Mavis Joan
| Birth Name | Heap, Mavis Joan |
| Gender | female |
| Age at Death | 61 years, 9 months, 26 days |
Narrative
SMH - INGLE, MAVIS JOAN - July 22, 1985, at hospital, late of Canley Vale, formally of Nth Ryde, dearly loved wife of George (dec), loved mother & grandmother of her family, aged 61 years.
FUNERAL - The rels & friends of the late MAVIS JOAN INGLE are invited to attend her funeral, to leave the Church of Jesus Christ of the Latter Day Saints, Ryde, tomorrow Thursday, 25 July,1985, after a service at 9am, for Northern Suburbs General Lawn Cemetery.
Mavis's daughter Jean helped me with a lot of the Gray family history.
Events
| Event | Date | Place | Description | Sources |
|---|---|---|---|---|
| Birth | 1923-09-26 | Marrickville NSW | ||
|
|
||||
| Death | 1985-07-22 | Canley Vale NSW | ||
|
|
||||
| Burial | 1985-07-25 | Nth Suburbs General Lawn Cemetery, Ryde NSW | ||
|
|
Parents
| Relation to main person | Name | Birth date | Death date | Relation within this family (if not by birth) |
|---|---|---|---|---|
| Father | Heap, Thomas John Ernest | 1890-09-25 | 1975-04-10 | |
| Mother | Gray, Elsie Vida | 1889-10-12 | 1933-01-09 | |
| Heap, Mavis Joan | 1923-09-26 | 1985-07-22 | ||
| Brother | Heap, [Living] |
Families
Family of Ingle, George Frederick and Heap, Mavis Joan |
||||||||||||||||||||||||||||||||||||||||||||
| Married | Husband | Ingle, George Frederick ( * 1911-05-07 + 1982-07-12 ) | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||
| Children |
| Name | Birth Date | Death Date |
|---|---|---|
| Ingle, [Living] | ||
| Ingle, [Living] | ||
| Ingle, John Frederick | 1944-08-03 | 1944-11-03 |
| Ingle, Robert George | 1945-10-13 | 1961-06-22 |
| Ingle, [Living] | ||
| Ingle, [Living] | ||
| Ingle, [Living] | ||
| Ingle, Edward Richard | 1951-07-14 | 1952-01-17 |
| Ingle, [Living] | ||
| Ingle, [Living] | ||
| Ingle, [Living] | ||
| Ingle, [Living] | ||
| Ingle, [Living] |
| Type | Value | Notes | Sources |
|---|---|---|---|
| _UID | 2DFFFA65E5C4D5119853B7EB0FA9CA6D96BF |
Attributes
| Type | Value | Notes | Sources |
|---|---|---|---|
| _UID | 2CFFFA65E5C4D5119853B7EB0FA9CA6D95AF |


Quickstart¶
Eager to get started? This page gives a good introduction in how to get started with Requests.
First, make sure that:
- Requests is installed
- Requests is up-to-date
Let’s get started with some simple examples.
Make a Request¶
Making a request with Requests is very simple.
Begin by importing the Requests module:
>>> import requests
Now, let’s try to get a webpage. For this example, let’s get GitHub’s public timeline:
>>> r = requests.get('https://api.github.com/events')
Now, we have a Response
object called r
. We can
get all the information we need from this object.
Requests’ simple API means that all forms of HTTP request are as obvious. For example, this is how you make an HTTP POST request:
>>> r = requests.post('https://httpbin.org/post', data = {'key':'value'})
Nice, right? What about the other HTTP request types: PUT, DELETE, HEAD and OPTIONS? These are all just as simple:
>>> r = requests.put('https://httpbin.org/put', data = {'key':'value'})
>>> r = requests.delete('https://httpbin.org/delete')
>>> r = requests.head('https://httpbin.org/get')
>>> r = requests.options('https://httpbin.org/get')
That’s all well and good, but it’s also only the start of what Requests can do.
Passing Parameters In URLs¶
You often want to send some sort of data in the URL’s query string. If
you were constructing the URL by hand, this data would be given as key/value
pairs in the URL after a question mark, e.g. httpbin.org/get?key=val
.
Requests allows you to provide these arguments as a dictionary of strings,
using the params
keyword argument. As an example, if you wanted to pass
key1=value1
and key2=value2
to httpbin.org/get
, you would use the
following code:
>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get('https://httpbin.org/get', params=payload)
You can see that the URL has been correctly encoded by printing the URL:
>>> print(r.url)
https://httpbin.org/get?key2=value2&key1=value1
Note that any dictionary key whose value is None
will not be added to the
URL’s query string.
You can also pass a list of items as a value:
>>> payload = {'key1': 'value1', 'key2': ['value2', 'value3']}
>>> r = requests.get('https://httpbin.org/get', params=payload)
>>> print(r.url)
https://httpbin.org/get?key1=value1&key2=value2&key2=value3
Response Content¶
We can read the content of the server’s response. Consider the GitHub timeline again:
>>> import requests
>>> r = requests.get('https://api.github.com/events')
>>> r.text
u'[{"repository":{"open_issues":0,"url":"https://github.com/...
Requests will automatically decode content from the server. Most unicode charsets are seamlessly decoded.
When you make a request, Requests makes educated guesses about the encoding of
the response based on the HTTP headers. The text encoding guessed by Requests
is used when you access r.text
. You can find out what encoding Requests is
using, and change it, using the r.encoding
property:
>>> r.encoding
'utf-8'
>>> r.encoding = 'ISO-8859-1'
If you change the encoding, Requests will use the new value of r.encoding
whenever you call r.text
. You might want to do this in any situation where
you can apply special logic to work out what the encoding of the content will
be. For example, HTML and XML have the ability to specify their encoding in
their body. In situations like this, you should use r.content
to find the
encoding, and then set r.encoding
. This will let you use r.text
with
the correct encoding.
Requests will also use custom encodings in the event that you need them. If
you have created your own encoding and registered it with the codecs
module, you can simply use the codec name as the value of r.encoding
and
Requests will handle the decoding for you.
Binary Response Content¶
You can also access the response body as bytes, for non-text requests:
>>> r.content
b'[{"repository":{"open_issues":0,"url":"https://github.com/...
The gzip
and deflate
transfer-encodings are automatically decoded for you.
For example, to create an image from binary data returned by a request, you can use the following code:
>>> from PIL import Image
>>> from io import BytesIO
>>> i = Image.open(BytesIO(r.content))
JSON Response Content¶
There’s also a builtin JSON decoder, in case you’re dealing with JSON data:
>>> import requests
>>> r = requests.get('https://api.github.com/events')
>>> r.json()
[{u'repository': {u'open_issues': 0, u'url': 'https://github.com/...
In case the JSON decoding fails, r.json()
raises an exception. For example, if
the response gets a 204 (No Content), or if the response contains invalid JSON,
attempting r.json()
raises ValueError: No JSON object could be decoded
.
It should be noted that the success of the call to r.json()
does not
indicate the success of the response. Some servers may return a JSON object in a
failed response (e.g. error details with HTTP 500). Such JSON will be decoded
and returned. To check that a request is successful, use
r.raise_for_status()
or check r.status_code
is what you expect.
Raw Response Content¶
In the rare case that you’d like to get the raw socket response from the
server, you can access r.raw
. If you want to do this, make sure you set
stream=True
in your initial request. Once you do, you can do this:
>>> r = requests.get('https://api.github.com/events', stream=True)
>>> r.raw
<urllib3.response.HTTPResponse object at 0x101194810>
>>> r.raw.read(10)
'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03'
In general, however, you should use a pattern like this to save what is being streamed to a file:
with open(filename, 'wb') as fd:
for chunk in r.iter_content(chunk_size=128):
fd.write(chunk)
Using Response.iter_content
will handle a lot of what you would otherwise
have to handle when using Response.raw
directly. When streaming a
download, the above is the preferred and recommended way to retrieve the
content. Note that chunk_size
can be freely adjusted to a number that
may better fit your use cases.
Note
An important note about using Response.iter_content
versus Response.raw
.
Response.iter_content
will automatically decode the gzip
and deflate
transfer-encodings. Response.raw
is a raw stream of bytes – it does not
transform the response content. If you really need access to the bytes as they
were returned, use Response.raw
.
Custom Headers¶
If you’d like to add HTTP headers to a request, simply pass in a dict
to the
headers
parameter.
For example, we didn’t specify our user-agent in the previous example:
>>> url = 'https://api.github.com/some/endpoint'
>>> headers = {'user-agent': 'my-app/0.0.1'}
>>> r = requests.get(url, headers=headers)
Note: Custom headers are given less precedence than more specific sources of information. For instance:
- Authorization headers set with headers= will be overridden if credentials
are specified in
.netrc
, which in turn will be overridden by theauth=
parameter. - Authorization headers will be removed if you get redirected off-host.
- Proxy-Authorization headers will be overridden by proxy credentials provided in the URL.
- Content-Length headers will be overridden when we can determine the length of the content.
Furthermore, Requests does not change its behavior at all based on which custom headers are specified. The headers are simply passed on into the final request.
Note: All header values must be a string
, bytestring, or unicode. While permitted, it’s advised to avoid passing unicode header values.
More complicated POST requests¶
Typically, you want to send some form-encoded data — much like an HTML form.
To do this, simply pass a dictionary to the data
argument. Your
dictionary of data will automatically be form-encoded when the request is made:
>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.post("https://httpbin.org/post", data=payload)
>>> print(r.text)
{
...
"form": {
"key2": "value2",
"key1": "value1"
},
...
}
The data
argument can also have multiple values for each key. This can be
done by making data
either a list of tuples or a dictionary with lists
as values. This is particularly useful when the form has multiple elements that
use the same key:
>>> payload_tuples = [('key1', 'value1'), ('key1', 'value2')]
>>> r1 = requests.post('https://httpbin.org/post', data=payload_tuples)
>>> payload_dict = {'key1': ['value1', 'value2']}
>>> r2 = requests.post('https://httpbin.org/post', data=payload_dict)
>>> print(r1.text)
{
...
"form": {
"key1": [
"value1",
"value2"
]
},
...
}
>>> r1.text == r2.text
True
There are times that you may want to send data that is not form-encoded. If
you pass in a string
instead of a dict
, that data will be posted directly.
For example, the GitHub API v3 accepts JSON-Encoded POST/PATCH data:
>>> import json
>>> url = 'https://api.github.com/some/endpoint'
>>> payload = {'some': 'data'}
>>> r = requests.post(url, data=json.dumps(payload))
Instead of encoding the dict
yourself, you can also pass it directly using
the json
parameter (added in version 2.4.2) and it will be encoded automatically:
>>> url = 'https://api.github.com/some/endpoint'
>>> payload = {'some': 'data'}
>>> r = requests.post(url, json=payload)
Note, the json
parameter is ignored if either data
or files
is passed.
Using the json
parameter in the request will change the Content-Type
in the header to application/json
.
POST a Multipart-Encoded File¶
Requests makes it simple to upload Multipart-encoded files:
>>> url = 'https://httpbin.org/post'
>>> files = {'file': open('report.xls', 'rb')}
>>> r = requests.post(url, files=files)
>>> r.text
{
...
"files": {
"file": "<censored...binary...data>"
},
...
}
You can set the filename, content_type and headers explicitly:
>>> url = 'https://httpbin.org/post'
>>> files = {'file': ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})}
>>> r = requests.post(url, files=files)
>>> r.text
{
...
"files": {
"file": "<censored...binary...data>"
},
...
}
If you want, you can send strings to be received as files:
>>> url = 'https://httpbin.org/post'
>>> files = {'file': ('report.csv', 'some,data,to,send\nanother,row,to,send\n')}
>>> r = requests.post(url, files=files)
>>> r.text
{
...
"files": {
"file": "some,data,to,send\\nanother,row,to,send\\n"
},
...
}
In the event you are posting a very large file as a multipart/form-data
request, you may want to stream the request. By default, requests
does not
support this, but there is a separate package which does -
requests-toolbelt
. You should read the toolbelt’s documentation for more details about how to use it.
For sending multiple files in one request refer to the advanced section.
Warning
It is strongly recommended that you open files in binary
mode. This is because Requests may attempt to provide
the Content-Length
header for you, and if it does this value
will be set to the number of bytes in the file. Errors may occur
if you open the file in text mode.
Response Status Codes¶
We can check the response status code:
>>> r = requests.get('https://httpbin.org/get')
>>> r.status_code
200
Requests also comes with a built-in status code lookup object for easy reference:
>>> r.status_code == requests.codes.ok
True
If we made a bad request (a 4XX client error or 5XX server error response), we
can raise it with
Response.raise_for_status()
:
>>> bad_r = requests.get('https://httpbin.org/status/404')
>>> bad_r.status_code
404
>>> bad_r.raise_for_status()
Traceback (most recent call last):
File "requests/models.py", line 832, in raise_for_status
raise http_error
requests.exceptions.HTTPError: 404 Client Error
But, since our status_code
for r
was 200
, when we call
raise_for_status()
we get:
>>> r.raise_for_status()
None
All is well.
Response Headers¶
We can view the server’s response headers using a Python dictionary:
>>> r.headers
{
'content-encoding': 'gzip',
'transfer-encoding': 'chunked',
'connection': 'close',
'server': 'nginx/1.0.4',
'x-runtime': '148ms',
'etag': '"e1ca502697e5c9317743dc078f67693f"',
'content-type': 'application/json'
}
The dictionary is special, though: it’s made just for HTTP headers. According to RFC 7230, HTTP Header names are case-insensitive.
So, we can access the headers using any capitalization we want:
>>> r.headers['Content-Type']
'application/json'
>>> r.headers.get('content-type')
'application/json'
It is also special in that the server could have sent the same header multiple times with different values, but requests combines them so they can be represented in the dictionary within a single mapping, as per RFC 7230:
A recipient MAY combine multiple header fields with the same field name into one “field-name: field-value” pair, without changing the semantics of the message, by appending each subsequent field value to the combined field value in order, separated by a comma.
Cookies¶
If a response contains some Cookies, you can quickly access them:
>>> url = 'http://example.com/some/cookie/setting/url'
>>> r = requests.get(url)
>>> r.cookies['example_cookie_name']
'example_cookie_value'
To send your own cookies to the server, you can use the cookies
parameter:
>>> url = 'https://httpbin.org/cookies'
>>> cookies = dict(cookies_are='working')
>>> r = requests.get(url, cookies=cookies)
>>> r.text
'{"cookies": {"cookies_are": "working"}}'
Cookies are returned in a RequestsCookieJar
,
which acts like a dict
but also offers a more complete interface,
suitable for use over multiple domains or paths. Cookie jars can
also be passed in to requests:
>>> jar = requests.cookies.RequestsCookieJar()
>>> jar.set('tasty_cookie', 'yum', domain='httpbin.org', path='/cookies')
>>> jar.set('gross_cookie', 'blech', domain='httpbin.org', path='/elsewhere')
>>> url = 'https://httpbin.org/cookies'
>>> r = requests.get(url, cookies=jar)
>>> r.text
'{"cookies": {"tasty_cookie": "yum"}}'
Redirection and History¶
By default Requests will perform location redirection for all verbs except HEAD.
We can use the history
property of the Response object to track redirection.
The Response.history
list contains the
Response
objects that were created in order to
complete the request. The list is sorted from the oldest to the most recent
response.
For example, GitHub redirects all HTTP requests to HTTPS:
>>> r = requests.get('http://github.com/')
>>> r.url
'https://github.com/'
>>> r.status_code
200
>>> r.history
[<Response [301]>]
If you’re using GET, OPTIONS, POST, PUT, PATCH or DELETE, you can disable
redirection handling with the allow_redirects
parameter:
>>> r = requests.get('http://github.com/', allow_redirects=False)
>>> r.status_code
301
>>> r.history
[]
If you’re using HEAD, you can enable redirection as well:
>>> r = requests.head('http://github.com/', allow_redirects=True)
>>> r.url
'https://github.com/'
>>> r.history
[<Response [301]>]
Timeouts¶
You can tell Requests to stop waiting for a response after a given number of
seconds with the timeout
parameter. Nearly all production code should use
this parameter in nearly all requests. Failure to do so can cause your program
to hang indefinitely:
>>> requests.get('https://github.com/', timeout=0.001)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
requests.exceptions.Timeout: HTTPConnectionPool(host='github.com', port=80): Request timed out. (timeout=0.001)
Note
timeout
is not a time limit on the entire response download;
rather, an exception is raised if the server has not issued a
response for timeout
seconds (more precisely, if no bytes have been
received on the underlying socket for timeout
seconds). If no timeout is specified explicitly, requests do
not time out.
Errors and Exceptions¶
In the event of a network problem (e.g. DNS failure, refused connection, etc),
Requests will raise a ConnectionError
exception.
Response.raise_for_status()
will
raise an HTTPError
if the HTTP request
returned an unsuccessful status code.
If a request times out, a Timeout
exception is
raised.
If a request exceeds the configured number of maximum redirections, a
TooManyRedirects
exception is raised.
All exceptions that Requests explicitly raises inherit from
requests.exceptions.RequestException
.
Ready for more? Check out the advanced section.
If you’re on the job market, consider taking this programming quiz. A substantial donation will be made to this project, if you find a job through this platform.


Wendy:
I don't think I can tell you any more than I have right now.
If you want to know more, please come back again; I may remember more later.


To create more awareness on Python programming language and help to build larger Python community.
Who can sign up as Tutor?
Anyone who has knowledge on Python and interested in conducting workshop can become tutor
Is there a selection process for tutor registration?
No
Who are the intended audience?
It depends on the organisation requested for workshop and infrastructure to conduct workshop. We help everyone from students till professionals learn Python and related technologies.
Can I use this to organize a training in my company?
Yes, you can register your company as an organisation with us and request for workshop
How do I become a tutor?
Register your self with the options usertype - tutor, interested location - your location to conduct workshop.
You will receive email from your time of registration for the workshops requested in your location.
How do I organize a workshop?
Register yourself as POC (usertype - "College POC"). Create organisation you are part of after which you can request for workshop for your organisation registered.
Is there any kind of fee associated with PythonExpress?
No, Workshops conducted through PythonExpress are free of cost.
I don't see my city/location name in option?
Please use contact page, chose feedback type option as "others". Share details about locaiton to be added.
Volunteers will add and let you know via email
For Tutor
What is the typical duration of these workshops?
It can be from half a day to 2 days
Can I get help in the form of slide decks or sample code which can be re-used?
Yes, drop email to<EMAIL_ADDRESS>for help.
Are there any guidelines in conducting workshops or can I adopt my style of teaching?
You can adopt your style of teaching.
How is my 'Average Rating' derived?
It is the average rating of all the workshops conducted by you through PythonExpress.
Workshop rating is provided by Organisation POC as of now.
We have plans to integrate Students feedback for each workshop.
Do we get any remuneration for doing the workshops?
No remuneration is provided as our intention is to help people learn Python. We do help reimburse travel expense upto certain level in case college can't fund tutors. Reach out to PSSI for the same.
I don't see accept button ?
Well you first need to log in to your account. Then click on profile and go to UPDATE PROFILE section. Here in the region section you need to select the cities/region where it's easy for you to give the talk. Once you save the settings click on WORKSHOPS tabs and you should be able to see the related workshop of that area.
It is to be noted that every user by default is treated as tutor now. Hence if you want to create organisation click on the ORGANISATIONS tab and add your respective ORGANISATION [ College, FSO, Others, Student Group].


{% extends 'layout-side-nav.html' %} {% import '_vars-the-bureau.html' as vars with context %} {% import '_vars-office-data.html' as office_data %} {% import '_vars-division-data.html' as division_data %} {% import '_macro-role.html' as role with context %} {% import '_macro-content-slider.html' as content_slider with context %} {% import '_macro-branches.html' as branches with context %} {% set active_nav_id = 'bureau-structure' %} {% set breadcrumb_items = vars.breadcrumb_items %} {% set categories = [{ 'title': 'Divisions', 'sub_title': 'Offices in this division', 'data': division_data.data },{ 'title':'Office of the Director', 'sub_title': 'Offices under this position', 'data': office_data.data }] %} {% block title -%} Bureau Structure | Consumer Financial Protection Bureau {%- endblock %} {% block desc -%} Bureau Structure {%- endblock %} {% block css -%} {{ super() }} {# TODO: Resolve slick font issue. For the slick stylesheet to pick up its font and img reference the fonts and images found at /src/vendor/slick-carousel/slick/ should be included in same directory as slick.css. However, including the slick fonts makes the dots on the /about-us/the-bureau/ page at mobile sizes enormous. #} {%- endblock %} {% block content_main_modifiers -%} {{ super() }} content__flush-bottom {%- endblock %} {% block content_main %}
Org chart last updated: July 26, 2016


Meditation Process
Process over Product
This approach was pretty difficult for me to get into and also liberating when I did.
As an example when I was going through the redesign process for the website based on the skeleton framework,
I found myself gravitating around a certain look before I'd properly thought about the intention of my site.
- Who is my target audience?
- What is the purpose of the site?
Remembering to engage in the process and let the product emerge definitely helped me to overcome getting stuck in details and perfection. I would remind myself that going through the redesign process I could trust that I'd get somewhere I liked even if it didn't fit some ideal and also that this was just the first iteration. I'd be looking at how my site appeared after a stint, coming up with new ideas and reworking it again and again.
Chapter Two: "Breathe as if your life depended on it"
I'm going to deviate from the suggested questions here. I guess none of what I am reading is conceptually new or unfamiliar to me, it is more a different framing and perspective which I am getting a lot from.
Past Practice - Forcing and Loss
I've had some experience of regular meditation and profound positive effects coming from it a couple of years ago. After a while I pushed
it a bit hard and viewed it as a tool for self improvement, eventually I just couldn't very easily sit in meditation anymore, especially
alone, without getting more and more tense and unhappy.
I like the analogy of a a person riding a horse in chapter one where horse and rider are different parts of a person. It was as though with meditation
I had no respect for my horse, always whipping it to go faster until eventually it kicked me off (fair enough). I guess my attitude became very toxic,
it was just another tool for betterment and I was never good enough to take it easy and appreciate things. This attitudinal part is the hardest part for me.
So reading about meditation and trying it out again is a little difficult. It has been rough to have and then lose that experience of enhaced state of self and regular practice,
I'm unsure of my ability to get back on.
It's exciting to think I might be able to continue again. It would be great to approach mindfulness practice
in a way that feels good and respectful and patient, I think doing it slowly and alongside
other people would have a big impact in maintaining a good attitude.
I find it very ironic that I managed to make meditation, which is supposed to an act of allowing everything to be as it is, into
a very stressful and forceful act for myself. If it can be done then it can be undone!
Second meditation experiment - 20min
This was great! I set myself a goal of 20min and to be honest I was expecting to get wound up in tension like I
have the last few times I sat down and tried to focus on my breathe. I was surprised how calm and focused a state of mind I could get into.
There was no mental forcing.
Perhaps reading SIY and having a good retrospect about what has tripped me up previously is allowing me to rengage with a more helpful mindset.
I hope this is the case and I look forward to incorporating it into my day again.
Techniques I like
I really enjoy the 'easy' technique suggested by Meng. Using the breath as an attention anchor. It's easier for me to tell where my attention is this way when I do drift. I'm going to see how I go doing a short breathe focused meditation some mornings. I'm guessing that at some point I will get on the tension/forceful wind-up train during meditation as I get back into it, I'll have to be on watch for that and remember not to force anything, step back and maintain a gentle attitude.


---
layout: post
date: 2010-12-10
time: "09:00:00"
authors: ["Greg Wilson"]
title: Performance and Parallelism
tags: ["Content"]
---
Some topics for a lecture on parallel programming:
- how to measure/compare performance (raw speed, weak scaling, strong scaling, Amdahl's Law, response time vs. throughput)
- the register/cache/RAM/virtual memory/local disk/remote storage hierarchy and the relative performance of each (order of magnitude)
- in-processor pipelining (or, why branches reduce performance, and why vectorized operations are a good thing)
- how that data-parallel model extends to distributed-memory systems, and what the limits of that model are
- the shared-memory (threads and locks) model, its performance
limitations, deadlock, and race conditions
- the pure task farm model, its map/reduce cousin, and their limitations
- the actors model (processes with their own state communicating only through messages, as in MPI)
It's too much (each point should be an hour-long lecture in its own right, rather than 10-12 minutes of a larger lecture); what do we cut, and what's in there that doesn't need to be?


Diagnostics
Console
Docker
Camera
Diagnostic
Errors
0
Warning
0
Ok
0
Console
Time
Level
Node
Message
Docker Containers
CPU
Memory
Boot
mjpeg stream of camera/image_raw


JUnit 4 Annotations
The JUnit 4 integration supports the
Before
,
BeforeClass
,
Rule
method annotations, and
Rule
field annotations.


Basic Programming
Project
Projects from the basic programming course of Platzi.
Weight on other planets
Drawing with canvas
Villa Platzi
Projects from the basic programming course of Platzi.
Weight on other planets
Drawing with canvas
Villa Platzi


BenFranske: Help using bridge rectifier instead of voltage divider
Submitted by TrystanLea on Wed, 13/04/2011 - 23:33
This post was moved from the old forum:
BenFranske:
Hello! I'm trying to create a circuit to measure current used by a motor with an Arduino using a current transformer and a bridge rectifier. I'm afraid it's been too long since I've done AC circuits or calculated RC values so I'm having some difficulty making sense of the numbers I'm getting, any help would be greatly appreciated.
My specific hardware, with links to the datasheets where applicable: CR Magnetics CR8410-1000 Current Transformer Fairchild DF02M DIP Bridge Rectifier
Currently using 200 ohms of burden/load resistance on the AC side of the rectifier for the CT
Currently using 100uF capacitor from the positive output of the rectifier to ground
Currently using 10K resistor in parallel with the capacitor
Measuring across the dc side of the rectifier
Based on the datasheet for the CT I thought I should be using a 100 ohm burden resistor but the voltages across it that I'm seeing when the motor runs (it's on a sump pump either 1/4 or 1/3 HP I think) are lower than I expected based on my calculations (all well below 1V) so I bumped the burden resistance up to 200 ohms to raise the voltages. With a multimeter I'm now measuring voltages around 1.4 Vdc when the motor is running, this still seems a little lower than I'd expect...
One of the things that's somewhat important to me is getting an accurate run duration (being able to detect when the motor starts and stops with reasonable accuracy, say 1/2 second or less) and I'm somewhat concerned that the capacitor is causing a delay in detecting the stop time. If I'm thinking correctly I could reduce this lag by reducing the capacitor size however the only other capacitors I have on hand are a couple non-polarized 1uF and some tiny ceramics. If I were to order another size capacitor what would be ideal.
The circuit itself is a dedicated 20A circuit so ideally I would be able to measure up to 20A but realistically I expect the motor draws somewhere around 10A. I'm located in the US so this is 110/120v. Again, any help is greatly appreciated!
BenFranske: Help using bridge rectifier instead of voltage divider
Submitted by TrystanLea on Wed, 13/04/2011 - 23:33This post was moved from the old forum:
BenFranske:
Hello! I'm trying to create a circuit to measure current used by a motor with an Arduino using a current transformer and a bridge rectifier. I'm afraid it's been too long since I've done AC circuits or calculated RC values so I'm having some difficulty making sense of the numbers I'm getting, any help would be greatly appreciated.
My specific hardware, with links to the datasheets where applicable:
CR Magnetics CR8410-1000 Current Transformer
Fairchild DF02M DIP Bridge Rectifier
Currently using 200 ohms of burden/load resistance on the AC side of the rectifier for the CT
Currently using 100uF capacitor from the positive output of the rectifier to ground
Currently using 10K resistor in parallel with the capacitor
Measuring across the dc side of the rectifier
Based on the datasheet for the CT I thought I should be using a 100 ohm burden resistor but the voltages across it that I'm seeing when the motor runs (it's on a sump pump either 1/4 or 1/3 HP I think) are lower than I expected based on my calculations (all well below 1V) so I bumped the burden resistance up to 200 ohms to raise the voltages. With a multimeter I'm now measuring voltages around 1.4 Vdc when the motor is running, this still seems a little lower than I'd expect...
One of the things that's somewhat important to me is getting an accurate run duration (being able to detect when the motor starts and stops with reasonable accuracy, say 1/2 second or less) and I'm somewhat concerned that the capacitor is causing a delay in detecting the stop time. If I'm thinking correctly I could reduce this lag by reducing the capacitor size however the only other capacitors I have on hand are a couple non-polarized 1uF and some tiny ceramics. If I were to order another size capacitor what would be ideal.
The circuit itself is a dedicated 20A circuit so ideally I would be able to measure up to 20A but realistically I expect the motor draws somewhere around 10A. I'm located in the US so this is 110/120v. Again, any help is greatly appreciated!


self
frameworks
more
00
P!
2!
!3
functions
set light
set norm
set dark
p
h1
h2
h3
h4
h5
h6
Test
test
test
test
test
set dark
start
start
start
start
start
start
start
start
start
start
start
start
start
start
start
start
start
start
ende
JavaScript is deactivated


Class: PG::TextEncoder::Record
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
|
|
|
Instance Chain:
|
|
| Inherits: |
PG::RecordEncoder
|
| Defined in: | ext/pg_record_coder.c |
Overview
This class encodes one record of columns for transmission as query parameter in text format. See PostgreSQL Composite Types for a description of the format and how it can be used.
PostgreSQL allows composite types to be used in many of the same ways that simple types can be used. For example, a column of a table can be declared to be of a composite type.
The encoder expects the record columns as array of values. The single values are encoded as defined in the assigned #type_map
. If no type_map was assigned, all values are converted to strings by String
.
It is possible to manually assign a type encoder for each column per ::PG::TypeMapByColumn
, or to make use of ::PG::BasicTypeMapBasedOnResult
to assign them based on the table OIDs.
Encode a record from an Array<String>
to a String
in PostgreSQL Composite Type format (uses default type map ::PG::TypeMapAllStrings
):
PG::TextEncoder::Record.new.encode([1, 2]) # => "(\"1\",\"2\")"
Encode a record from Array<Float>
to String
:
# Build a type map for two Floats
tm = PG::TypeMapByColumn.new([PG::TextEncoder::Float.new]*2)
# Use this type map to encode the record:
PG::TextEncoder::Record.new(type_map: tm).encode([1,2])
# => "(\"1.0\",\"2.0\")"
Records can also be encoded and decoded directly to and from the database. This avoids intermediate string allocations and is very fast. Take the following type and table definitions:
conn.exec("CREATE TYPE complex AS (r float, i float) ")
conn.exec("CREATE TABLE my_table (v1 complex, v2 complex) ")
A record can be encoded by adding a type map to Connection#exec_params and siblings:
# Build a type map for the two floats "r" and "i" as in our "complex" type
tm = PG::TypeMapByColumn.new([PG::TextEncoder::Float.new]*2)
# Build a record encoder to encode this type as a record:
enco = PG::TextEncoder::Record.new(type_map: tm)
# Insert table data and use the encoder to cast the complex value "v1" from ruby array:
conn.exec_params("INSERT INTO my_table VALUES ($1) RETURNING v1", [[1,2]], 0, PG::TypeMapByColumn.new([enco])).to_a
# => [{"v1"=>"(1,2)"}]
Alternatively the typemap can be build based on database OIDs rather than manually assigning encoders.
# Fetch a NULL record of our type to retrieve the OIDs of the two fields "r" and "i"
oids = conn.exec( "SELECT (NULL::complex).*" )
# Build a type map (PG::TypeMapByColumn) for encoding the "complex" type
etm = PG::BasicTypeMapBasedOnResult.new(conn).build_column_map( oids )
It’s also possible to use the ::PG::BasicTypeMapForQueries
to send records to the database server. In contrast to ORM libraries, ::PG
doesn’t have information regarding the type of data the server is expecting. So BasicTypeMapForQueries works based on the class of the values to be sent and it has to be instructed that a ruby array shall be casted to a record.
# Retrieve OIDs of all basic types from the database
etm = PG::BasicTypeMapForQueries.new(conn)
etm.encode_array_as = :record
# Apply the basic type registry to all values sent to the server
conn.type_map_for_queries = etm
# Send a complex number as an array of two integers
conn.exec_params("INSERT INTO my_table VALUES ($1) RETURNING v1", [[1,2]]).to_a
# => [{"v1"=>"(1,2)"}]
Records can also be nested or further wrapped into other encoders like CopyRow
.
See also ::PG::TextDecoder::Record
for the decoding direction.
Constant Summary
::PG::Coder
- Inherited
FORMAT_ERROR_MASK, FORMAT_ERROR_TO_PARTIAL, FORMAT_ERROR_TO_RAISE, FORMAT_ERROR_TO_STRING, TIMESTAMP_APP_LOCAL, TIMESTAMP_APP_UTC, TIMESTAMP_DB_LOCAL, TIMESTAMP_DB_UTC
Class Method Summary
::PG::Coder
- Inherited
| .new | Create a new coder object based on the attribute Hash. |
Instance Attribute Summary
::PG::RecordCoder
- Inherited
| #type_map | The |
| #type_map= | Defines how single columns are encoded or decoded. |
::PG::Coder
- Inherited
| #flags | Get current bitwise OR-ed coder flags. |
| #flags= | Set coder specific bitwise OR-ed flags. |
| #format | The format code that is sent alongside with an encoded query parameter value. |
| #format= | Specifies the format code that is sent alongside with an encoded query parameter value. |
| #name | Name of the coder or the corresponding data type. |
| #oid | The type OID that is sent alongside with an encoded query parameter value. |
| #oid= | Specifies the type OID that is sent alongside with an encoded query parameter value. |
Instance Method Summary
::PG::RecordCoder
- Inherited
::PG::Coder
- Inherited
| #==, #dup, #inspect, #inspect_short, #marshal_dump, #marshal_load, | |
| #to_h | Returns coder attributes as Hash. |
Constructor Details
This class inherits a constructor from PG::Coder


Haskell Platform for Mac OS X
Welcome to Haskell Platform. The platform consists of the Glasgow Haskell Compiler (GHC) and an extensive set of standard libraries and utilities with full documentation.
Documentation
-
Documentation for the libraries that come with Haskell Platform & GHC.
-
The GHC User's Guide has all you need to know about using GHC: command line options, language extensions, GHCi, etc.
-
Documentation for the GHC API.
-
An infrastructure for building and distributing Haskell software.
-
A tool for automatically generating documentation from annotated Haskell source code.
What is Installed
On Mac OS X, the Haskell Platform is installed in two major pieces: GHC and Haskell Platform. They are installed respectively in:
/Library/Frameworks/GHC.framework
/Library/Haskell
Executables are symlinked in /usr/bin and should be available in any shell.
Uninstallation
This and prior versions of GHC and Haskell Platform can be found and then easily removed with the uninstallation command line utility:
/Library/Haskell/bin/uninstall-hs
Simply run it for more information.
Configuring Cabal
The cabal command manages the building and installation of packages, both your own, and those it can fetch from the Hackage repository.
The first time you run cabal, a Mac specific configuration is written into the ~/.cabal directory.
If this is the first time you have ever run cabal, it will be made your active configuration.
If you have run cabal in the past, the new settings are in the file config.platform. You might want to review and incorporate some of the settings into your existing config file, or just replace your config file with it entirely.
The configuration sets up cabal to install packages with the same layout as those installed with the Platform. Packages installed per user (--user, the default) are placed in a parallel tree in ~/Library/Haskell.
N.B. Built executables will be symlink'd into ~/Library/Haskell/bin, you probably want to add that to your $PATH by adding this line to your ~/.bash_profile:
export PATH="$HOME/Library/Haskell/bin:$PATH"


HOME
DEMO-1
DEMO-2
DEMO-3
DEMO-4
Interaction viewer
xiNET was initially developed to
visualise the results of cross‑linking/mass spectrometry experiments,
a key feature of xiNET is including sequence resolution information within a node-link diagram of interactions,
we are working to develop xiNET as a standards compliant, web-based component for viewing
molecular interactions
,
source code at
github
.
Join us!
to have input into the development of xiNET, and get guidance on how to use it, join the development mailing list by emailing 'dev-subscribe at interactionviewer.org'.


Incident Detail
{{ incident.alarms }}
Alarms
Alarm
{{ incident.type }}
Type
{{ incident.dispatched_at }}
Dispatched at
{{ incident.alarms }}
Alarms
Alarm
{{ incident.type }}
Type
{{ incident.dispatched_at }}
Dispatched at


QTrip
Home
Explore
Welcome to QTrip
Explore the world with fantastic places to venture around
BENGALURU
100+ PLACES
KOLKATA
52+ PLACES
GOA
160+ PLACES
MUMBAI
121+ PLACES
SINGAPORE
89+ PLACES
DUBAI
74+ PLACES
MALAYSIA
172+ PLACES
PARIS
150+ PLACES


It look's like you aren't using javascript. Interactive elements require javascript. However, most of the content can be read in a static version here.


A bit like Solr, but much smaller and not as bright.
A very simple search index can be created using the following:
1 2 3 4 | var idx = lunr(function () { this.field('title', { boost: 10 }) this.field('body') }) |
Adding documents to be indexed is as simple as:
1 2 3 4 5 6 7 | var doc = { "title": "Twelfth-Night", "body": "If music be the food of love, play on: Give me excess of it…", "author": "William Shakespeare", "id": 1 } idx.add(doc) |
Then searching is as simple:
1 | idx.search("love") |
This returns a list of matching documents with a score of how closely they match the search query:
1 2 3 4 | [{ "ref": 1, "score": 0.87533 }] |
API documentation is available, as well as a full working example.
Lunr.js is a small, full-text search library for use in the browser. It indexes JSON documents and provides a simple search interface for retrieving documents that best match text queries.
For web applications with all their data already sitting in the client, it makes sense to be able to search that data on the client too. It saves adding extra, compacted services on the server. A local search index will be quicker, there is no network overhead, and will remain available and useable even without a network connection.
Simply include the lunr.js source file in the page that you want to use it. Lunr.js is supported in all modern browsers.
Browsers that do not support ES5 will require a JavaScript shim for Lunr to work. You can either use Augment.js, ES5-Shim or any library that patches old browsers to provide an ES5 compatible JavaScript environment.
See the CONTRIBUTING.mdown
file.