|
BTK
0.3dev.0
Open-source library to visualize/process biomechanical data
|
Common is the base of BTK. It contains required classes by others modules. More...
Classes | |
| class | btk::AbstractMotion |
| Abstract container to represent the motion of a rigid body. More... | |
| class | btk::Acquisition |
| Contains the data related to a biomechanical acquisition. More... | |
| class | btk::Analog |
| Analog channel data along the time. More... | |
| class | btk::Chain |
| Abstract class for the definion a chain of segments. More... | |
| class | btk::Collection< T > |
| List of objects. More... | |
| class | btk::DataObject |
| Input and output entry for processes in pipelines. More... | |
| class | btk::DataObjectLabeled |
| DataObject with a label and a description. More... | |
| class | btk::DynamicChain |
| Chain of segments linked by joints and defined only by a proximal and distal segment. More... | |
| class | btk::Event |
| Label a specific time/frame during an acquisition. More... | |
| class | btk::FixedChain |
| Chain of segments defined during the construction of the chain and cannot be modified later. More... | |
| class | btk::ForcePlatform |
| Base class for all type of force platform. More... | |
| class | btk::ForcePlatformType< t, r, c > |
| Represents a concrete force platform. More... | |
| class | btk::IMU |
| Container of analog channels representing an inertial measurement unit (IMU). More... | |
| class | btk::Joint |
| Class to define a joint, defined by a proximal and distal segment. More... | |
| class | btk::LandmarksTranslator |
| Translator between the acquisition's landmark and these used in the model. More... | |
| class | btk::Measure< d > |
| Measure with d dimensions along the time. More... | |
| class | btk::MetaData |
| Store data which cannot be embedded within timeseries data (calibration matrix, subject informations, ...). More... | |
| class | btk::MetaDataInfo |
| Container class to store data of a MetaData object. More... | |
| class | btk::Model |
| Collection of segments and joints used to compute kinematics, kinetics, etc. More... | |
| class | btk::Motion |
| Container of frames used to represent the motion of a rigid body. More... | |
| class | btk::NoMotion |
| (false) Container of frames used to represent the motion of a rigid body. More... | |
| class | btk::Object |
| Base for all objects which need to keep track of modified time. More... | |
| class | btk::Point |
| Coordinates of a point in a 3D space along the time. More... | |
| class | btk::ProcessObject |
| Interface to create a filter/process in a pipeline. More... | |
| class | btk::Segment |
| Object representing the modeling of a body part. More... | |
| class | btk::SegmentForcePlatformWrenchManualMapper |
| Manual mapper between force platform and segment to be used with the class btk::ModelWrenchAssembly. More... | |
| class | btk::Wrench |
| Represents a wrench as position, force and moment varying during the time. More... | |
Typedefs | |
| typedef Collection< Analog > | btk::AnalogCollection |
| typedef Collection< Chain > | btk::ChainCollection |
| typedef Collection< Event > | btk::EventCollection |
| typedef Collection< ForcePlatform > | btk::ForcePlatformCollection |
| typedef ForcePlatformType< 1, 6, 6 > | btk::ForcePlatformType1 |
| typedef ForcePlatformType< 2, 6, 6 > | btk::ForcePlatformType2 |
| typedef ForcePlatformType< 3, 8, 8 > | btk::ForcePlatformType3 |
| typedef ForcePlatformType< 4, 6, 6 > | btk::ForcePlatformType4 |
| typedef ForcePlatformType< 5, 8, 6 > | btk::ForcePlatformType5 |
| typedef ForcePlatformType< 6, 12, 12 > | btk::ForcePlatformType6 |
| typedef Collection< IMU > | btk::IMUCollection |
| typedef Collection< Joint > | btk::JointCollection |
| typedef Collection< Point > | btk::PointCollection |
| typedef Collection< Segment > | btk::SegmentCollection |
| typedef Collection< Wrench > | btk::WrenchCollection |
Functions | |
| btk::Frame::Frame () | |
| template<typename T > | |
| void | btk::MetaDataCollapseChildrenValues (std::vector< T > &target, MetaData::ConstPointer parent, const std::string &baselabel, int targetFinalSize=-1, const T &blankReplacement=T()) |
| MetaData::Pointer | btk::MetaDataCreateChild (MetaData::Pointer parent, const std::string &label) |
| template<typename T > | |
| void | btk::MetaDataCreateChild (MetaData::Pointer parent, const std::string &label, const T &val) |
| template<typename T > | |
| void | btk::MetaDataCreateChild (MetaData::Pointer parent, const std::string &label, const std::vector< T > &val) |
| template<typename T > | |
| void | btk::MetaDataCreateChild (MetaData::Pointer parent, const std::string &label, const std::vector< T > &val, int numCol) |
Common is the base of BTK. It contains required classes by others modules.
This modules corresponds to the library BTKCommon
Collection of analog channels
Collection of chains used in biomechanical models.
Collection of events
Collection of force platform channels
| typedef ForcePlatformType<1,6,6> btk::ForcePlatformType1 |
Represents Force platform Type-1 (6 channels: FX, FY, FZ, PX, PY, MZ)
| typedef ForcePlatformType<2,6,6> btk::ForcePlatformType2 |
Represents Force platform Type-2 (6 channels: FX, FY, FZ, MX, MY, MZ)
| typedef ForcePlatformType<3,8,8> btk::ForcePlatformType3 |
Represents Force platform Type-3 (8 channels: FZ1, FZ2, FZ3, FZ4, FX12, FX34, FY14, FY23)
| typedef ForcePlatformType<4,6,6> btk::ForcePlatformType4 |
Represents Force platform Type-4 (Same as Type-2 + calibration matrix 6 by 6)
| typedef ForcePlatformType<5,8,6> btk::ForcePlatformType5 |
Represents Force platform Type-5 (8 channels: FZ1, FZ2, FZ3, FZ4, FX12, FX34, FY14, FY23 + calibration matrix 6 (columns) by 8 (rows))
| typedef ForcePlatformType<6,12,12> btk::ForcePlatformType6 |
Represents Force platform Type-6 (12 channels: FX[1,2,3,4], FY[1,2,3,4], FZ[1,2,3,4] + calibration matrix 12 by 12)
Collection of IMUs
Collection of joints used in biomechanical models.
Collection of points
Collection of segments used in biomechanical models.
Collection of wrenches
|
inline |
Constructor. The frame is defined as:
| void btk::MetaDataCollapseChildrenValues | ( | std::vector< T > & | target, |
| MetaData::ConstPointer | parent, | ||
| const std::string & | baselabel, | ||
| int | targetFinalSize = -1 , |
||
| const T & | blankReplacement = T() |
||
| ) |
Collapse the parent children entries' values starting with the string baselabel and incrementing (for example: LABELS, LABELS2, LABELS3). The entries' values are stored in target.
The input targetFinalSize can be used to fix the number of values to collapse (by default: -1). The input blankReplacement can be used to fill the target' values which have no corresponding in the parent (By default: default object constructor).
| MetaData::Pointer btk::MetaDataCreateChild | ( | MetaData::Pointer | parent, |
| const std::string & | label | ||
| ) |
| void btk::MetaDataCreateChild | ( | MetaData::Pointer | parent, |
| const std::string & | label, | ||
| const T & | val | ||
| ) |
| void btk::MetaDataCreateChild | ( | MetaData::Pointer | parent, |
| const std::string & | label, | ||
| const std::vector< T > & | val | ||
| ) |
Creates a new MetaData or replaces its data if it already exists.
This method constructs a MetaData with a 1D vector val as values, with the label label, an empty description and is unlocked. This method gives also the possibility to create more than one entry if the vector's length is greater or equal to 256. The other entries containing the extra 256 items use the same mechanism as proposed for MetaDataCollapseChildrenValues (e.g.: LABELS, LABELS2, LABELS3).
| void btk::MetaDataCreateChild | ( | MetaData::Pointer | parent, |
| const std::string & | label, | ||
| const std::vector< T > & | val, | ||
| int | numCol | ||
| ) |
Creates a new MetaData or replaces its data if it already exists.
This method constructs an unlocked MetaData with a 2D vector val as values, an integer numCol for the number of column, a string label for the label and an empty description. This method is a recursive method which give the possibility to create more than one entry if the vector's length is greater or equal to 256 * numCol. The number of column must be lower than 256. The number of columns is written in the first dimension. The other entries containing the extra 256 items use the same mechanism as proposed for MetaDataCollapseChildrenValues (e.g.: LABELS, LABELS2, LABELS3).


| Home | Trees | Indices | Help |
|
|---|
|
|
this class is for NON-memmapped access of Mrc files sections can be read and written on a by-need basis the Mrc2 object itself only handles the file-object and the header and extended header data BUT NOT ANY image data mode indicates how the file is to be opened: 'r' for reading, 'w' for writing (truncating an existing file), ['a' does not really make sense here] Modes 'r+', 'w+' [and 'a+'] open the file for updating (note that 'w+' truncates the file). ('b' for binary mode, is implicitely appended)
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|
path is filename mode: same as for Python's open function ('b' is implicitely appended !) 'r' read-only 'r+' read-write 'w' write - erases old file !! |
use zAxisOrder if arr.ndim > 3: zAxisOrder is given in order conform to python(last is fastest) (spaces,commas,dots,minuses are ignored) examples: 4D: time,z,y,x --> zAxisOrder= 't z' 5D: time, wave, z,y,x --> zAxisOrder= 't,z,w' refer to Mrc spec 'ImgSequence' (interleaved or not) zAxisOrder None means: 3D: 'z' 4D: 'tz' 5D: 'tzw' |
| Home | Trees | Indices | Help |
|
|---|
| Generated by Epydoc 3.0.1 on Mon Nov 22 14:59:34 2010 | http://epydoc.sourceforge.net |


Some smart person said a really smart thing Smart person Smart person website (View source!)
Some smart person said a really smart thing
Smart person website (View source!)
I enjoy doing many things in my spare time. There's never enough of it!


Work Request @Model.RequestNum
Client Id: @Model.ClientId
Report Date: @Model.DateFinalized.Value.ToPacificTime().ToShortDateString()
Due to storage space limitations, the Analytical Laboratory can only hold tested samples for a limited time after testing. The 30 day courtesy holding period for the samples associated with the above work request has expired. These samples will be discarded in two weeks from this date. Please reply to this email with one of the following options:
- I no longer want the samples. Please discard them.
- I will arrange to pick up my samples at the Lab's Receiving Area in the Hoagland Annex (phone:<PHONE_NUMBER>; email<EMAIL_ADDRESS>)
- Please hold my samples until _________________________ (charges may apply)
- Other _____________________________________________
Because this is the only notification we will send you, please take appropriate action quickly. Without a response, the samples will be discarded.


Woods confident there will be no Ryder repeat at Presidents Cup
(Reuters) - Tiger Woods says he will be well rested when he leads the United States as playing captain at next month’s Presidents Cup in Australia and is confident there will be no repeat of his poor performance at last year’s Ryder Cup.
Woods massively underperformed in Paris in 2018, losing all four of his matches as the Americans were thrashed 17 1/2 - 10 1/2 by Europe.
The 15-times major champion had arrived in France just after winning the Tour Championship in Atlanta, his first victory since undergoing a spinal fusion more than a year earlier.
“Last year was a bit different ... hopping on a flight that night (from Atlanta) and going straight to Paris,” he said on Friday while announcing his four captain’s picks.
“And also, I think the emotional stress and the emotional release of finally winning an event coming back from my back surgery, that took a toll on me a bit.”
Prior to the Dec. 12-15 Presidents Cup at Royal Melbourne, Woods will host his own event, the Hero World Challenge, in the Bahamas, a 16-hour time difference.
The World Challenge finishes on a Saturday, giving the 11 members of the U.S. team slated to compete in the Bahamas a chance to arrive in Melbourne on Monday, three days ahead of the first Presidents Cup matches against the International side.
Woods says his commitments at the World Challenge should not be too taxing.
“I do have some duties there at night, but overall, it’s a very easy week. And then our flight down to Oz will be easy, just long,” he added.
Woods will lead a team that on paper is massively stronger than the Internationals, though the Ernie Els-led squad is far more competitive outside the United States, losing by just one point in South Korea four years ago.
“On paper, we certainly have the advantage in the world rankings,” Woods acknowledged.
“Our players have earned that by playing well around the world and playing well in big events.”


Here are my top ten favorite tips for healthy eating all year long. This is by no means a complete list of guidelines but a few key things to get you started or keep you moving forward on the path toward healthy eating as a lifestyle.
1.) Drink plenty of water.
Our bodies are about 60% water – with muscle mass carrying much more than fat tissue! We need to drink water to keep our body systems running smoothly, optimize metabolism, boost energy levels, and promote good digestion, just to name a few. Besides water, electrolytes are important especially if you exercise.
2.) Eat plenty of plants.
These colorful gems provide essential phytonutrients, micronutrients, vitamins, minerals and enzymes – all of which are just as important for your health as the macronutrients we often hear about (think carbs, proteins and fats).
3.) Eat and drink often throughout the day.
The jury is still out on whether 6 small meals or 3 meals is best so try to figure out what feels right for you. But overall, having high quality small snacks, “mini meals” or fresh juice during the day can help to boost energy and prevent over-eating.
4.) Eat mindfully.
Limit distractions and take time to experience eating and engage your senses. Up to 30-40% of nutrients may not be properly absorbed if you are distracted while eating. Like walking, watching TV, typing, working – all very common eating activities these days. Digestion begins in the brain so by looking at, thinking about and smelling your food, you can help your body benefit from the wonderful nutrients locked away in that meal while enjoying the experience even more!
5.) Limit processed foods.
Read labels carefully. Make natural, homemade versions of store-bought foods. Like hummus or granola bars, yum!
6.) Seek local foods often and organic foods sometimes.
Local eating not only has more nutrients it can also save you money. You don’t have to get everything organic if that isn’t feasible, for some items it matters more (like apples and strawberries).
7.) Include healthy fats in your diet.
 Many immune supportive vitamins, like Vitamin E or beta-carotene and hormones, like Vitamin D require some fat in the diet for absorption. Pass the avocado, please!
8.) Include healthy rich foods, including plant-based choices.
Protein rich foods can help to reduce reflux and keep blood sugar levels stable while supporting healthy muscles and your immune system. If you want to add more protein to your juices, chia seeds, hemp seeds, spirulina or the Reboot with Joe Protein Powder are great choices.
9.) For weight management focus more on inclusion of healthy foods and less on restriction of portions.
10.) Enjoy eating!


[*Back to Index*](index.md.html)
Mission Sponsor
===============
This mod item allows you to define a mission sponsor. It can be selected in the new game menu and has a significant effect over gameplay. [Here](LuaFunctionDoc_Gameplay.md.html) can be found some useful functions for creating effects.
Gameplay effects for the Mission Sponsor can be defined using [Effects](ModItemEffect.md.html). They can influence global consts in different ways, unlock various gameplay items at game start and impact player structures at different stages of creation. Game effects are the most conveninent way to implement functionality for your Mission Sponsor.
Properties
----------
Id (self.id)
: This is the internal unique id of mission sponsor. It is not visible by users.
Display Name (self.display_name)
: This is the user-visible name of the mission sponsor, visible when choose it in game combo.
Challenge Mod (%) (self.challenge_mod)
: Challenge difficulty bonus (in percent) apply to calculate map difficulty bonus.
Starting Funding (M) (self.funding)
: Starting game funding value.
Tech Funding (M) (self.funding_per_tech)
: Funding earned when tech is researched.
Breakthrough Funding (M) (self.funding_per_breakthrough)
: Funding earned when breakthrough tech is researched.
Breakthrough applicants (self.applicants_per_breakthrough)
: The number of new applicants that are added to waiting ones for each researched breakthrough tech.
Starting Rockets (self.initial_rockets)
: Number of available rockets at game start.
Rocket price (M) (self.rocket_price)
: Rocket price, set to 0 for free rockets.
Applicants price (M) (self.applicants_price)
: Applicants price when not enough and buy new ones for resupply.Set to 0 for getting them free.
Cargo Capacity (self.cargo)
: The maximum payload (in kg) of a resupply Rocket.
Starting Techs to research (self.initial_techs_unlocked)
: The number of initially available Techs to research.
Trait given to colonists (self.trait)
: The trait that each colonist will get.
**Bonus Breakthrough Anomalies (self.anomaly_bonus_breakthrough)**
**Bonus event Anomalies (self.anomaly_bonus_event)**
**Bonus free Tech Anomalies (self.anomaly_bonus_free_tech)**
: When generating a new map anomalies are placed depending on some chance range. These properties increase the probabilities.
Effect (self.effect)
: Text description for users of this sponsor effects. Add implementation in 'Game Apply' function.
Flavor text (self.flavor)
: Artistic text or quote that describes the mission sponsor. It is visible by users.
Parameters (self.param1, self.param2, self.param3, self.param4, self.param5)
: Properties that contain number values - use them in additional code in the Filter and Game Apply properties, if necessary.
Filter (self.filter)
: Lua expression that will be evaluated to check whether to show this mission sponsor in game combo.
Game Apply (function self:game_apply(city))
: Code that is executed at game start. Use functions to implement conditional mission sponsor effects which cannot be defined via [Effects](ModItemEffect.md.html).
Here is an example of a very generous sponsor
~~~~~~~~~ Lua
if IsGameRuleActive("ColonyPrefab") then
GrantTech("SoilAdaptation")
city:AddPrefabs("StirlingGenerator", 2)
city:AddPrefabs("MoistureVaporator", 2)
city:AddPrefabs("Farm", 2)
end
~~~~~~~~~
(insert footer.md.html here)


REST Hotels API: A simple node/express API exercise.
Created as part of technical test for mobile dev role at Hays Recruiting - Almundo.com
This REST API includes the following endpoints:
GET: /v1/cities
GET: /v1/hotels
GET: /v1/hotels?city={city}
GET: /v1/hotels/{id}


Past Blog Articles: Version Control the Git Way Margin, Border, Padding? huh? Arrays vs Hashes! Index! Enumberable#group_by Ruby Instances and Spawns JavaScript Fun!


{% extends "events/base.html" %} {% block title %}Code Jam 4: This Apps Hates You{% endblock %} {% block breadcrumb %}
The theme for code jam 4 was creating a GUI application with the theme this app hates you. 19 randomly assembled teams worked on this task for three days from the 22nd of February, 00:00 UTC.
The original task description, as found in the repository was as follows:
The theme for this code jam will be This app hates you!. You will be creating an application using a GUI library of your choice in Python. The application must serve a real purpose, but must also fit the theme.
Here are a couple of examples of what we mean by an application that "serves a real purpose but also fits the theme":
A calculator app that calculates the right answers, but represents the answer in a way that's completely impractical.
An image resizer where you have to specify which part of the image to resize, specify how much force to apply to the resize operation in newtons, and then manually resize the image by turning a crank.
An alarm clock app that plays a very loud sound effect every 5 minutes reminding you that your alarm will ring in 6 hours. The closer it gets to the 6 hour mark, the lower the volume of the sound effect. When the time is up, the sound effect is virtually inaudible.
If you want to watch the original code jam judging stream, you can find it on YouTube - all of the submissions are showcased in the stream. The winning project is showcased at around the 40 minute mark.
The winning team for this code jam was the team Cool Crocodiles, consisting of Runew0lf, gl4cial, and syntaxaire. They created a text editor called CrocPad++ featuring an infuriating troubleshooter that would pop up every five or so characters, sound effects when you type, the ability to insert symbols by turning a dial, a theme "for blind users", and many more features.
The first runner up for this code jam was the team Enthusiastic Electricians, who made a paint tool called ArtiQule where the pencil point would break, colors would blend together on your palette, and the paint brush would drip onto the canvas.
The second runner up for this code jam was the team Slithering Snacks. They ade a media player where you had to fill out a CAPTCHA every time you wanted to load a file, register an account, and confirm your password to log in by typing it with all the characters in alphabetic order.
While they didn't make it on top of the ladder, the following submissions have stood out exceptionally:
Team Blue Buckets won best code quality with their Tinder for Cats.
Team Overjoyed Otolaryngologists won best looking UI with their sleek Minesweeper game where you had to press each tile up to 100 times to break it and only got one flag.
Team High Houses won best idea with an on-screen keyboard where you only got some of the keys and additional keys had to be unlocked by gaining XP, leveling up, and getting loot boxes.


A
LT
Admin
LTE
Toggle navigation
权限管理系统
hot
内容管理系统
hot
{{menusList}}
hot
4
You have 4 messages
Support Team
5 mins
Why not buy a new awesome theme?
AdminLTE Design Team
2 hours
Why not buy a new awesome theme?
Developers
Today
Why not buy a new awesome theme?
Sales Department
Yesterday
Why not buy a new awesome theme?
Reviewers
2 days
Why not buy a new awesome theme?
See All Messages
10
You have 10 notifications
5 new members joined today
Very long description here that may not fit into the page and may cause design problems
5 new members joined
25 sales made
You changed your username
View all
9
You have 9 tasks
Design some buttons
20%
20% Complete
Create a nice theme
40%
40% Complete
Some task I need to do
60%
60% Complete
Make beautiful transitions
80%
80% Complete
View all tasks
Alexander Pierce
Alexander Pierce - Web Developer
Member since Nov. 2012
Followers
Sales
Friends
Profile
Sign out
页签操作
刷新当前
关闭当前
全部关闭
除此之外全部关闭


{% extends "base.html" %} {% block app_content %}
It looks like you've requested a page that no longer exists, never existed in the first place, or exists somewhere else. Take another look at the URL or click below to go back to the previous page
{% endblock %}


Prof. John Lindsay's Lectures
Fall 2015
GEOG*2420 The Earth From Space
Lecture 1: Course Intro
Lecture 2: History of Earth Imaging
Lecture 3: Electromagnetic Radiation
Lecture 4: Colour Theory and Digital Imagery
Lecture 5: Resolution
Lecture 6: Airborne and Spaceborne Imaging Systems Part 1
Lecture 7: Airborne and Spaceborne Imaging Systems Part 2
Lecture 8: Filters and Photographic Film
Lecture 9: Flight Planning
Lecture 10: Photogrammetry Pt. 1
Lecture 11: Photogrammetry Pt. 2
Lecture 12: Photogrammetry Pt. 3
GEOG*3480 GIS and Spatial Analysis
Lecture 1: Introduction
Lecture 2: Geospatial Data Part 1
Lecture 2: Geospatial Data Part 2
Lecture 2: Geospatial Data Part 3
Lecture 3: Data Quality Part 1
Lecture 3: Data Quality Part 2
Lecture 4: Basic Raster and Vector Analysis Part 1
Lecture 4: Basic Raster and Vector Analysis Part 2
Lecture 4: Basic Raster and Vector Analysis Part 3
Lecture 5: Statistical Analysis of Spatial Data
Lecture 9: Least-cost Pathway Analysis
Guest Talks
DEM-Based Flowpath Enforcement
Issues in DEM-based Flow-path Modelling


Riverdimes Frontend for Lundkvist Simple MultiSig Wallet
New wallet
Import Wallet
View Wallet
Transaction
Source Code
Credits
Help
Add Account
Owners
Deploy This Wallet!
Load Wallet
Owners
Save this wallet
Owners
Save this wallet
Transaction Info
To:
Value:
Eth
Wei
Nonce:
Data:
Hash:
Owner Signatures
Sign this transaction
Execute this transaction
×


Standings
ID
Team Name
Wins
Loses
Team Name:
Manager name:
Manager Cell Phone #:
Manager Address
Street 1:
Street 2:
City:
State:
Zip:
Sponsor Name:
Credit Card:
AmEx
Visa
Master Card
Card Number:
Exp Date
×
Click Me For A Modal


Clorox: The IGNITE Strategy Has Not 'Ignited' Our Optimism On Growth
by Urbem CapitalSummary
- The new IGNITE Strategy is not compelling enough to us from a growth perspective.
- In light of our growth estimate based on the Strategy, the current stock price does not make sense for value/quality investors to add new shares.
- The lack of a strong growth engine does not prevent Clorox from being a good company, and we are willing to hold the shares for the foreseeable future.
Source: cnbc.com.
Background
At the Analyst Day event early last month, a troop of Clorox's (CLX) top executives took the stage. They unveiled a new, integrated strategy to drive growth and create value for shareholders (and society). Leaping off the company's recently concluded 2020 Strategy, the so-called "IGNITE" Strategy would focus on "innovating for good growth."
However, after spending more than four hours listening to presentations from roughly a dozen senior managers, we did not feel our immediate excitement regarding the new growth strategy.
Per the chart below, we see little alpha generated by CLX compared to the S&P 500 total return over the past decade, while the stock did outperform its industry average.
Source: Morningstar; data as of 11/13/2019.
One of the reasons here is that the growth of the business did slow down for the last decade compared with the decade before, in terms of both accounting income and cash flow (see below).
Source: GuruFocus; data as of 11/13/2019.
As a matter of fact, we see below that 1-2% is a typical top-line CAGR for Clorox. This implies that most of the shareholder value was created by margin improvement, share buyback, and dividend on the organic side. For example, the payout ratio increased from 47.2% in FY2010 to 62.8% in FY2019.
Source: Morningstar; data as of 11/13/2019.
While we appreciate the substantial moat around the business, the IGNITE Strategy does not mitigate our concern in terms of the company's growth prospects. A moaty business is still a good business even though it cannot grow from our investment perspective. But then, for Clorox, we would hesitate to see any buying opportunity in the share at this valuation level.
Business Overview
Century-old California-based Clorox now owns a diversified, US-centric portfolio of cleaning (34% of FY2019 US sales), household (30% of FY2019 US sales), and lifestyle products (20% of FY2019 US sales). 84% of the company's total revenue comes from the US, while internationally, sales are mostly generated in Latin America and Canada.
Clorox builds its economic moat mainly through its big-share brands. Its #1 and #2 share brands typically contribute to nearly 80% of the total sales，, and nine out of ten US households have a Clorox portfolio product. As you can see below, Clorox dominates the charcoal, bleach, water filtration, and wipes categories with well-known brands like Kingsford, Clorox, and Brita.
Source: FY2020 Q1 Investor Presentation.
Besides, the company focuses on mid-sized categories, the US market, and mid-sized countries in the international market to avoid fierce competition, making its economic moat more durable. Shareholders should also applaud the management's focus on economic profit instead of pure growth, which helps deliver consistently high ROIC in history (see below).
Source: GuruFocus; data as of 11/13/2019.
IGNITE Strategy
The IGNITE Strategy disappointed us a couple of ways as follow -
Cost-saving
First of all, the management team mentioned cost-saving several times during the presentation. It appears to us that the company tries to leverage margin enhancement as one of the primary growth strategies. However, we all know that cost cannot be cut beyond zero, and hence, such a growth driver would not sustain in the long term.
Actually, the current SG&A margin is already below the industry average (see below), with seemingly limited room for cost optimization.
Source: FY19 Q4 Investor Presentation.
ESG
Then, many executives spent quite some time emphasizing the ESG element of the Strategy. In our opinion, ESG can hardly qualify as a differentiator in today's business world. In other word, all companies should aim to conduct businesses with ESG in mind.
Of course, the management referred to the trend of purpose-led brands among millennials and Gen Z. But we are not sure about the magnitude of that trend in terms of contributing to the top-line growth at Clorox. Plus, the premium brand strategy, while differentiating Clorox from commoditized, low-cost alternatives, such as private labels, may weaken the company's defensive position facing budget-conscious consumers, especially if a recession hits.
Innovation
The management's emphasis on innovation is probably the only bright spot that we could find throughout the presentions.
The company has a strong track record of generating profitable growth from R&D. As shown below, it delivered approximately 3% of incremental sales behind product innovation each year over the last decade or so.
Source: FY19 Q4 Investor Presentation.
According to Morningstar below, Clorox invests at least 2% of its total sales back into R&D annually for the past ten years. We will see if this number will go up soon following the kick-off of the IGNITE Strategy.
Source: Morningstar; data as of 11/13/2019.
Either way, the new product pipeline is looking strong to us (see some examples below).
Source: FY19 Q4 Investor Presentation.
It is also worth pointing out that the management plan to put more effort into digitals. We notice that Gartner ranks Clorox at the top in the US Home Care category and Burt's Bees at the third place in the US Personal Care category according to its Digital IQ Index (see below).
Source: gartner.com.
Source: gartner.com.
We believe that continuous spendings on digitals should help widen the moat for the business as well as maintain the double-digit growth in online sales (although representing just less than 10% revenue share at the moment).
Financial goal
The most disappointment on the IGNITE Strategy, we would say, is the financial goals. As you can see in the slides below, the management expects to achieve a low-single-digit CAGR in revenue by executing the Strategy, while the recent three-year CAGR is almost 3%.
Source: 2019 Analyst Day Presentation.
Moreover, the management projects the FCF margin to be between 11% and 13%, while it achieved 12% on average for the past few years, and the TTM margin is currently 12.67%.
Overall, we would like to maintain our 5% estimate in the growth rate of EPS and FCF per share at Clorox, based on the IGNITE Strategy.
Valuation
Below, we compare the key business fundamentals between Clorox and its major peers.
| ROTA | FCF Margin | 3-yr Rev. CAGR | |
| Clorox | 31.89% | 12.67% | 2.56% |
| Colgate-Palmolive (CL) | 28.05% | 17.33% | -1.03% |
| Unilever (UN) (UL) | 29.75% | 9.58% | -1.45% |
| Proctor & Gamble (PG) | 7.81% | 18.17% | 1.2% |
| Church & Dwight (CHD) | 32.15% | 17.34% | 6.89% |
| Kimberly-Clark (KMB) | 10.59% | 8.59% | -0.19% |
Source: Morningstar, GuruFocus; data as of 11/13/2019.
We can learn that Clorox delivers a "mediocre" ROTA, FCF margin, and current growth rate and underperforms its mid-sized-category peer, Church & Dwight.
In terms of price multiples, CLX seems as expensive as CHD, CL, and KMB (see below).
| P/E | P/FCF | EV/EBIT | |
| Clorox | 23x | 24x | 19x |
| Colgate-Palmolive | 25x | 21x | 19x |
| Unilever | 15x | 28x | 13x |
| Proctor & Gamble | 80x | 25x | 46x |
| Church & Dwight | 27x | 23x | 22x |
| Kimberly-Clark | 23x | 29x | 19x |
Source: Morningstar, GuruFocus; data as of 11/13/2019.
From a historical perspective, most prevailing price multiples of CLX, such as P/E, P/B, P/CF, are below their historical averages.
Source: Morningstar; data as of 11/12/2019.
The P/FCF is current near the mid-point of its moving range for the past couple of years, as you can see below. But it is significantly higher than the level back in 2010/2011.
Source: GuruFocus; data as of 11/13/2019.
Also, if we assume a 5% CAGR moving forward, then any P/FCF above 20x would be crazy for us. In this case, we would prefer an entry point with the P/FCF close to 15x. This means that CLX is currently significantly overvalued per our standard.
Summary
To conclude, the IGNITE Strategy has not "ignited" our optimism on the growth prospect of the company. Of course, we hope that we are wrong and will keep our eyes on the execution of the strategy and its financial outcome.
In the meantime, the lack of a compelling growth story does not prevent Clorox from being a good company. The economic moat around the business remains robust in our view, and that's why we are willing to hold the shares for the foreseeable future.
Disclosure: I am/we are long CLX. I wrote this article myself, and it expresses my own opinions. I am not receiving compensation for it (other than from Seeking Alpha). I have no business relationship with any company whose stock is mentioned in this article.
Additional disclosure: Mentioning of any stock in the article does not constitute investment recommendations. Investors should always conduct careful analysis themselves and/or consult with their investment advisors before acting in the stock market.


kwrite path/to/file- Open multiple text files:
kwrite file1 file2 ...- Open a text file with a specific encoding:
kwrite --encoding=UTF-8 path/to/file- Open a text file and navigate to a specific line and column:
kwrite --line line_number --column column_number path/to/file


|
|
Container_bptreeClasses of containers and B+ trees |
The class templates of associative containers of the namespace
container_bptree
:
map , multimap , set , multiset
provide variants of interfaces of corresponding STL containers.
The class container_bptree::sequence
defines a union of interfaces
of three STL containers vector
, list
and deque
.
This new class can be used in algorithms, which require any of these STL containers.
All of the classes listed above are container adapters. A template-argument for a template-parameter of a basic container type can be one of the following classes:
bp_tree , bp_tree_idx , bp_tree_idx_acc ;
Abbreviations used in the names of these classes are explained as follows:
"idx" - "support for efficient indexing of container elements""acc" - "support for efficient algorithm accumulate() "
|
Every basic container implements a specific B+ tree with properties, interface
functions and iterators, which define a number of STL variants of instantiated containers
and their performance. These B+ trees have been adjusted to provide the best possible
support for container adapters of the namespace container_bptree
. For this
reason, classes of these basic containers may not be safe enough when used in algorithms
directly.
The current version of the library container_bptree
can be used to
generate 14 variants of STL containers shown in the next table.
map |
multimap |
set |
multiset |
sequence |
|
bp_tree |
+ | + | + | + | |
bp_tree_idx |
+ | + | + | + | + |
bp_tree_idx_acc |
+ | + | + | + | + |
For examples on how to use these class templates to generate classes of STL variants of
containers, see the code in the file "test_container.hpp"
and
the section Examples.
All of the basic containers of the namespace container_bptree
provide
the same efficiency of sequential access to data and the same logarithmic complexity
of the main operations that insert, erase and find a single element of a container.
Thus, the best specific application areas for these containers are defined mostly by the
category of iterators and the improved efficiency of the algorithm
accumulate()
.
The class bp_tree
represents a B+ tree, which supports the main
operations of a search tree such as a B-tree or a red-black tree, but provides more
efficient sequential access to container elements. This class implements bidirectional
iterators, which have constant cost of increment and decrement operators in the worst
case. Containers of the namespace container_bptree
based on the
class bp_tree
will improve the performance of algorithms, which require
efficient search and update operations along with sequential access to data stored
in these containers. Bidirectional iterators also have another important property,
which is often required in algorithms, namely that container update operations do not
invalidate these iterators.
The class bp_tree
supports STL variants of associative containers,
but it does not support the class container_bptree::sequence
due to the
inefficiency of bidirectional iterators. The new classes of associative containers
are close equivalents of corresponding container classes of the C++ standard library,
which are normally based on red-black trees.
The class bp_tree
supports the same interfaces as other types of
B+ trees of the namespace container_bptree
. This approach improves
the consistency of containers interfaces and extends the set of options available
for the development of generic solutions. However, the new containers of the namespace
container_bptree
implement interfaces, which are somewhat different
from STL. Consequently, in some algorithms these containers cannot be replaced
directly by corresponding STL containers.
The class bp_tree_idx
provides the optimized support for sequence
containers; thus, it can be used to generate an STL variant of a container class
from any container adapter. The main additional feature of the data structure
implemented in this class is efficient mapping of non-negative integers into
elements of a container. Any STL variant of a container using the class
bp_tree_idx
obtains random access iterators with the cost of many
operators practically the same as that of iterators of std::vector
.
It is necessary to note that the support of random access iterators enables algorithms
to use a corresponding container as an efficient sequence even when this container does not
provide direct access to mapping of non-negative integers into container elements through
the subscript operator[]
and the member function at()
, which
represent a traditional and widely used mathematical form of this mapping in C++.
A random access iterator can represent a position of an element in a sequence,
since it supports the semantics of not only pointers, but also integer types.
Algorithms based on random access iterators of the namespace container_bptree
gain the advantage of extended functionality and improved safety. For more details,
see the section Random access iterators.
The C++ standard library expands its application area by providing various types of
optimized containers [1]. In particular, it includes three sequences: vector
,
deque
and list
, since each of these has a limited application
area due to having at least one inefficient operation with linear running time.
For vector
and deque
, these are the member functions
insert()
and erase()
for a single element. list
and associative containers support bidirectional iterators, which are inefficient in
algorithms that access elements at random positions.
The class bp_tree_idx
provides efficient access to data through random
access iterators as well as basic insert and erase methods with logarithmic computational
cost. This is why STL variants of containers based on the class bp_tree_idx
may improve the performance of algorithms using standard containers with at least one
inefficient operation, which has linear running time. In the general case, the wider
the variety of operations, which are required in a user algorithm, the more significant
should be the performance improvement provided by new containers. The containers
with efficient indexing of elements and random access iterators should be particularly
useful in algorithms, which in addition to sequential processing frequently insert,
erase and access elements at random positions in a container.
The sequences based on the class bp_tree_idx
extend support for algorithms,
which is provided by STL. The sequences of the C++ standard library (vector
,
deque
and list
) implement different interfaces. This fact
narrows the application area of these standard containers. The class sequence
of the namespace container_bptree
implements a union of STL sequences.
Thus, if required, a new sequence container can replace any STL sequence. The increase
in the number of sequence containers supporting STL interfaces is beneficial for the
development of algorithms, which require a wide set of basic sequence operations and
methods. The new sequences have the potential to take place of the second best choice
after vector
, which rerpesents default STL sequence.
As for associative containers and algorithms using the class bp_tree_idx
,
they can also obtain a significant advantage of the more general sequence support and
more efficient random access iterators. For example, the member function
count()
of new associative containers with random access iterators returns
the number of elements with key k for O(log N) time. For STL containers with
bidirectional iterators the same result can be obtained for O(K + log N) time,
where N is the number of elements in a container and K is the number of
elements with key k. The section Examples shows how to
find the number of intersections of one interval with a sequence of intervals in
O(log N) time using new associative containers with random access iterators.
The class bp_tree_idx_acc
supports interface containers with random
access iterators and adds support for the efficient algorithm accumulate()
,
which has computational cost O(log N) in the worst case, where N is the
number of consecutive elements within a range specified by input iterators. This class
can be used as a basic container for sequences and associative containers of the
namespace container_bptree
. The class bp_tree_idx_acc
requires
that the operators +, -, +=, -=
be defined for the type of the container
element and assumes that the cost of these operators is O(1).
The STL function accumulate()
represents a generalized algorithm, which
calculates a result of a binary operation applied to a sequence of elements. In
particular, this algorithm is fundamental to many numerical applications, which require
the calculation of the sum of the values of consecutive container elements. The STL
variants of containers based on the class bp_tree_idx_acc
can be directly
used in application areas such as:
For other binary operations such as multiply and divide an algorithm can define a
type, which provides corresponding operations through operators +, -, +=, -=
of the container element of the class bp_tree_idx_acc
. The definition of
such operations must be mathematically correct. An algorithm using such types should
make sure to insert into a container only valid elements, which do not cause a problem
like division by zero. The precision of the element type should be sufficient to avoid
overflow and underflow errors, and to reduce loss of accuracy of a user algorithm
to a specified limit. For an example of this approach, see the file
"geometric_mean.cpp". This example demonstrates how the fast algorithm
accumulate()
can be applied to the calculation of the geometric mean value.
Since each update operation for a single element in a container with N elements has maximum cost O(log N), an increase in the performance of a user algorithm can be even more significant if, in addition to calculating the sum of elements, it requires an improvement in accuracy through the insertion of correction data. The high efficiency of all interface operations and algorithms makes these STL variants of containers particularly attractive for adaptive numerical methods.
This example is quite simple and useful in numerous problems. It also demonstrates how the performance of an algorithm based on new containers is improved compared to C++ standard containers and algorithms.
For any STL variant of a container, which uses the efficient algorithm
accumulate()
of the class bp_tree_idx_acc
, the mean value of
N consecutive elements can be determined as shown in this demo code:
sum = data_container . accumulate ( pos_start , pos_end , 0 ) ; n = pos_end - pos_start ; mean = sum / n ;
This method of calculation has the total cost of only O(log N) in the worst
case. The mean value requires the calculation of two values: the sum of elements and
the number of elements. The efficient algorithm accumulate()
finds the first
value for O(log N) steps. The cost associated with the second value is negligible,
since random access iterators allow the determination of the number of consecutive
elements in constant time.
The support of random access iterators, which use efficient mapping of
non-negative integers into container elements, is an important detail in achieving
the low computational cost of the calculation of the mean value. If, for a example, a
container would implement a fast algorithm accumulate()
and bidirectional
iterators, the total cost of the calculation of the mean value would increase to
O(N) as a result of counting elements by the method
n = std::distance ( pos_start , pos_end ) ;
For STL containers the best performance of the calculation of the mean value can be
achieved with std::vector
, which supports random access iterators. A method
based on this container has total cost O(N), which is the cost of calculating
the sum of elements using the STL method
sum = std::accumulate ( pos_start , pos_end , 0 ) ;
New containers with the efficient algorithm accumulate()
and random access
iterators can be also used to simultaneously calculate the standard deviation of a data set
along with the mean value in the same logarithmic time. This can be achieved by storing
squared values in addition to the original values of the elements. The efficiency of the
calculation of the second parameter of data comes at the cost of the increased space
requirement. This and other more advanced applications of new containers are discussed
in the next section Examples.
Revised 03 December, 2011
Copyright © 2011
Vadim Stadnik
<EMAIL_ADDRESS>Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)


Toggle navigation
MigApps - Two click Authentication
About
Services
Contact
Login
Login By Simply
Sending An Email
No apps to download
No special hardware needed
No customer opt in required
NOT A PASSWORD MANAGER
Passwords are not stored, they are never generated
BENEFITS
User friendly Login - No need to type password
More secure - Digital keys is more effective than password in offering security
No need to remember passwords
Universal solution to password
Bypass confirmation email process
Connect to Know More:
Twitter
Github
Linkedin


{% load static %} {% include 'head.html' %}
PassengerCOVIDscan
Configure the camera to start the automate GLOVES testing of the passenger to minimize the exposure of the disease.


About:
Void Scribe is a publicly available API that currently supports basic generation of names through Markov Generation as well as creation of basic myth, quest, adjective, hero, and tale structures. Void Scribe will be developed into a publicly available Narrative Generation API. Void Scribe is being developed as part of a school project by team MachineLearningMadlads.
Source Code:
Python Package - Void Web - Void React
Directory
Usage - Name Types - Sentence Types - Try It!
Contact Us:
machinelearningmadlads@gmail.com


2350
-10%
This Week
487
-10%
This Week
169
-10%
This Week
15
-10%
This Week
London
1523
Mumbai
773
New Delhi
737
New York
566


{%extends "layout.html"%} {%block content%}
We Embrace your hobby anywhere,anytime,anyplace,and make resources cheaper than you ever thought.


We take pride in our work and only deliver the highest quality workmanship. You can count on us for beautiful
remodel or repair, anywhere! If your home needs it we can do it! We have 30 years of experience in nearly every aspect of home renovation making One Call your go to for all of your needs!!
If your needs aren't listed here, please give us a call, we can likely help.
Tile
Carpet
Hardwood
Cabinets
Counter Tops
Lighting
Painting
Repair Water Damage
Plumbing
Electrical
Landscaping
Limb Cutting
Decks
Roofing
Lawn Care
Patio
Tree Removal
Clean Up Services


| Class and Description |
|---|
| QATestUtils.SrvcAttrTuple
Class which models an event "tuple" (service,attribute,transition).
|
| Class and Description |
|---|
| QATestRegistrar
Besides providing implementations for the abstract methods of the
super class (QATestEnvironment), this class is the common super class of
all QA test classes of the Lookup component of the Jini System.
|
| QATestRegistrar.BasicListener |
| Class and Description |
|---|
| QATestRegistrar
Besides providing implementations for the abstract methods of the
super class (QATestEnvironment), this class is the common super class of
all QA test classes of the Lookup component of the Jini System.
|
| QATestUtils.SrvcAttrTuple
Class which models an event "tuple" (service,attribute,transition).
|
| Class and Description |
|---|
| QATestRegistrar
Besides providing implementations for the abstract methods of the
super class (QATestEnvironment), this class is the common super class of
all QA test classes of the Lookup component of the Jini System.
|
| QATestUtils.SrvcAttrTuple
Class which models an event "tuple" (service,attribute,transition).
|
| Class and Description |
|---|
| QATestRegistrar
Besides providing implementations for the abstract methods of the
super class (QATestEnvironment), this class is the common super class of
all QA test classes of the Lookup component of the Jini System.
|
| Class and Description |
|---|
| QATestRegistrar
Besides providing implementations for the abstract methods of the
super class (QATestEnvironment), this class is the common super class of
all QA test classes of the Lookup component of the Jini System.
|
Copyright 2007-2013, multiple authors.
Licensed under the Apache License, Version 2.0, see the NOTICE file for attributions.


SPTPlaylistSnapshot Class Reference
| Inherits from | SPTPartialPlaylist : SPTJSONObjectBase : NSObject |
| Conforms to | SPTJSONObject |
| Declared in | SPTPlaylistSnapshot.h |
Overview
Represents a user’s playlist on the Spotify service.
API Docs: https://developer.spotify.com/web-api/playlist-endpoints/
API Console: https://developer.spotify.com/web-api/console/playlists/
API Model: https://developer.spotify.com/web-api/object-model/#playlist-object-full
Playlist Guide: https://developer.spotify.com/web-api/working-with-playlists/
Example:
[SPTPlaylistSnapshot playlistWithURI:[NSURL URLWithString:@"spotify:user:spotify:playlist:2ujjMpFriZ2nayLmrD1Jgl"]
accessToken:accessToken
callback:^(NSError *error, SPTPlaylistSnapshot *object) {
NSLog(@"tracks on page 1 = %@", [object.firstTrackPage tracksForPlayback]);
[object.firstTrackPage requestNextPageWithAccessToken:accessToken
callback:^(NSError *error, id object) {
NSLog(@"tracks on page 2 = %@", [object tracksForPlayback]);
}];
}];
Tasks
Properties
-
firstTrackPage
property -
snapshotId
property -
followerCount
property -
descriptionText
property
Requesting Playlists
-
+ playlistWithURI:accessToken:callback:
-
+ playlistsWithURIs:accessToken:callback:
-
+ isPlaylistURI:
-
+ isStarredURI:
-
+ requestStarredListForUser:withAccessToken:callback:
Helper methods for playlist manipulation
-
– addTracksToPlaylist:withAccessToken:callback:
-
– addTracksWithPositionToPlaylist:withPosition:accessToken:callback:
-
– replaceTracksInPlaylist:withAccessToken:callback:
-
– changePlaylistDetails:withAccessToken:callback:
-
– removeTracksFromPlaylist:withAccessToken:callback:
-
– removeTracksWithPositionsFromPlaylist:withAccessToken:callback:
Playlist manipulation request creation methods
-
+ createRequestForAddingTracks:toPlaylist:withAccessToken:error:
-
+ createRequestForAddingTracks:atPosition:toPlaylist:withAccessToken:error:
-
+ createRequestForSettingTracks:inPlaylist:withAccessToken:error:
-
+ createRequestForChangingDetails:inPlaylist:withAccessToken:error:
-
+ createRequestForRemovingTracksWithPositions:fromPlaylist:withAccessToken:snapshot:error:
-
+ createRequestForRemovingTracks:fromPlaylist:withAccessToken:snapshot:error:
-
+ createRequestForPlaylistWithURI:accessToken:error:
Response parser methods
Properties
descriptionText
The description of the playlist
@property (nonatomic, readonly, copy) NSString *descriptionText
Declared In
SPTPlaylistSnapshot.h
firstTrackPage
The tracks of the playlist, as a page of SPTPartialTrack
objects.
@property (nonatomic, readonly) SPTListPage *firstTrackPage
Declared In
SPTPlaylistSnapshot.h
Class Methods
createRequestForAddingTracks:atPosition:toPlaylist:withAccessToken:error:
Create a request for adding tracks to the playlist at a certain position.
+ (NSURLRequest *)createRequestForAddingTracks:(NSArray *)tracks atPosition:(int)position toPlaylist:(NSURL *)playlist withAccessToken:(NSString *)accessToken error:(NSError **)error
Parameters
- tracks
The tracks to add, as
SPTTrack
,SPTPartialTrack
orNSURL
objects.
- position
The position in which the tracks will be added, being 0 the top position.
- playlist
The playlist to manipulate.
- accessToken
An authenticated access token. Must be valid and authorized with the
playlist-modify-public
orplaylist-modify-private
scope as necessary.
- error
An optional pointer to a
NSError
object that will be set if an error occured.
Return Value
A NSURLRequest
object
Discussion
Note: This operation is asynchronous on the server, it can take a couple of seconds for your changes to propagate everywhere after this operation has started.
Declared In
SPTPlaylistSnapshot.h
createRequestForAddingTracks:toPlaylist:withAccessToken:error:
Create a request for appending tracks to a playlist.
+ (NSURLRequest *)createRequestForAddingTracks:(NSArray *)tracks toPlaylist:(NSURL *)playlist withAccessToken:(NSString *)accessToken error:(NSError **)error
Parameters
- tracks
The tracks to add, as
SPTTrack
,SPTPartialTrack
orNSURL
objects.
- playlist
The playlist to manipulate.
- accessToken
An authenticated access token. Must be valid and authorized with the
playlist-modify-public
orplaylist-modify-private
scope as necessary.
- error
An optional pointer to a
NSError
object that will be set if an error occured.
Return Value
A NSURLRequest
object
Discussion
Note: This operation is asynchronous on the server, it can take a couple of seconds for your changes to propagate everywhere after this operation has started.
Declared In
SPTPlaylistSnapshot.h
createRequestForChangingDetails:inPlaylist:withAccessToken:error:
Change playlist details
+ (NSURLRequest *)createRequestForChangingDetails:(NSDictionary *)data inPlaylist:(NSURL *)playlist withAccessToken:(NSString *)accessToken error:(NSError **)error
Parameters
- data
The data to be changed. Use the key constants to refer to the field to change (e.g.
SPTPlaylistSnapshotNameKey
,SPTPlaylistSnapshotPublicKey
). When passing boolean values, use @YES or @NO.
- playlist
The playlist to manipulate.
- accessToken
An authenticated access token. Must be valid and authorized with the
playlist-modify-public
orplaylist-modify-private
scope as necessary.
- error
An optional pointer to a
NSError
object that will be set if an error occured.
Return Value
A NSURLRequest
object
Discussion
Note: This operation is asynchronous on the server, it can take a couple of seconds for your changes to propagate everywhere after this operation has started.
Example: NSURLRequest *req = [SPTPlaylistSnapshot createRequestForChangingDetails:@{ @“name”: @“New name!”, @“public”: @(false) } inPlaylist:[NSURL URLWithString:@“spotify:user:username234:playlist:playlistid123”] withAccessToken:@“xyz123” error:&err];
Declared In
SPTPlaylistSnapshot.h
createRequestForPlaylistWithURI:accessToken:error:
Create a request to fetch a single playlist
+ (NSURLRequest *)createRequestForPlaylistWithURI:(NSURL *)uri accessToken:(NSString *)accessToken error:(NSError **)error
Parameters
- uri
The playlist to get.
- accessToken
An authenticated access token. Must be valid and authorized with the appropriate scope as necessary.
- error
An optional pointer to a
NSError
object that will be set if an error occured.
Return Value
A NSURLRequest
object
Discussion
Note: This operation is asynchronous on the server, it can take a couple of seconds for your changes to propagate everywhere after this operation has started.
Declared In
SPTPlaylistSnapshot.h
createRequestForRemovingTracks:fromPlaylist:withAccessToken:snapshot:error:
Remove tracks from playlist.
+ (NSURLRequest *)createRequestForRemovingTracks:(NSArray *)tracks fromPlaylist:(NSURL *)playlist withAccessToken:(NSString *)accessToken snapshot:(NSString *)snapshotId error:(NSError **)error
Parameters
- tracks
An array of
SPTTrack
,SPTPartialTrack
orNSURL
objects.
- playlist
The playlist to manipulate.
- accessToken
An authenticated access token. Must be valid and authorized with the
playlist-modify-public
orplaylist-modify-private
scope as necessary.
- snapshotId
The playlist snapshotId to manipulate.
- error
An optional pointer to a
NSError
object that will be set if an error occured.
Return Value
A NSURLRequest
object
Discussion
Note: This operation is asynchronous on the server, it can take a couple of seconds for your changes to propagate everywhere after this operation has started.
Declared In
SPTPlaylistSnapshot.h
createRequestForRemovingTracksWithPositions:fromPlaylist:withAccessToken:snapshot:error:
Remove tracks that are in specific positions from playlist.
+ (NSURLRequest *)createRequestForRemovingTracksWithPositions:(NSArray *)tracks fromPlaylist:(NSURL *)playlist withAccessToken:(NSString *)accessToken snapshot:(NSString *)snapshotId error:(NSError **)error
Parameters
- tracks
An array of dictionaries with 2 keys:
track
with the track to remove, asSPTTrack
,SPTPartialTrack
orNSURL
objects, andpositions
that is an array of integers with the positions the track will be removed from.
- playlist
The playlist to manipulate.
- accessToken
An authenticated access token. Must be valid and authorized with the
playlist-modify-public
orplaylist-modify-private
scope as necessary.
- snapshotId
The playlist snapshotId to manipulate.
- error
An optional pointer to a
NSError
object that will be set if an error occured.
Return Value
A NSURLRequest
object
Discussion
Note: This operation is asynchronous on the server, it can take a couple of seconds for your changes to propagate everywhere after this operation has started.
Example: NSURLRequest *req = [SPTPlaylistSnapshot createRequestForRemovingTracksWithPositions:@[ @{ @“track”: [NSURL URLWithString:@“spotify:track:a”], @“positions”: @[ @(3) ] }, @{ @“track”: [NSURL URLWithString:@“spotify:track:b”], @“positions”: @[ @(5), @(6) ] } ] fromPlaylist:[NSURL URLWithString:@“spotify:user:username:playlist:playlistid”] withAccessToken:@“xyz123” snapshot:@“snapshot!” error:&err];
Declared In
SPTPlaylistSnapshot.h
createRequestForSettingTracks:inPlaylist:withAccessToken:error:
Replace all the tracks in a playlist, overwriting any tracks already in it
+ (NSURLRequest *)createRequestForSettingTracks:(NSArray *)tracks inPlaylist:(NSURL *)playlist withAccessToken:(NSString *)accessToken error:(NSError **)error
Parameters
- tracks
The new tracks, as
SPTTrack
,SPTPartialTrack
orNSURL
objects.
- playlist
The playlist to manipulate.
- accessToken
An authenticated access token. Must be valid and authorized with the
playlist-modify-public
orplaylist-modify-private
scope as necessary.
- error
An optional pointer to a
NSError
object that will be set if an error occured.
Return Value
A NSURLRequest
object
Discussion
Note: This operation is asynchronous on the server, it can take a couple of seconds for your changes to propagate everywhere after this operation has started.
Declared In
SPTPlaylistSnapshot.h
isPlaylistURI:
Check if a NSURL
is a valid playlist uri.
+ (BOOL)isPlaylistURI:(NSURL *)uri
Parameters
- uri
The Spotify URI of the playlist.
Declared In
SPTPlaylistSnapshot.h
isStarredURI:
Check if a NSURL
is a starred uri.
+ (BOOL)isStarredURI:(NSURL *)uri
Parameters
- uri
The Spotify URI of the playlist.
Declared In
SPTPlaylistSnapshot.h
playlistSnapshotFromData:withResponse:error:
Parse the response from an API call into an SPTPlaylistSnapshot
object
+ (instancetype)playlistSnapshotFromData:(NSData *)data withResponse:(NSURLResponse *)response error:(NSError **)error
Parameters
- data
The API response data
- response
The API response object
- error
An optional pointer to an
NSError
that will receive the error code if operation failed.
Return Value
The SPTPlaylistSnapshot
object
Declared In
SPTPlaylistSnapshot.h
playlistSnapshotFromDecodedJSON:error:
Parse the response from an API call into an SPTPlaylistSnapshot
object
+ (instancetype)playlistSnapshotFromDecodedJSON:(id)decodedObject error:(NSError **)error
Parameters
- decodedObject
The decoded JSON object structure
- error
An optional pointer to an
NSError
that will receive the error code if operation failed.
Return Value
The SPTPlaylistSnapshot
object
Declared In
SPTPlaylistSnapshot.h
playlistWithURI:accessToken:callback:
Request the playlist at the given Spotify URI.
+ (void)playlistWithURI:(NSURL *)uri accessToken:(NSString *)accessToken callback:(SPTRequestCallback)block
Parameters
- uri
The Spotify URI of the playlist to request.
- accessToken
An authenticated access token. Must be valid and authorized with the unspecified or
playlist-read-private
scope as necessary.
- block
The block to be called when the operation is complete. The block will pass a Spotify SDK metadata object on success, otherwise an error.
Discussion
Note: This method takes Spotify URIs in the form spotify:*
, NOT HTTP URLs.
Declared In
SPTPlaylistSnapshot.h
playlistsWithURIs:accessToken:callback:
Request multiple playlists given an array of Spotify URIs.
+ (void)playlistsWithURIs:(NSArray *)uris accessToken:(NSString *)accessToken callback:(SPTRequestCallback)block
Parameters
- uris
An array of Spotify URIs.
- accessToken
An authenticated access token. Must be valid and authorized with the unspecified or
playlist-read-private
scope as necessary.
- block
The block to be called when the operation is complete. The block will pass an array of Spotify SDK metadata objects on success, otherwise an error.
Discussion
Note: This method takes an array of Spotify URIs in the form spotify:*
, NOT HTTP URLs.
Declared In
SPTPlaylistSnapshot.h
requestStarredListForUser:withAccessToken:callback:
Request the starred playlist for a user
+ (void)requestStarredListForUser:(NSString *)username withAccessToken:(NSString *)accessToken callback:(SPTRequestCallback)block
Parameters
- username
The user to get the starred playlist for
- accessToken
An authenticated access token. Must be valid and authorized.
- block
The block to be called when the operation is complete. The block will pass an
SPTPlaylistSnapshot
object on success, otherwise an error.
Declared In
SPTPlaylistSnapshot.h
Instance Methods
addTracksToPlaylist:withAccessToken:callback:
Append tracks to the playlist.
- (void)addTracksToPlaylist:(NSArray *)tracks withAccessToken:(NSString *)accessToken callback:(SPTMetadataErrorableOperationCallback)block
Parameters
- tracks
The tracks to add, as
SPTTrack
orSPTPartialTrack
objects.
- accessToken
An authenticated access token. Must be valid and authorized with the playlist-modify-public
or
playlist-modify-private` scope as necessary.
- block
The block to be called when the operation is started. This block will pass an error if the operation failed.
Discussion
Note: This operation is asynchronous on the server, it can take a couple of seconds for your changes to propagate everywhere after this operation has started.
Declared In
SPTPlaylistSnapshot.h
addTracksWithPositionToPlaylist:withPosition:accessToken:callback:
Add tracks to the playlist at a certain position.
- (void)addTracksWithPositionToPlaylist:(NSArray *)tracks withPosition:(int)position accessToken:(NSString *)accessToken callback:(SPTMetadataErrorableOperationCallback)block
Parameters
- tracks
The tracks to add, as
SPTTrack
orSPTPartialTrack
objects.
- position
The position in which the tracks will be added, being 0 the top position.
- accessToken
An authenticated access token. Must be valid and authorized with the
playlist-modify-public
orplaylist-modify-private
scope as necessary.
- block
The block to be called when the operation is started. This block will pass an error if the operation failed.
Discussion
Note: This operation is asynchronous on the server, it can take a couple of seconds for your changes to propagate everywhere after this operation has started.
Declared In
SPTPlaylistSnapshot.h
changePlaylistDetails:withAccessToken:callback:
Change playlist details
- (void)changePlaylistDetails:(NSDictionary *)data withAccessToken:(NSString *)accessToken callback:(SPTMetadataErrorableOperationCallback)block
Parameters
- data
The data to be changed. Use the key constants to refer to the field to change (e.g.
SPTPlaylistSnapshotNameKey
,SPTPlaylistSnapshotPublicKey
). When passing boolean values, use @YES or @NO.
- accessToken
An authenticated access token. Must be valid and authorized with the
playlist-modify-public
orplaylist-modify-private
scope as necessary.
- block
The block to be called when the operation is started. This block will pass an error if the operation failed.
Discussion
Note: This operation is asynchronous on the server, it can take a couple of seconds for your changes to propagate everywhere after this operation has started.
Declared In
SPTPlaylistSnapshot.h
removeTracksFromPlaylist:withAccessToken:callback:
Remove tracks from playlist. It removes all occurrences of the tracks in the playlist.
- (void)removeTracksFromPlaylist:(NSArray *)tracks withAccessToken:(NSString *)accessToken callback:(SPTMetadataErrorableOperationCallback)block
Parameters
- tracks
The tracks to remove, as
SPTTrack
orSPTPartialTrack
objects.
- accessToken
An authenticated access token. Must be valid and authorized with the
playlist-modify-public
orplaylist-modify-private
scope as necessary.
- block
The block to be called when the operation is started. This block will pass an error if the operation failed.
Discussion
Note: This operation is asynchronous on the server, it can take a couple of seconds for your changes to propagate everywhere after this operation has started.
Declared In
SPTPlaylistSnapshot.h
removeTracksWithPositionsFromPlaylist:withAccessToken:callback:
Remove tracks that are in specific positions from playlist.
- (void)removeTracksWithPositionsFromPlaylist:(NSArray *)tracks withAccessToken:(NSString *)accessToken callback:(SPTMetadataErrorableOperationCallback)block
Parameters
- tracks
An array of dictionaries with 2 keys:
track
with the track to remove, asSPTTrack
orSPTPartialTrack
objects, andpositions
that is an array of integers with the positions the track will be removed from.
- accessToken
An authenticated access token. Must be valid and authorized with the
playlist-modify-public
orplaylist-modify-private
scope as necessary.
- block
The block to be called when the operation is started. This block will pass an error if the operation failed.
Discussion
Note: This operation is asynchronous on the server, it can take a couple of seconds for your changes to propagate everywhere after this operation has started.
Declared In
SPTPlaylistSnapshot.h
replaceTracksInPlaylist:withAccessToken:callback:
Replace the tracks in a playlist, overwriting any tracks already in it
- (void)replaceTracksInPlaylist:(NSArray *)tracks withAccessToken:(NSString *)accessToken callback:(SPTMetadataErrorableOperationCallback)block
Parameters
- tracks
The tracks to set, as
SPTTrack
orSPTPartialTrack
objects.
- accessToken
An authenticated access token. Must be valid and authorized with the
playlist-modify-public
orplaylist-modify-private
scope as necessary.
- block
The block to be called when the operation is started. This block will pass an error if the operation failed.
Discussion
Note: This operation is asynchronous on the server, it can take a couple of seconds for your changes to propagate everywhere after this operation has started.
Declared In
SPTPlaylistSnapshot.h


TOTPlayerState Constructor
Initializes a new instance of this class.
Syntax
Parameters
-
me
- The owner of this state.
Remarks
Requirements
Namespace: TOT
Assembly: TOT (in TOT.dll)
Assembly Versions: <IP_ADDRESS>
AddDivination Method
Resisters a new divination.
Syntax
Parameters
-
judge
- The divination to be registered.
Remarks
Requirements
Namespace: TOT
Assembly: TOT (in TOT.dll)
Assembly Versions: <IP_ADDRESS>
AddInquest Method
Registers a new inquest.
Syntax
Parameters
-
judge
- The inquest to be registered.
Remarks
Requirements
Namespace: TOT
Assembly: TOT (in TOT.dll)
Assembly Versions: <IP_ADDRESS>
Attacked Property
Whether or not I was attacked.
Syntax
public
bool Attacked { get; set; }
Value
True or false.
Remarks
Requirements
Namespace: TOT
Assembly: TOT (in TOT.dll)
Assembly Versions: <IP_ADDRESS>
AttackTarget Property
The player I want to attack.
Syntax
Value
The player I want to attack.
Remarks
Requirements
Namespace: TOT
Assembly: TOT (in TOT.dll)
Assembly Versions: <IP_ADDRESS>
CoRole Property
The role I have come out with.
Syntax
Value
Role.
Remarks
Requirements
Namespace: TOT
Assembly: TOT (in TOT.dll)
Assembly Versions: <IP_ADDRESS>
DecTodaysVotes Method
Decrements my vote for execution.
Syntax
public
void DecTodaysVotes ()
Remarks
Requirements
Namespace: TOT
Assembly: TOT (in TOT.dll)
Assembly Versions: <IP_ADDRESS>
IncTodaysVotes Method
Increments my vote for execution.
Syntax
public
void IncTodaysVotes ()
Remarks
Requirements
Namespace: TOT
Assembly: TOT (in TOT.dll)
Assembly Versions: <IP_ADDRESS>
LatestTopic Property
The latest topic I talked about.
Syntax
Value
The latest topic I talked about.
Remarks
Requirements
Namespace: TOT
Assembly: TOT (in TOT.dll)
Assembly Versions: <IP_ADDRESS>
LatestWhisper Property
My latest whisper.
Syntax
Value
My latest whisper.
Remarks
Requirements
Namespace: TOT
Assembly: TOT (in TOT.dll)
Assembly Versions: <IP_ADDRESS>
MayBeExecuted Property
Whether or not I may be executed.
Syntax
public
bool MayBeExecuted { get; set; }
Value
True or false.
Remarks
Requirements
Namespace: TOT
Assembly: TOT (in TOT.dll)
Assembly Versions: <IP_ADDRESS>
Me Property
Me.
Syntax
Value
The player having this state.
Remarks
Requirements
Namespace: TOT
Assembly: TOT (in TOT.dll)
Assembly Versions: <IP_ADDRESS>
Role Property
My role.
Syntax
Value
Role.
Remarks
Requirements
Namespace: TOT
Assembly: TOT (in TOT.dll)
Assembly Versions: <IP_ADDRESS>
Species Property
My species.
Syntax
Value
Species.
Remarks
Requirements
Namespace: TOT
Assembly: TOT (in TOT.dll)
Assembly Versions: <IP_ADDRESS>
Status Property
Whether I am alive or dead.
Syntax
Value
ALIVE or DEAD.
Remarks
Requirements
Namespace: TOT
Assembly: TOT (in TOT.dll)
Assembly Versions: <IP_ADDRESS>
Team Property
My team.
Syntax
public
TOTeam Team { get; set; }
Value
TOTeam.
Remarks
Requirements
Namespace: TOT
Assembly: TOT (in TOT.dll)
Assembly Versions: <IP_ADDRESS>
TodaysVotes Property
The number of votes for execution I obtain today.
Syntax
public
int TodaysVotes { get; set; }
Value
The number of votes for execution I obtain today.
Remarks
Requirements
Namespace: TOT
Assembly: TOT (in TOT.dll)
Assembly Versions: <IP_ADDRESS>
VoteTarget Property
The player I want to vote.
Syntax
Value
The player I want to vote.
Remarks
Requirements
Namespace: TOT
Assembly: TOT (in TOT.dll)
Assembly Versions: <IP_ADDRESS>


The lean start-up triangle
At first: "Yeah, build-measure-learn; easy, I get it..."
Now: "Wow, I didn't get that at all! I wonder how much more I missed!"
#leanstartup
— Tom Janssens (@ToJans) 22 april 2014
Catch-22
The basic lean start-up diagram looks like this:
A while a go, when I decided to do 10 start-ups the process usually was like this (simplification):
- brainstorm with another person on a start-up ideas
- pick the best one
- build a fake landing page
- measure market fit (i.e. visitors/virality)
- if NOK goto start
- implement it
- measure it
- adjust it
- repeat ad infinitum
So, it looked a bit like this:
None of these were a success, and all of them have been shut down.
Fast-forward to my current start-up
I never stopped thinking about start-ups, and had several ideas over the following years. Every time I had an idea, I tried to figure out an elevator pitch, and a complete story about it. I would then go around and talk to almost everybody about it using this story. If they were interested, I would tell them more and more and more. When we finally came to the price, I would ask them if they would pay for it. Most of the time the answer was something like “Can’t you put some advertisements on there, so I don’t have to pay?”.
Finding an appropriate problem
If I spent this much time on selling it, and they didn’t want to pay for it, how would I be able to convince others? Back to the drawing board.
It was only after a while that I really learned to listen to the people I was talking to; I would then adjust my idea, pitch etcetera and try selling that. While this might seem really obvious now, I do realize it took me about 2 years to evolve from an idea that I assumed to be viable into an idea that was really viable.
After some careful listening, I had finally found a problem where people would be willing to pay for the solution, but I had no clue on how to provide a solution.
Finding a solution and a customer for the problem
It took me another three months and endless discussions to figure out a market where I could actually provide a viable solution for this problem.
I looked in my vast professional and personal network, and finally found a fit for a potential customer. I pitched the idea on a Friday night to this person, and he told me a person had contacted him for something similar, but that he never got any actual result.
So I promised him to prep a rude demo, so he could have at least an idea what I was talking about. This talk took about 10 minutes tops.
Selling it/tickling the prospect’s imagination
I spent most of the weekend and a whole Monday on building a POC that would show the essence of my idea using a very rudimentary approach.
I sent the email on Monday evening (including the link) and by Tuesday noon, he knocked on my door.
He explained what they were doing and what their utopian situation would be. Then he asked what my intent was.
I gave away some pointers, not raising expectations too much, and asked for a meeting in his office in the next week, where I would elaborate on my ideas. This meeting took about half an hour.
In the concept of under-promising and over-delivering, I spent over a week building a POC website.
Every single day I had at least one person performing a usability test. Every single person was an acquaintance, and I just gave them the url, looked at their screen and said nothing.
Assumptions are wrong until verified
Seeing these users using the website for the first time, I noticed a lot of my assumptions were completely wrong:
- Users do not read sentences on the screen longer then a few words.
- Users should only be asked to do one thing, I separated a single step into 5 steps during the week.
- The thing you consider the key feature might not be noticed by your users, or easily forgotten. Adjust your user interface to make things more obvious.
- Simplify, optimize for the majority. (I.e. do not complect things, but use sensible defaults).
I branded the product to my prospect’s site, and in the meeting I put a copy of their site with the link to my product on the big screen before we started.
Rehearsals help
By the time I had to give my demo, I was confident enough to ask “the person who’s the least experienced with computers in the organisation” to join us, and take a seat behind the keyboard. I told him to click the link, and then I just kept my mouth shut…
“I have a dream”
The prospect was over the moon, they wanted it yesterday, and they saw umphteen possible extension points. Then we talked about money: I told them I was in favour of no-cure/no-pay and that seemed to be a perfect fit.
They proposed me to invoice an amount reasonable enough to bootstrap the development, so we could get cracking…
Building the product
I am currently in the process of building the product, having very short iteration cycles, constantly publishing new versions, and looking for feedback from anyone I can get a hold of. I am not only asking feedback on usability, but also on my code from various persons. Talking to everyone about my product also allowed me to discover a lot of hidden value in my personal network, with tips which will probably help to alleviate the customer’s sales even more.
As my income is based on a no-cure/no-pay model, I actually have the same goal as my customer: driving sales, so it is both in my and their benefit to optimize anywhere we can (which might even be after my client’s customer used my product).
I will suggest them anything that will grow their conversion rate, even if it is not related to my product.
I am currently in the process of building the first version, so I can not tell you how it ends yet…
Wrapping it up
When I initially learned about the lean start-up, I assumed it was a triangle. After a few iterations, I noticed it was a series of triangle in the main triangle. Another few years, and the pattern finally emerges:
Key takeaway
The whole build-measure-learn thing should be recursively repeated ad libitum. Apply it everywhere!
The attentive reader might recall this pattern as Sierpinski’s triangle
Wish me luck!


We go public!
We decided to release the assembly and annotation of the European amphioxus B. lanceolatum genome (see Data) and we also put this website online because we felt some information about these datasets was necessary, and it was the best way to provide it. We will update this site in the future with news of the project, related publications and corresponding datasets . Please feel free to send us feedback about which improvement we can make, and which information you would like to see here!


Help transcribe a new mission
The easiest way to contribute to Spacelog is by helping to transcribe new missions using Kallisto, our online transcription tool. Transcribing a page or two only takes a few minutes, and you can do as much or as little as you like.
Get more involved
Beyond transcribing pages for new missions, there are a whole bundle of different tasks that people can help out on, from the very small (such as noticing and pointing out a problem with a transcription of a particular mission) up to the fairly large (identifying which CAPCOM was on shift at what time during a mission). Along the way there are jobs involving writing new material (biographies, descriptions of key moments and phases, and so on), selecting images for use in missions (and possibly cropping or preparing them in Photoshop), and if you're a programmer you can get hold of the source code behind the site, and help us out in developing it further.
In general, the first step in getting involved is simply to tell us you're around and interested. Drop an email to the<EMAIL_ADDRESS>mailing list, and ask any questions you need to get started. If you use IRC, we tend to hang out on #spacelog, which can be more useful if you need to ask a number of related questions. In the meantime, hopefully the information on this page will be a helpful starting point — but if not, please point out how we can make things clearer and easier to get involved.
Pointing out mistakes
For NASA missions, the transcripts we work from were prepared in the 60s and 70s; from there, they've been scanned, converted to text, and then cleaned up by Spacelog volunteers. At each step in the process, small errors may have crept in, so if you notice anything that's wrong, and particularly if you notice a difference between the Spacelog transcripts and the original transcripts (linked from each page of a mission), just drop us a line at the email address above and we'll look into it. It helps a lot if you can supply not only the line (either a link, or by the timestamp displayed at the start, the GET) but also what it should be.


Success!
Thanks you for joining us! We are delighted to serve you.
A confirmation message was sent to
<EMAIL_ADDRESS>Resend Confirmation
Update Email Address
View Your Dashboard


Welcome to SOL Cocina
Located in the exciting Scottsdale Quarter development in the heart of Scottsdale, SOL Scottsdale is not your ordinary Mexican restaurant. We celebrate traditional Baja cuisine with a fresh, modern interpretation, served in a comfortably casual setting.  We love grilling fresh meat and Pacific seafood in the open kitchen, and we make our own salsas and sauces every day with the freshest seasonal ingredients and authentic Mexican flavors. Our vibrant bar offers inventive hand-made cocktails, featuring over 60 artisan tequilas and an inviting fire element. We love the timeless beauty of the Sonoran desert, and Baja and we’re committed to keeping it that way. Whenever possible, we have chosen products and programs that we believe to be both environmentally and socially pro-active.


Welcome to IBOAT MCTS’s documentation!¶
Context¶
In this project we develop a reinforcement learning algorithm based on parallel Monte-Carlo tree search to tackle the problem of long-term path planning under uncertainty for offshore sailing. This domain of application is challenging as it combines unreliable and time varying wind conditions with complex and uncertain boat performances. Contrarily to state of the art approaches applied to the sailing problem, we build a generator that models state transitions considering these two types of uncertainty. The first one is on the boat dynamics : given a environment state the boat performances are not deterministic. And the second one is uncertain weather forecasts. In practice, the wind is estimated from multiple weather forecasts (each one of them being a weather scenario with a given probability of happening). The boat’s dynamics are evaluated with a noisy Velocity Prediction Program (VPP). Then, a Monte Carlo Tree Search (MCTS) algorithm is applied in parallel to all the weather scenarios to find the sequence of headings that minimizes the travel time between two points.
Here you will find the documentation of the parallel MCTS and the isochrones routing methods. But also all the tools to download and visualize weather forecasts.
Requirements¶
The project depends on the following extensions :
- NumPy for the data structures (http://www.numpy.org)
- SciPy for interpolation (https://docs.scipy.org/doc/scipy-0.16.1/reference/index.html)
- Matplotlib for the visualisation (https://matplotlib.org)
- Basemap for map projections (http://matplotlib.org/basemap)
- NetCF4 to read and write in netCDF file (https://unidata.github.io/netcdf4-python/)


British author scoops history book prize worth more than £58,000
A British author has scooped an international history book prize worth more than £58,000.
Julia Lovell has been named the winner of the 2019 Cundill History Prize for Maoism: A Global History.
The British historian, China expert and translator of Chinese literature was awarded the 75,000 dollars prize (£58,414) at a gala at the Montreal Museum of Fine Arts in Canada.
Alan Taylor, chair of the jury, called the book “an exceptional work of history.”
“Her book will dazzle readers with lucid and vivid insights into the power of a protean, and often deadly, ideology – and its enduring impact on our world today,” he said.
The international prize, run by McGill University in Canada, relaunched three years ago.
Lovell is Professor of modern China at Birkbeck College, University of London.
Harvard Professor Maya Jasanoff won the award for The Dawn Watch in 2018, and the British historian Daniel Beer for The House Of The Dead in 2017.


Uptime
The Uptime function returns the elapsed
days, hours, minutes and seconds since the system booted.
|
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:Uptime days hours mins [secs]
::
:: By: Ritchie Lawrence, 2003-09-24. Version 1.0
::
:: Func: Obtains the number of days, hours, minutes and seconds of
uptime.
:: For NT4/2000/XP/2003.
::
:: Args: %1 var to receive number of days of uptime (by ref)
:: %2 var to receive number of hours of uptime (by ref)
:: %3 var to receive number of minutes of uptime (by ref)
:: %4 var to receive number of seconds of uptime (optional, by ref)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
setlocal ENABLEEXTENSIONS & set "c=net statistics work"
set t=2&if "%date%z" LSS "A" set t=1
for /f "skip=1 tokens=2-4 delims=(-)" %%a in ('echo/^|date')
do (
for /f "tokens=%t%-4 delims=.-/ " %%d in ('date/t') do (
set %%a=%%d&set %%b=%%e&set %%c=%%f))
for /f "tokens=5-8 delims=:. " %%a in ('echo/^|time') do (
set "hh=%%a" & set "nn=%%b" & set "ss=%%c")
if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
if 1%hh% LSS 20 set hh=0%hh%
set /a hh=100%hh%%%100,nn=100%nn%%%100,f=j*1440+hh*60+nn
for /f "tokens=3-8 delims=/:M " %%a in ('%c%^|findstr/b /c:"Stat"')
do (
set mm=%%a&set dd=%%b&set yy=%%c&set hh=%%d&set nn=%%e%%f)
if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
if 1%hh% LSS 20 set hh=0%hh%
if {%nn:~2,1%} EQU {P} if "%hh%" NEQ "12" set hh=1%hh%&set/a
hh-=88
if {%nn:~2,1%} EQU {A} if "%hh%" EQU "12" set hh=00
if {%nn:~2,1%} GEQ {A} set nn=%nn:~0,2%
set /a hh=100%hh%%%100,nn=100%nn%%%100,s=j*1440+hh*60+nn,n=f-s
set /a d=n/1440,n%%=1440,h=n/60,n%%=60
endlocal & set "%1=%d%" & set "%2=%h%" & set "%3=%n%" ^
& (if "%4" NEQ "" set "%4=%ss%") & goto
:EOF
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |
|
Parameters
%1 var to receive number of days of uptime (by ref)
%2 var to receive number of hours of uptime (by ref)
%3 var to receive number of minutes of uptime (by ref)
%4 var to receive number of seconds of uptime (optional, by ref)
Return Values
See parameters above.
Example
@echo off & setlocal ENABLEEXTENSIONS
call :Uptime d h n s
echo/Uptime is: %d% days, %h% hours, %n% minutes, %s% seconds.
goto :EOF
Remarks
The uptime reported by this function is typically less than +/- 30
seconds of the uptime reported by third party utilities such as SrvInfo
from the Resource Kit and PsInfo
from sysinternals.
See Also
|


Jamba
- Quick Start
Initializing... (if this message does not disappear, check that javascript is enabled)
Step 2. Preview the files
Step 3. Download the plugin
Download the zip file


Try out our Premium Member services: Virtual Legal Assistant, Query Alert Service and an ad-free experience. Free for one month and pay only if you like it.
HIGH COURT OF JAMMU AND KASHMIR AT SRINAGAR OWP No. 2284/2018 IA No. 01/2018 Date of order: 07.12.2018 Ghulam Nabi Mubarky Versus State of JK and others Coram: Hon'ble Mr. Justice Sanjeev Kumar, Judge Appearing Counsel: For Petitioner(s)/Appellant(s): Mr. S. R. Khawar, Adv. For Respondent(s):
The petitioner claims that he is a resident of Chadoora and in his immediate vicinity, private respondent has installed a big Edible Oil Extracting Mill, which causes serious nuisance for him and his family.
It is submitted that running the aforesaid Oil Extracting Mill day and night is causing noise pollution and emitting gases which have serious effects on the health of petitioner and his family. It is further stated that the J&K Pollution Control Board has taken cognizance of the matter and has passed order bearing Order No. 63 of SPCB dated 28th September, 2018 calling upon District Magistrate, Budgam, to immediately close down the unit of private respondent. Assistant Commissioner (Rev) in turn vide communication No. DCB/SC- Gen/2018/310 dated 23rd October, 2018 has directed Tehsildar, Chadoora, to take immediate steps as desired by Member Secretary, J&K State Pollution Control Board.
The grievance of the petitioner as projected in this writ petition is that despite the fact that J&K State Pollution Control Board has clearly observed that the Unit is being run without prior consent of the Pollution Control Board as warranted under section 25/26 and Section 21 of the Water (Prevention and Control of Pollution) Act 1974 and Air (Prevention and Control of Pollution) Act, 1981 respectively, but no action has been taken by the authorities, forcing the petitioner to file the instant writ petition.
Notice returnable within four weeks.
Notice in the IA as well returnable within the same period.
List in the month of February, 2019.
In the meanwhile, subject to objections and till next date before the Bench, it is directed that respondents 5, 6 and 9 shall ensure that the directions issued by J&K State Pollution Control Board vide Order No. 63 of SPCB Dated 28th September 2018, are complied with and Unit of the private respondent, if it is running without any prior consent from the J&K State Pollution Control Board, is closed forthwith. Let a report in this regard be submitted to this Court.
(Sanjeev Kumar) Judge Srinagar 07.12.2018 Imtiyaz


Before the update begins, Dreamweaver adds a backed-up version of your previous Spry assets to your site. The back-up directory is in the same location as the SpryAssets folder (normally the root directory), and is called SpryAssets_backup_currentDate_uniqueID.
The update occurs on your local site only, and updates the selected items with the installed version of Spry. Don’t forget to upload the updated Spry CSS and JavaScript files in the SpryAssets folder to your website.


110 Back to the File menu, the Save menu option saves the project to the same source and same name that was used when opening the project. (If you opened another user’s shared project or an example project, the project will be saved to your own cloud account. You must be logged in to save to the cloud.) The Save as… menu option opens a dialog box in which you can specify where to save the project: This is much like the Open dialog, except for the horizontal text box at the top, into which you type a name for the project. You can also publish, unpublish, share, unshare, and delete projects from here. There is no Recover button. The Import… menu option is for bringing some external resource into the current project, or it can load an entirely separate project, from your local disk. You can import costumes (any picture format that your browser supports), sounds (again, any format supported by your browser), and block libraries or sprites (XML format, previously exported from Snap ! itself). Imported costumes and sounds will belong to the currently selected sprite; imported blocks are global (for all sprites). Using the Import option is equivalent to dragging the ﬁle from your desktop onto the Snap ! window. Depending on your browser, the Export project… option either directly saves to your disk or opens a new browser tab containing your complete project in XML notation (a plain text format). You can then use the browser’s Save feature to save the project as an XML ﬁle, which should be named something.xml so that Snap ! will recognize it as a project when you later drag it onto a Snap ! window. This is an alternative to saving the project to your cloud account: keeping it on your own computer. It is equivalent to choosing Computer from the Save dialog described earlier. The Export summary… option creates a web page, in HTML, with all of the information about your project: its name, its project notes, a picture of what’s on its stage, deﬁnitions of global blocks, and then per-sprite information: name, wardrobe (list of costumes), and local variables and block deﬁnitions. The page can be converted to PDF by the browser; it’s intended to meet the documentation requirements of the Advanced Placement Computer Science Principles create task. The Export blocks… option is used to create a block library. It presents a list of all the global (for all sprites) blocks in your project, and lets you select which to export. It then opens a browser tab with those blocks in XML format, or stores directly to your local disk, as with the Export project option. Block libraries can be imported with the Import option or by dragging the ﬁle onto the Snap ! window. This option is shown only if you have deﬁned custom blocks.


Already have an Intuit account?I forgot my User ID or Password
Create an account for all of Intuit's products including Mint. Learn more
By clicking Create Account, you agree to our License Agreement and Privacy Statement.


The code behind our Private vs Public graph:
The Json file used for our Private vs Public graph:
Code for the Filter Graph:
Filter Library Source
Function for the Sunburst graph:
SunBurst Library Source
How Data was entered into the sunburst graph:
The code behind our Tuition Exploration


Waiting for the next year, with the warm of these food we can feel better to greet new year.
“Nian gao means year cake, but gao sounds the same as the word for tall or high,” says Dunlop. Hence the cakes symbolize achieving new heights in the coming year. The steamed sweets are made of glutinous rice flour, brown sugar, and oil. Some versions have white sesame seeds, red dates, or nuts in them (the dates are said to bring “early prosperity,” writes Gong in Good Luck Life).
This vegetarian dish is eaten because it’s “part of the Buddhist culture to cleanse yourself with vegetables,” says Lum. It’s also packed with good-luck foods, writes Gong, breaking it down by ingredient: sea moss for prosperity; lotus seeds for children/birth of sons; noodles for longevity; lily buds to “send 100 years of harmonious union”; Chinese black mushrooms to “fulfill wishes from east to west”; and more.
If you're trying to create a company, it's like baking a cake. You have to have all the ingredients in the right proportion.
Pasta doesn't make you fat.
They say a picture is worth a thousand words. In the nonprofit world, the right picture is worth tens of thousands of dollars. I use PhotoPad to sync our Samasource Flickr account to my iPad and slip it out of my purse at cocktail parties to tell our story.
This year we have humburger.
This year we have chicken spaghetti.


-
Managing internal projects
As a project manager, being assigned an internal project can be a breath of fresh air, albeit one with caveats. Perhaps you’re overseeing work on an internal productivity tool, or migrating a business process from a legacy system to a new one. Regardless of the circumstances, when your colleague suddenly becomes your client, there are steps you need to take to ensure the project is a success.
-
Battery Status API: Empowering device batteries to be in charge of UX
Let me set the scene: you’re in an unfamiliar city and you’re on the move. Through a series of travel delays and general unpreparedness, you are about to be late to interview for your dream job. Frantically, you try to continue to make progress on foot while not knowing the actual address of the place. Your phone’s map app doesn’t recognize the business’s name, so you need to search for their address in your smartphone’s browser.
-
Ixnay on the “you guys,” yous guys
Word choice is important, a fact not lost on famed Norse explorer Eric the Red. When he discovered a semi-inhabitable landmass northwest of his native Iceland, he knew he needed a snappy name to attract settlers. How else would you get people to move to a giant, rocky ice slab roughly the size of the midwestern United States?
-
Being bitten by bytes: You may have an image issue
Collective nouns are single words for a group of things and I love them all (except for “guys”—that’s a bad one). I especially enjoy animal group names. Get three or more bears together, and it’s known as a sleuth. Same with a pride of lions, a bale of turtles, or a romp of otters. Bird collectives have the best names: a murder of crows, a chain of bobolinks, a deceit of lapwings.
-
The 10 stages of writing: Iterating ideas from draft to done
The writing process can make your brain feel like processed cheese (not to mention your self-esteem). Here are 10 steps for writing that will help you bridge the gap between one-and-done-drafts and that book chapter you’ve been rewriting for years.
- Older posts Newer posts


Nitya Dhingra
New Delhi, India
CORE 1 INTERACTION D FA20
Hi! Welcome to my website:) I have put together some of my projects and assignments that I have recently worked on as well as some other little bits and pieces that tell you a little bit more about me. I really enjoyed my first time working on soething like this and am excited for what the future holds for me in this sphere of work. I hope to keep further developing this page as I keep learning and growing in the field of interaction design.