video poke her
Registration
Waiting for players...
Create a New Game
Max players
2
3
4
5
6
7
8
9
10
Enter Password
Submit
You are the Czar
Chat


The Custom element Rating control represents a widget that allows you to choose a rating. You can configure the rating item's size, image and the number of displayed items.
Rating:


See your most important data in a glance.
OpenDashboard is a collection of data views - we call them cards - that give you an overview of the reports and metrics you care about most.
OpenDashboard has not yet been configured. Please check back later.


Suggest topics for talks, for example
We can't promise anything but we hope someone will pick up your topic and do something with it...
{{#if loggedIn}} {{else}}Please {{loginButtons}}
{{/if}}| Title | Description | {{#each wishes}} | ||
|---|---|---|---|---|
| {{#if editMode}} {{else}} {{title}} {{/if}} | {{#if editMode}} {{else}} {{description}} {{/if}} | {{#each positiveVotes .}} {{/each}} | {{#if owns .}} {{#if editMode}} {{/if}} {{#if editMode}} {{else}} {{/if}} {{else}} {{/if}} |


The Hitbloq mod will automatically add your account to Hitbloq upon first startup. (Automatic user additions don't work yet. Give it a couple days. Use the section below for now.) You can get it here.
Please note that it may take a while for your ScoreSaber scores to fully import!
Alternatively, you can use the section below if you don't plan on using the mod.
Please only add yourself. There are extremely strict limits on website-based user additions. (The Discord is less strict since it's easier to track.)
Since Hitbloq uses Score Saber data, you need to have a Score Saber account. Enter your Score Saber profile URL below.
Example: https://scoresaber.com/u/76561198098172449


DefiantJS
DefiantJS enables you to perform lightning-fast searches on JSON using XPath expressions, and transform JSON using XSL.
View Source on GitHub Download DefiantJSOverview
Do you need to query large JSON structures? Do you end up coding loops to parse the JSON and identify the data that matches your query? DefiantJS offers a better way. DefiantJS extends the global JSON object with a "search" method that enables lightning-fast searches using XPath expressions. Try out the XPath Evaluator below to get the idea.
Snapshot search
DefiantJS 1.2.0 introduced a snapshot feature that improves search performance more than 100 times compared to a regular search. DefiantJS prepares the JSON structure before the search; this preparation is the time-consuming part. Using snapshot of the JSON structure, DefiantJS can find and return matches as fast as 4ms on 1.6MB large data (see the example).
Web workers
With really large JSON structures, avoiding to do the time-consuming preparation on each search has proven to be beneficial. Though it turned out that this preparation have a blocking effect on the UI-thread. Consequently in version 1.2.6 a snapshot can be created utilizing web workers. This approach brings a smoother experience and applies especially when dealing with large data - larger than 1 MB of JSON data.
Templating
Contemporary JavaScript templating libraries enable you to write simplistic templates. Problems arise when complex real-world requirements exceed the limits of the templating model, so you have to supplement the templates with helper functions, fragmenting the templating logic, which is bad practice.
With DefiantJS, you can write logical templates with powerful technologies such as XSLT & XPath, and apply them to JSON objects. Besides the fact that XSLT is a proven Turing-complete language, it is also standardized and supported by all major browsers.
You could say that DefiantJS joins XML and
related technologies with JSON.
Most likely, Douglas Crockford will hate this unholy matrimony.
Usage
Using DefiantJS is pretty easy. Check out the examples below to get a hint of how it can
be used; the first one is rather simple and the latter is more advanced and demonstrates calling templates from
another template. It contains recursive template calling and renders a fictitious filesystem structure. When the "tree-walker"
template calls itself, indentation is passed as an argument, thus indenting child elements of a folder.
To see the code below in action, here are the demo files;
simple example and
advanced example
Simple example
Advanced example
XPath
A powerful tool when dealing with XML is the advantage of using XPath. XPath is a standardized language for addressing parts of an XML document and enables features such as analysis, transformation & refined data selection out of an XML structure. The lack of a similar feature for working with JSON has prompted initiatives such as JSONPath, which has not been standardized or widely accepted by the community. With DefiantJS, you can unleash the power of XPath on JSON objects, with no retooling or reschooling!
Expressions table
The syntax table below offers a glimpse of the power that XPath brings. XPath has a lot more to offer. An important advantage of implementing XPath, as contrasted with JSONPath, is that this language has been documented a great deal on the web and information and how-to's can easily be found and digested.
| Expression | Description |
|---|---|
| / | Child operator; selects immediate children of the left-side collection. When this path operator appears at the start of the pattern, it indicates that children should be selected from the root node. |
| // | Recursive descent; searches for the specified element at any depth. When this path operator appears at the start of the pattern, it indicates recursive descent from the root node. |
| . | Indicates the current context. |
| .. | The parent of the current context. |
| * | Wildcard; selects all elements regardless of the element name. |
| @ | Attribute; prefix for an attribute name. |
| @* | Attribute wildcard; selects all attributes regardless of name. |
| [] | Subscript operator; applies a filter pattern OR used for indexing within a collection. |
| | | Union operator; results in a combination of element sets |
| () | Groups operations to explicitly establish precedence |
In order to access XPath functionality easily, some global objects has been
extended with useful methods, for instance; JSON.search
.
Detailed information about these extensions can be found in the Function reference section.
XPath Evaluator
Not familiar with XPath? Don't worry, use the XPath Evaluator below and you will become an expert in no time.
A couple of suggestions:
- Switch views from XML to JSON to get a better overview of the data structure and how the selections are made.
- Also, check out the browser console for hints.
- To get going, click any of the pre-written examples of XPath queries.
- Don't forget to click the "Edit" button. You can alter or paste in your own JSON data and try out different XPath expressions on your custom data. This way, you can validate your expressions visually and get instant feedback.
Caveats
There are some internal procedures of DefiantJS as well as known limitations of JSON (compared to XML) that you should be aware of. Below are some knowledge to keep in mind when working with XSLT, XPath and JSON.
- The structure of object that contains attributes keys (starting with "@"), will be altered and attributes precedes regular regular elements in the object structure.
- Namespace selection is not possible, since JSON does not support such detailed data semantics (as opposed to XML).
- Searching '//*' in JSON will result in one less match (comparing same search with XML), since XML has a root node and the handle to that match is "reachable". JSON's root handle is the name of the objects variable name and is out of scope for the search algorithm. Hence, a handle to the variable name can't be passed back to the querist.
- DefiantJS transforms JSON to XML, which is done lossless. This means that everything from the source data structure can be interpreted back. Transforming XML to JSON is not lossless since JSON isn't built to match the same level of data semantics as XML.
Function reference
Besides smart templating with the ability to perform transformations using XSLT on XML, & JSON structures, DefiantJS is equiped with powerful methods for refined data selections and generic tools to analyze & manipulate these structures programmatically, implemented cross-browser.
Defiant.render(template, object)
Inline script-block(s) delivers XSLT templates to the browser and can contain multiple templates. Pass the name of the template that will be used on the JSON object - passed in as second argument. This function returns an HTML string of the transformation.
Defiant.xmlFromString(xml_string)
This function does exactly what its name indicates; it creates and returns an XML document from the string passed in as argument. This function is primarily used internally by DefiantJS.
Defiant.node.toJSON()
This function does exactly what its name indicates; transforms a node and its descending structure into JSON equivalent.
Defiant.node.selectNodes(xpath)
There are different ways of dealing with XPath in Internet Explorer & other browsers. This function is not supported by all browsers by default but the syntax is much clearner & simpler than
xmlDoc.evaluate(xpath, xmlDoc, null, XPathResult.ANY_TYPE, null);
and therefore implemented cross browser
with DefiantJS.
Defiant.node.selectSingleNode(xpath)
This function behaves almost the same way as
selectNodes
with the difference that it returns the first
match of the XPath expression and exits the search algorithm as soon as the
first match is found. It is a preferable alternative if a single node is known to be desired, hence better choice
performance-wise.
Defiant.node.prettyPrint
This property is a good helper when writing & debugging XML centric code. It's a shorthand way to get the serialized representation of a node, as opposed to creating a new
XMLSerializer
and call its function serializeToString
. This property outputs a
human-readable version of the serialized XML string, i.e. with
line breaks and tabbed rows.
Lastly, this property is accessible from all element nodes, regardless of depth in the
XML structure (the document node included).
JSON.toXML(object)
With DefiantJS, it is trivial to convert your JSON object into XML structure. Just call this extended function of the global object JSON and pass in your object as argument & the function will return an XML document.
JSON.search(object, xpath, first)
This function is the jewel of DefiantJS. Call this function whenever you want a collection of elements in a JSON object, matching the XPath query, given as second argument. The third argument is optional and is of
boolean
type; if set to true
,
the function exits the search algorithm, as soon as a matching element is found,
based upon given XPath.
JSON.search
returns an array with aggregate functions,
populated with matching elements. Besides the ability to find elements with
XPath, this
function returns mutable objects (assuming that the matches are mutable) of the matching elements in the JSON
structure. Put differently; the matched elements can be altered with a loop, thus altering the original
JSON object. See the code below as example.


Hey,
when i got my hue lights i needed something to control them my first attempt was to use openhab as it seemed the way to go but recently i found out about home assisant https://home-assistant.io/ and i like it more then openhab seems to work better for me for doing automations.
I'm also using home assistant to display feed values from emoncms in home assistant. The way i'm currently doing it is by making emoncms post the feed values i want to mqtt and make home assistant use an mqtt sensor to display the values.
But now that i think of it, it really shouldn't be that hard to create a sensor component for emoncms directly in home assistant. Home assistant uses python, i have never written python but since it's only doing a certain http get api call to emoncms to get a feeds value i think i should be able to create a sensor for it. so that i don't need mqtt anymore.
if i ever do make the sensor for home assistant i'll post a new message to let you guys know. But since i read a bit of openhab here i thought it might be a good idea to let u guys know about home assistant as well
Re: anyone using / heard of home assistant ?
Looks interesting - wonder how well it will be supported.
Re: anyone using / heard of home assistant ?
it seems i don't need to create a new sensor for emoncms values to display in home assistant.
There are 2, perhaps 3 ways to do it, i only tested 2 ways:
1 *tested*) use mqtt, make emoncms post the feed value to mqtt and use an mqtt sensor in homeassistant to display the values. this works although your database size will growe rapidly depending on how fast you post new values to mqtt
2 *tested*) use a restfull sensor and use the emoncms feed api to call. This won't update the value as often and will thus reduce database size, i think it's updated like once every 30 seconds:
here's an example of the yaml config to make it work:
sensor:
- platform: rest
resource: http://<IP_ADDRESS>:8083/emoncmsnew/feed/value.json?id=61&apikey=readapikey
value_template: '{{ value | replace("\"","") | float | round(2) }}'
method: GET
name: TEST REST
unit_of_measurement: "W"
the replace is needed because the feed api returns "value" so between quotes, i then take that value, remove it's quotes convert the string to float and round it at 2 decimals.
For each feed value you want to display you would repeat the above and just change the id=61 which reflects the feed id
3 *not tested*) use a command line sensor in combination with curl and call the feed api url as in example 2
Re: anyone using / heard of home assistant ?
2* is working on my setup. thanks
Re: anyone using / heard of home assistant ?
Just discovered Home Assistant, it's quite nice. I have published a blog post and example config to integrate with emonPi
Re: anyone using / heard of home assistant ?
Quite like it but usi ng the configuration is not intuative. They need a graphical or in browser editor. Prefer this to OpenHab as I don't like Java on the Pi.
Re: anyone using / heard of home assistant ?
hey if you do a github pull now for hass there's a fix for the rest sensor so you can change the scanning interval. By addin for example scan_interval: 5 and using a rest sensor as explained in one of my previous posts you can query the value every 5 seconds (i use 5 because i send a new value to emoncms every 5 seconds). The default was 30 seconds and couldn't be changed.
I'm still using mqtt for it though but i thought i should mention it here as at least one person mention that method 2 (rest sensor) worked for them


Mail Errors [ Indice de ayuda ]
I recieve the following error - Error connecting to mail server - Does the domain exist and accept incoming connections?
This is caused by incorrect mailserver information. To work around this, please do the following:
Click on the link "External Login" in the login page
On the login page that will appear, enter the full address details of the Mailserver that is hosting your email. For example mail.yourdomain.com, pop3.yourdomain.com, mail.ispserver.com, etc. To find the correct mail-server address check your desktop client settings for the hostname or contact your ISP for further details.
Input your username and password
Click on "Login"
I recieve the following error when accessing via Outlook - Relaying not permitted.
Account name: you must type your complete email address here, including the domain
When I login, I recieve a similar error - "Can't open file: 'sometable.MYD'"
It is possible that the database on your server is corrupted. If this happens, please contact your Web Administrator and ask that the database be repaired.


This example shows the current way of implementing a chart with zooming capability and a time frame bar. We don't provide components that would encapsulate this logic, so it needs to be implemented from scratch like this. It takes advantage of the filtering session implementation to connect the filtering components on the page.


Hovercard is a very lightweight Angular directive that is written purely in AngularJS. It is a card that is displayed when you hover over a label. The card can contain any html element. It is inspired by Hovercard jQuery plugin.
See the demos below and learn how to use the directive!
Hi, I'm
If you are interested in learning how I made this directive,
Follow @yaru22 for an update.
<hovercard hover-tmpl-url="hoverCardDetail.tmpl">
Brian Park
</hovercard>
You can specify where the hovercard will pop out using 'placement' attribute.
There are four possible placements: "bottomLeft", "bottomRight", "topLeft" and "topRight".
The default value is "bottomRight".
<hovercard hover-tmpl-url="hoverCardDetail.tmpl" placement="bottomRight">
bottomRight
</hovercard>
Yo dawg, I heard you like hovercard, so I put a hovercard in your
hovercard so you can see a hovercard while you see a
By default, the hovercard uses pomegranate color (#c0392b)
for the label. However, you can specify the different label color
using 'label-color' attribute.
<hovercard hover-tmpl-url="hoverCardDetail.tmpl" label-color="#3498db">
Different Label Color
</hovercard>
By default, the hovercard uses white background.
However, you can specify the different hovercard background using
'background' attribute.
<hovercard hover-tmpl-url="hoverCardDetail.tmpl" background="#ffffdb">
Different Background
</hovercard>
<hovercard hover-tmpl-url="hoverCardDetail.tmpl"
on-hover-in="hoverIn()"
on-hover-out="hoverOut()">
Hover in and out of this
</hovercard>
Would you like to showcase your hovercard demo? Feel free add your jsFiddle, plnkr, etc. to demo/index.html (this page) and request a pull on Github.


This package contains some common abstractions for working with standard
dialogs.
JGUIraffe allows an application to make use of some standard
dialogs that are typically supported by UI platforms. The pattern used when
dealing with these dialogs is as follows:
- There is a service interface specific to a standard dialog type.
- The service interface defines methods for displaying the associated
dialog, possibly in different flavors.
- The interface methods expect a parameters object that allows a
customization of the dialog.
- The parameters object also contains a callback to be triggered when the
dialog is closed per OK. It can then process the result produced by the
dialog.


I am a deep learning practitioner and open source enthusiast looking forward to learning new things. Also, I love myself some challenge !
Served as a key member of the mentors team charged with helping the students in Google Code In with their tasks involving Deep learning(Keras, Caffe, Tensorflow) and web development (ReactJS,Django).
Open Source contributions to many organisations and their projects like CloudCV's Fabrik, CloudCV's EvalAI and Shogun.
GPA: 7.39
Percentage : 84.5 %
Apart from being a web developer, doing competitive coding & learning about neural networks, I enjoy gaming, working out & being outdoors.
I also enjoy following a number of sci-fi and fantasy genre movies and television shows. I love watching anime & reading manga & books too.


Fit a trio model via penalized maximum likelihood. The model is fit for a path of values of the penalty parameter. This package is based on Noah Simon, et al. (2011) <doi:10.1080/10618600.2012.681250>.
| Version: | 1.1.0 |
| Published: | 2017-12-21 |
| Author: | Timo Stöcker, Noah Simon, Jerome Friedman, Trevor Hastie, and Rob Tibshirani |
| Maintainer: | Timo Stöcker <timo.stoecker at hhu.de> |
| License: | GPL-2 | GPL-3 [expanded from: GPL] |
| NeedsCompilation: | yes |
| CRAN checks: | TrioSGL results |
| Reference manual: | TrioSGL.pdf |
| Package source: | TrioSGL_1.1.0.tar.gz |
| Windows binaries: | r-devel: TrioSGL_1.1.0.zip, r-release: TrioSGL_1.1.0.zip, r-oldrel: TrioSGL_1.1.0.zip |
| OS X binaries: | r-release: TrioSGL_1.1.0.tgz, r-oldrel: TrioSGL_1.1.0.tgz |
Please use the canonical form https://CRAN.R-project.org/package=TrioSGL to link to this page.


Debezium Event Deserialization
|
This feature is currently in incubating state, i.e. exact semantics, configuration options etc. may change in future revisions, based on the feedback we receive. Please let us know if you encounter any problems while using these SerDes. |
Debezium generates data change events in the form of a complex message structure. This message is later on serialized by the configured Kafka Connect converter and it is the responsibility of the consumer to deserialize it into a logical message. For this purpose, Kafka uses the so-called SerDes.
Debezium provides SerDes (io.debezium.serde.DebeziumSerdes
) to simplify the deserialization for the consumer either being it Kafka Streams pipeline or plain Kafka consumer.
JSON SerDe
The JSON SerDe deserializes JSON encoded change events and transforms it into a Java class. Internally this is achieved using Jackson Databind.
The consumer creates a serde instance using
final Serde<MyType> serde = DebeziumSerdes.payloadJson(MyType.class);
The consumer will then receive the logical Java type MyType
whose fields are initiated from the JSON message.
This applies to both for keys and values.
It is also possible to use plain Java types like Integer
, for example when the key consists of a single INT
field.
When the JSON converter is used by Kafka Connect then it generally provides two modes of operations - with or without schema. If the schema is used then the message looks like so:
{
"schema": {...},
"payload": {
"op": "u",
"source": {
...
},
"ts_ms" : "...",
"before" : {
"field1" : "oldvalue1",
"field2" : "oldvalue2"
},
"after" : {
"field1" : "newvalue1",
"field2" : "newvalue2"
}
}
}
Whereas without schema, the structure look more like this:
{
"op": "u",
"source": {
...
},
"ts_ms" : "...",
"before" : {
"field1" : "oldvalue1",
"field2" : "oldvalue2"
},
"after" : {
"field1" : "newvalue1",
"field2" : "newvalue2"
}
}
The deserializer behaviour is driven by the from.field
configuration option and follows these rules:
-
if a message contains a schema, then use
payload
only -
if the key is deserialized, then map key field(s) into the target class
-
if the value is deserialized and contains the Debezium event envelope then:
-
if
from.field
is not set, then deserialize the complete envelope into the target type -
otherwise deserialize and map only content of the field configured into the target type, thus effectively flatting the message
-
-
if the value is deserialized and contains already a flattened message (i.e. when using the SMT for Event Flattening) then map the flattened record into the target logical type


Contribute
We'd love for you to contribute to our source code and to make angular-gantt better !
Source code is available on GitHub under the MIT License. You may also read Sources section to learn how to build angular-gantt from sources.

If you didn't found anything related in the archive, you can create a new issue providing:
- AngularJS version
- angular-gantt version
- Browser(s) used
- Long description of the issue
- Data used to reproduce, as JSON or javascript.
- Possible workaround
Coding Rules
- Please configure your editor with formatting rules defined in
.editorconfig
file. You may find an EditorConfig plugin to automatically configure those settings. - Try to follow convention used in existing sources.
- Use JSDoc to comment your code.
Branching Guidelines
- Master branch:
master
is the main development branch. Each stable public version is tagged using this branch. - Release branches:
MAJOR.MINOR.x
are release branches. They contains minor changes and bugfixes after release of first major version. Only the latest release branch, and it won't contains new features from master branch and next releases. - Feature branches: They contains code for a features or a bugfix which needs several commits, and will be merged when it is tested and ready.
Pull Request Guidelines
- Create and use a branch with a meaning full name, based on the
master
branch for a new feature, or latestMAJOR.MINOR.x
branch for a bugfix. - Your pull request must contain only one feature or bugfix.
- Run
grunt watch --force
to buildangular-gantt.js
on the fly during development. - Modify source files located in
src/
. - Files under
dist/
are generated by the build. - Keep only minimal changes for the feature or the fix.
- For a new feature, write a test by adding of modifying test files located in
test/**
. - Run tests with
grunt test
, and ensure all tests are passing. - Update the demo application, and run it by running
grunt serve
fromdemo
folder. - Update
README.md
if required. - Build demo by running
grunt
fromdemo
folder - Create a Pull Request for your feature branch.
Git Commit Guidelines
This commit guidelines is inspired by angularJS project.
We have very precise rules over how our git commit messages can be formatted. This leads to more readable messages that are easy to follow when looking through the project history. But also, we use the git commit messages to generate the AngularJS change log.
Commit Message Format
Each commit message consists of a header, a body and a footer. The header has a special format that includes a type, a scope and a subject:
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
Any line of the commit message cannot be longer 100 characters! This allows the message to be easier to read on github as well as in various git tools.
Type
Must be one of the following:
- feat: A new feature
- fix: A bug fix
- docs: Documentation only changes
- style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
- refactor: A code change that neither fixes a bug or adds a feature
- perf: A code change that improves performance
- test: Adding missing tests
- chore: Changes to the build process or auxiliary tools and libraries such as documentation generation
Scope
The scope could be anything specifying place of the commit change. For example row
,
task
, header
, options
, css
, readme
, etc...
Subject
The subject contains succinct description of the change:
- use the imperative, present tense: "change" not "changed" nor "changes"
- don't capitalize first letter
- no dot (.) at the end
Body
Just as in the subject, use the imperative, present tense: "change" not "changed" nor "changes" The body should include the motivation for the change and contrast this with previous behavior.
Footer
The footer should contain any information about Breaking Changes and is also the place to reference GitHub issues that this commit Closes.
A detailed explanation can be found in this document.


--- title: "imprint2" author: "Teresa" date: "4/6/2020" output: blogdown::html_page: toc: true ---
how come there is no toc :(


|
April 2002 Progress Report
|
Contents
- Accomplishments
- Arbitrary Arity Support
- New Callback Interface
- Call Policies for Construtors
- Real Users, Real Bugs
- New Insights
- Boost.Python V1 Maintenance
- What's Missing
April was a short month as far as Boost.Python was concerned, since
the spring ISO C++ Committee Meeting (and associated vacation)
occupied me for the 2nd half of the month. However, a suprising amount
of work got done...
I began using the Boost.Preprocessor
metaprogramming library to generate support for functions and member
functions of arbitrary arity, which was, to say the least, quite an
adventure. The feedback cycle resulting from my foray into
Boost.Preprocessor resulted in several improvements to the library,
most notably in its documentation.
Boost.Python now supports calls of up to 17 arguments on most
compilers. Because most EDG-based compilers have dismal preprocessor
performance, I had to "manually" expand the metaprograms for
arities from zero to fifteen arguments, and EDG-based compilers with
__EDG_VERSION__ <= 245
only support 15
arguments by default. If some crazy program finds a need for more than
the default arity support, users can increase the base support by
setting the BOOST_PYTHON_MAX_ARITY
preprocessor symbol.
I mentioned in last month's report that I
wasn't pleased with the interface for the interface for calling into
Python, so now it has been redesigned. The new interface is outlined
in this
message (though the GCC 2.95.3 bugs have been fixed).
On April 2nd, I announced
support for the use of call policies with constructors.
At least two people outside of Kull began actually using Boost.Python
v2 in earnest this month. Peter Bienstman and Pearu Pearson both
provided valuable real-world bug reports that helped me to improve the
library's robustness.
Answering some of Pearu's questions about explicitly converting
objects between Python and C++ actually led me to a new understanding
of the role of the current conversion facilities. In Boost.Python v1,
all conversions between Python and C++ were handled by a single family
of functions, called to_python()
and
from_python()
. Since the primary role of Boost.Python is
to wrap C++ functions in Python, I used these names for the first kind
of converters I needed: those that extract C++ objects to be used as
function arguments and which C++ function return values to
Python. The better-considered approach in Boost.Python v2 uses a
completely different mechanism for conversions used when calling
Python from C++, as in wrapped virtual function implementations. I
usually think of this as a "callback", as in "calling
back into Python", and I named the converters used in callbacks
accordingly: to_python_callback
and
from_python_callback
. However, as it turns out, the
behavior of the "callback" converters is the appropriate one
for users who want to explicitly extract a C++ value from a Python
object, or create a Python object from a C++ value. The upshot is that
it probably makes sense to change the name of the existing to_python
and
from_python
so those names are available for the
user-friendly explicit converters.
Another
of Pearu's questions pushes momentum further in the direction of a
more-sophisticated overloading mechanism than the current
simple-minded "first match" approach, as I suggested last month.
As much as I'm looking forward to retiring Boost.Python v1, a
significant amount of effort has been being spent dealing with support
problems; the saying that code rots when left alone is true, and
Boost.Python is no exception. Eventually it became obvious to me that
we were going to have to invest some effort in keeping V1 healthy
while working on V2. Ralf and I have expanded support for various
compilers and stabilized the V1 codebase considerably. We discarded
the obsolete Visual Studio projects which were causing so much
confusion. Still to do before the next Boost release:
- Update the build/test documentation with detailed instructions for
configuring various toolsets.
- Provide some links to Boost.Python v2 to let people know what's
coming.
Last month I announced that I would implement the following which are
not yet complete:
- Document all implemented features
- Implement conversions for
char
types. This is
implemented but not tested, so we have to assume it doesn't work.
These are my first priority for this month (especially the
documentation).
Revised
13 November, 2002
© Copyright Dave Abrahams
2002.


| ID |
Name |
Nfvipop Id |
Billing |
Cpu |
Memory GB |
Disk GB |
Gpu |
Traffic GB |
Total Cost |
|
|---|---|---|---|---|---|---|---|---|---|---|
| {{resourceCost.id}} | {{resourceCost.name}} | {{resourceCost.nfvipopId}} | {{resourceCost.billing}} | {{resourceCost.cpu}} | {{resourceCost.memoryGB}} | {{resourceCost.diskGB}} | {{resourceCost.gpu}} | {{resourceCost.trafficGB}} | {{resourceCost.totalCost}} |
|


Last updated: 2019-11-06
workflowr checks: (Click a bullet for more information) ✔ R Markdown file: up-to-date
Great! Since the R Markdown file has been committed to the Git repository, you know the exact version of the code that produced these results.
✔ Environment: empty
Great job! The global environment was empty. Objects defined in the global environment can affect the analysis in your R Markdown file in unknown ways. For reproduciblity it’s best to always run the code in an empty environment.
✔ Seed:
set.seed(666)
The command set.seed(666)
was run prior to running the code in the R Markdown file. Setting a seed ensures that any results that rely on randomness, e.g. subsampling or permutations, are reproducible.
✔ Session information: recorded
Great job! Recording the operating system, R version, and package versions is critical for reproducibility.
✔ Repository version: ff0bb95
wflow_publish
or wflow_git_commit
). workflowr only checks the R Markdown file, but you know if there are other scripts or data files that it depends on. Below is the status of the Git repository when the results were generated:
Ignored files:
Ignored: .Rhistory
Ignored: .Rproj.user/
Ignored: data/global/
Ignored: data/global_results.Rda
Ignored: data/global_test_trend.Rda
Ignored: data/global_var_trend.Rda
Ignored: data/global_var_trend_old.Rda
Ignored: data/random_bp_results_100.Rda
Ignored: data/random_bp_results_1000.Rda
Ignored: data/random_results_100.Rda
Ignored: data/random_results_1000.Rda
Ignored: data/sst_ALL_bp_results.Rda
Untracked files:
Untracked: analysis/WA_pixels.Rda
Untracked: analysis/WA_pixels_res.Rda
Untracked: docs/figure/missing_data.Rmd/
Untracked: docs/figure/time_series_length.Rmd/
Untracked: docs/figure/trend.Rmd/
Unstaged changes:
Modified: .DS_Store
Modified: .Rprofile
Modified: .gitignore
Modified: CODE_OF_CONDUCT.md
Modified: LICENSE
Modified: LICENSE.md
Modified: LaTeX/FMars.csl
Modified: LaTeX/Frontiers_Template.docx
Modified: LaTeX/MHWdetection.docx
Modified: LaTeX/MHWdetection.tex
Modified: LaTeX/PDF examples/frontiers.pdf
Modified: LaTeX/PDF examples/frontiers_SupplementaryMaterial.pdf
Modified: LaTeX/README
Modified: LaTeX/Supplementary_Material.docx
Modified: LaTeX/YM-logo.eps
Modified: LaTeX/fig_1.jpg
Modified: LaTeX/fig_1.pdf
Modified: LaTeX/fig_1_flat.jpg
Modified: LaTeX/fig_1_flat.pdf
Modified: LaTeX/fig_2.jpg
Modified: LaTeX/fig_2.pdf
Modified: LaTeX/fig_3.jpg
Modified: LaTeX/fig_3.pdf
Modified: LaTeX/fig_4.jpg
Modified: LaTeX/fig_4.pdf
Modified: LaTeX/fig_5.jpg
Modified: LaTeX/fig_5.pdf
Modified: LaTeX/fig_6.jpg
Modified: LaTeX/fig_6.pdf
Modified: LaTeX/fig_S1.jpg
Modified: LaTeX/fig_S1.pdf
Modified: LaTeX/fig_S2.jpg
Modified: LaTeX/fig_S2.pdf
Modified: LaTeX/fig_S3.jpg
Modified: LaTeX/fig_S3.pdf
Modified: LaTeX/fig_S4.jpg
Modified: LaTeX/fig_S4.pdf
Modified: LaTeX/fig_S5.jpg
Modified: LaTeX/fig_S5.pdf
Modified: LaTeX/figures.zip
Modified: LaTeX/frontiers.tex
Modified: LaTeX/frontiersFPHY.cls
Modified: LaTeX/frontiersHLTH.cls
Modified: LaTeX/frontiersSCNS.cls
Modified: LaTeX/frontiersSCNS.log
Modified: LaTeX/frontiers_SupplementaryMaterial.tex
Modified: LaTeX/frontiers_suppmat.cls
Modified: LaTeX/frontiersinHLTH&FPHY.bst
Modified: LaTeX/frontiersinSCNS_ENG_HUMS.bst
Modified: LaTeX/logo1.eps
Modified: LaTeX/logo1.jpg
Modified: LaTeX/logo2.eps
Modified: LaTeX/logos.eps
Modified: LaTeX/logos.jpg
Modified: LaTeX/stfloats.sty
Modified: LaTeX/table_1.xlsx
Modified: LaTeX/table_2.xlsx
Modified: LaTeX/test.bib
Modified: MHWdetection.Rproj
Modified: TODO
Modified: _references/1-s2.0-S0921818106002736-main.pdf
Modified: _references/1-s2.0-S092181810600275X-main.pdf
Modified: _references/1-s2.0-S0921818106002761-main.pdf
Modified: _references/1-s2.0-S0921818106002852-main.pdf
Modified: _references/1405.3904.pdf
Modified: _references/1520-0450%282001%29040%3C0762%3Aotdoah%3E2.0.co%3B2.pdf
Modified: _references/2013_Extremes_Workshop_Report.pdf
Modified: _references/24868781.pdf
Modified: _references/24870362.pdf
Modified: _references/26192647.pdf
Modified: _references/994.full.pdf
Modified: _references/A_1019841717369.pdf
Modified: _references/Banzon et al 2014.pdf
Modified: _references/Brown_et_al-2008-Journal_of_Geophysical_Research%3A_Atmospheres_%281984-2012%29.pdf
Modified: _references/Different_ways_to_compute_temperature_re.pdf
Modified: _references/Gilleland et al 2013.pdf
Modified: _references/Gilleland_2006.pdf
Modified: _references/Kuglitsch_et_al-2010-Geophysical_Research_Letters.pdf
Modified: _references/Modeling Waves of Extreme Temperature The Changing Tails of Four Cities.pdf
Modified: _references/Normals-Guide-to-Climate-190116_en.pdf
Modified: _references/Reynolds et al 2007.pdf
Modified: _references/Risk_of_Extreme_Events_Under_Nonstationa.pdf
Modified: _references/Russo_et_al-2014-Journal_of_Geophysical_Research%3A_Atmospheres.pdf
Modified: _references/WCDMP_72_TD_1500_en__1.pdf
Modified: _references/WMO 49 v1 2015.pdf
Modified: _references/WMO No 1203.pdf
Modified: _references/WMO-TD No 1377.pdf
Modified: _references/WMO_100_en.pdf
Modified: _references/bams-d-12-00066.1.pdf
Modified: _references/c058p193.pdf
Modified: _references/cc100.pdf
Modified: _references/clivar14.pdf
Modified: _references/coles1994.pdf
Modified: _references/ecology.pdf
Modified: _references/joc.1141.pdf
Modified: _references/joc.1432.pdf
Modified: _references/returnPeriod.pdf
Modified: _references/s00382-014-2287-1.pdf
Modified: _references/s00382-014-2345-8.pdf
Modified: _references/s00382-015-2638-6.pdf
Modified: _references/s10584-006-9116-4.pdf
Modified: _references/s10584-007-9392-7.pdf
Modified: _references/s10584-010-9944-0.pdf
Modified: _references/s10584-012-0659-2.pdf
Modified: _references/s10584-014-1254-5.pdf
Modified: _references/s13253-013-0161-y.pdf
Modified: _references/wcrpextr.pdf
Modified: _workflowr.yml
Modified: analysis/Climatologies_and_baselines.Rmd
Modified: analysis/Short_climatologies.Rmd
Modified: analysis/about.Rmd
Modified: analysis/bibliography.bib
Modified: analysis/gridded_products.Rmd
Modified: analysis/r_vs_python_arguments.Rmd
Modified: analysis/variance.Rmd
Modified: code/README.md
Modified: data/.gitignore
Modified: data/best_table_average.Rda
Modified: data/best_table_focus.Rda
Modified: data/python/clim_py.csv
Modified: data/python/clim_py_joinAG_1.csv
Modified: data/python/clim_py_joinAG_5.csv
Modified: data/python/clim_py_joinAG_no.csv
Modified: data/python/clim_py_minD_3.csv
Modified: data/python/clim_py_minD_7.csv
Modified: data/python/clim_py_pctile_80.csv
Modified: data/python/clim_py_pctile_95.csv
Modified: data/python/clim_py_pctile_99.csv
Modified: data/python/clim_py_random.csv
Modified: data/python/clim_py_spw_11.csv
Modified: data/python/clim_py_spw_51.csv
Modified: data/python/clim_py_spw_no.csv
Modified: data/python/clim_py_whw_3.csv
Modified: data/python/clim_py_whw_7.csv
Modified: data/python/mhwBlock.csv
Modified: data/python/mhws_py.csv
Modified: data/python/mhws_py_joinAG_1.csv
Modified: data/python/mhws_py_joinAG_5.csv
Modified: data/python/mhws_py_joinAG_no.csv
Modified: data/python/mhws_py_minD_3.csv
Modified: data/python/mhws_py_minD_7.csv
Modified: data/python/mhws_py_pctile_80.csv
Modified: data/python/mhws_py_pctile_95.csv
Modified: data/python/mhws_py_pctile_99.csv
Modified: data/python/mhws_py_random.csv
Modified: data/python/mhws_py_spw_11.csv
Modified: data/python/mhws_py_spw_51.csv
Modified: data/python/mhws_py_spw_no.csv
Modified: data/python/mhws_py_whw_3.csv
Modified: data/python/mhws_py_whw_7.csv
Modified: data/python/sst_WA.csv
Modified: data/python/sst_WA_miss_ice.csv
Modified: data/python/sst_WA_miss_random.csv
Modified: data/sst_ALL_results.Rda
Modified: data/table_1.csv
Modified: data/table_2.csv
Modified: docs/portrait.pdf
Modified: output/README.md
Modified: output/effect_event.pdf
Modified: output/fig_2_missing_only.pdf
Modified: output/stitch_plot_WA.pdf
Modified: output/stitch_sub_plot_WA.pdf
Modified: poster/Figures/CSIRO_logo.jpeg
Modified: poster/Figures/Dal_logo.jpg
Modified: poster/Figures/all_logo_long.jpg
Modified: poster/Figures/all_logos.jpg
Modified: poster/Figures/logo_stitching.odp
Modified: poster/Figures/ofi_logo.jpg
Modified: poster/Figures/uwc-logo.jpg
Modified: poster/MHWdetection.bib
Modified: poster/MyBib.bib
Modified: poster/landscape.Rmd
Modified: poster/landscape.pdf
Modified: poster/portrait.Rmd
Modified: poster/portrait.pdf
Note that any generated files, e.g. HTML, png, CSS, etc., are not included in this status report because it is ok for generated content to have uncommitted changes.
| File | Version | Author | Date | Message |
|---|---|---|---|---|
| Rmd | ff0bb95 | robwschlegel | 2019-11-06 | Publish the sub-optimal test vignettes |
| Rmd | 448fff3 | Robert William Schlegel | 2019-11-04 | Beginning to tackle the main vignettes |
| Rmd | 158aa0b | robwschlegel | 2019-05-06 | Updated project interface |
| html | 158aa0b | robwschlegel | 2019-05-06 | Updated project interface |
| html | 38559da | robwschlegel | 2019-03-19 | Build site. |
| Rmd | 970b22c | robwschlegel | 2019-03-19 | Publish the vignettes from when this was a pkgdown framework |
| html | fa7fd57 | robwschlegel | 2019-03-19 | Build site. |
| Rmd | 64ac134 | robwschlegel | 2019-03-19 | Publish analysis files |
In this vignette are individual sections that show some of the closer looks performed on the results to ensure that they were behaving as expected.
# The packages used in this analysis
library(tidyverse)
library(heatwaveR)
library(lubridate)
library(ncdf4)
library(doParallel)
# The custom functions written for the analysis
source("code/functions.R")
# We'll use the WA time series and the pixel just adjacent to it
sst_WA_flat <- detrend(sst_WA) %>%
mutate(site = "WA") %>%
select(site, t, temp)
# Find the correct longitude slice of data and load a several pixel transect into the eye of the MHW
# which(c(seq(0.125, 179.875, by = 0.25), seq(-179.875, -0.125, by = 0.25)) == 112.375)
sst_flat <- load_noice_OISST(OISST_files[450]) %>%
filter(lat > -29.5, lat < -27.5) %>%
unite(lon, lat, col = "site", sep = " / ") %>%
group_by(site) %>%
group_modify(~detrend(.x)) %>%
data.frame()
# Bing it to the reference time series
sst_ALL <- rbind(sst_flat, sst_WA_flat)
# unique(sst_ALL$site)
Plot all time series together:
sst_ALL %>%
filter(t >= "2010-01-01", t <= "2011-12-31") %>%
ggplot(aes(x = t, y = temp)) +
geom_line(aes(group = site, colour = site)) +
scale_colour_viridis_d() +
labs(y = "Temp. anomaly (°C)", x = NULL, colour = "Coords")
Run full analyses on the pixels visualised above:
result_ALL <- plyr::ddply(sst_ALL, c("site"), single_analysis, full_seq = T, .parallel = T)
Plot the results:
result_ALL %>%
filter(test == "trend", var == "duration", id == "sum_perc") %>%
ggplot(aes(x = index_vals, y = val)) +
geom_line(aes(group = site, colour = site)) +
scale_colour_viridis_d() +
labs(x = "Long-term trend (°C/decade)", y = "Change from control (% sum of days)", colour = "Coords")
In the figure above we may see that the closer we appraoch the centre of the WA MHW the less of an effect the increasing decadal trend is having on the overall number of MHWs detected. We may deduce that this is because the WA MHW was so intense that it is raising up the 90th percentile so high that even with added decadal warming it is not enough to increase the other MHWs. Now we want to look at how the count of overall events are affected:
result_ALL %>%
filter(test == "trend", var == "count", id == "n_perc") %>%
ggplot(aes(x = index_vals, y = val)) +
geom_line(aes(group = site, colour = site)) +
scale_colour_viridis_d() +
labs(x = "Long-term trend (°C/decade)", y = "Change from control (% count of MHWs)", colour = "Coords")
And there you have it, the reference time series are just super wacky, the results are otherwise as expected.
# -112.125 -28.875 # A pixel negatively affected by window widening
# which(c(seq(0.125, 179.875, by = 0.25), seq(-179.875, -0.125, by = 0.25)) == -112.125)
sst <- load_noice_OISST(OISST_files[992]) %>%
filter(lat == -28.875)
# Detrend the selected ts
sst_flat <- detrend(sst)
# Calculate MHWs from detrended ts
sst_flat_MHW <- detect_event(ts2clm(sst_flat, climatologyPeriod = c("1982-01-01", "2018-12-31")))
# Pull out the largest event in the ts
focus_event <- sst_flat_MHW$event %>%
filter(date_start >= "2009-01-01") %>%
filter(intensity_cumulative == max(intensity_cumulative)) %>%
select(event_no, date_start:date_end, duration, intensity_cumulative, intensity_max) %>%
mutate(intensity_cumulative = round(intensity_cumulative, 2),
intensity_max = round(intensity_max, 2))
# Quickly visualise the largest heatwave in the last 10 years of data
heatwaveR::event_line(sst_flat_MHW, start_date = "2009-01-01", metric = "intensity_cumulative")
# Normal window width
window_5_MHW <- detect_event(ts2clm(sst_flat, climatologyPeriod = c("1982-01-01", "2018-12-31")))
heatwaveR::event_line(window_5_MHW, start_date = "2009-01-01", metric = "intensity_cumulative")
# 10 day window
# Already here we see why the event falls away
# The focus MHW was just staying above the down slope of the seasonal dive into winter
# When the window half width is expanded the seasonal decline becomes less steep and the
# observed temperature is no longer above the 90th percentile
window_10_MHW <- detect_event(ts2clm(sst_flat, climatologyPeriod = c("1982-01-01", "2018-12-31"), windowHalfWidth = 10))
heatwaveR::event_line(window_10_MHW, start_date = "2009-01-01", metric = "intensity_cumulative")
# 20 day window
window_20_MHW <- detect_event(ts2clm(sst_flat, climatologyPeriod = c("1982-01-01", "2018-12-31"), windowHalfWidth = 20))
heatwaveR::event_line(window_20_MHW, start_date = "2009-01-01", metric = "intensity_cumulative")
# 30 day window
window_30_MHW <- detect_event(ts2clm(sst_flat, climatologyPeriod = c("1982-01-01", "2018-12-31"), windowHalfWidth = 30))
heatwaveR::event_line(window_30_MHW, start_date = "2009-01-01", metric = "intensity_cumulative")
# Now let's have a peak at each step along the way, just for laughs
ts2clm_window <- function(window_choice, df = sst_flat){
res <- ts2clm(df, climatologyPeriod = c("1982-01-01", "2018-12-31"), windowHalfWidth = window_choice) %>%
mutate(site_label = paste0("window_",window_choice))
return(res)
}
# Calculate clims
sst_clim <- plyr::ldply(seq(5, 30, by = 5), ts2clm_window, .parallel = T)
# Climatologies doy
sst_clim_only <- sst_clim %>%
select(-t, -temp) %>%
unique()
# Calculate events
sst_event <- sst_clim %>%
group_by(site_label) %>%
group_modify(~detect_event(.x)$event)
# Find largest event in most recent ten years of data
focus_event <- sst_event %>%
filter(date_start >= "2009-01-01") %>%
group_by(site_label) %>%
filter(intensity_cumulative == max(intensity_cumulative)) %>%
ungroup()
# Merge with results for better plotting
sst_focus <- left_join(sst_clim,
focus_event[,c("site_label", "date_start", "date_peak", "date_end")], by = "site_label") %>%
mutate(site_label = factor(site_label, levels = c("window_5", "window_10", "window_15",
"window_20", "window_25", "window_30")))
trend_fig <- fig_1_plot(sst_focus, spread = 150)
trend_fig
# Look at differences between the seas/thresh for each window
sst_clim_only %>%
select(-doy) %>%
gather(key = "var", value = "val", seas, thresh) %>%
group_by(site_label, var) %>%
summarise_if(.predicate = is.numeric, .funs = c("min", "median", "mean", "max")) %>%
ungroup() %>%
gather(key = "stat", value = "val", -site_label, - var) %>%
mutate(site_label = factor(site_label, levels = c("window_5", "window_10", "window_15",
"window_20", "window_25", "window_30"))) %>%
arrange(site_label) %>%
ggplot(aes(x = stat, y = val, colour = site_label)) +
geom_point() +
scale_colour_brewer() +
facet_wrap(~var)
# Now let's look at all of the 1000 random results to see how this shakes out
random_results <- readRDS("../data/random_results_1000.Rda")
unique(random_results$test)
all_clims <- random_results %>%
filter(test %in% c("length", "window_10", "window_20", "window_30"),
index_vals == 30,
var %in% c("seas", "thresh"),
id %in% c("min", "median", "mean", "max", "sd")) %>%
ggplot(aes(x = id, y = val, fill = test)) +
geom_boxplot() +
scale_fill_brewer(palette = "YlOrRd") +
facet_wrap(~var)
all_clims
# Load the random 1000 data
system.time(
random_results <- readRDS("data/random_results_1000.Rda") %>%
unite("site", c(lon, lat))
) # 68 seconds, 15 seconds without the "site" column
# The choice variables for focussing on
var_choice <- data.frame(var = c("count", "duration", "intensity_max", "focus_count", "focus_duration", "focus_intensity_max"),
id = c("n_perc", "sum_perc", "mean_perc", "mean_perc", "sum_perc", "mean_perc"),
stringsAsFactors = F)
# Calculate the full range of quantiles
random_quant <- random_results %>%
right_join(var_choice, by = c("var", "id")) %>%
mutate(test = as.character(test)) %>%
filter(test %in% c("length", "missing", "interp", "trend")) %>%
group_by(test, index_vals, var, id) %>%
summarise(q05 = quantile(val, 0.05),
q25 = quantile(val, 0.25),
q50 = quantile(val, 0.50),
q75 = quantile(val, 0.75),
q95 = quantile(val, 0.95),
iqr50 = q75-q25,
iqr90 = q95-q05) %>%
ungroup()
# Run the linear models at each possible step to deduce where any inflections points may be
# This is determined by tracking the change in R2 values, with lower values being bad
quant_missing <- plyr::ldply(3:50, trend_test, .parallel = T, test_sub = "missing", start_val = 0)
quant_missing_A <- plyr::ldply(3:25, trend_test, .parallel = T, test_sub = "missing", start_val = 0)
quant_missing_B <- plyr::ldply(3:24, trend_test, .parallel = T, test_sub = "missing", start_val = 0.26)
quant_interp <- plyr::ldply(3:50, trend_test, .parallel = T, test_sub = "interp", start_val = 0)
quant_trend <- plyr::ldply(3:30, trend_test, .parallel = T, test_sub = "trend", start_val = 0)
quant_length_A <- plyr::ldply(3:20, trend_test, .parallel = T, test_sub = "length")
quant_length_B <- plyr::ldply(3:7, trend_test, .parallel = T, test_sub = "length", rev_trend = T)
quant_ALL <- rbind(quant_missing_A, quant_missing_B, quant_interp, quant_trend, quant_length_A, quant_length_B)
## Test visuals to determine that the trends above are lekker
# First create a line plot of the results
quant_ALL %>%
filter(test == "missing") %>%
ggplot(aes(x = end_val, y = r2)) +
geom_point(aes(colour = var)) +
geom_line(aes(colour = var)) +
facet_grid(stat~test, scales = "free_x")
# Filter out the trends that cover the correct ranges
trend_filter <- data.frame(test = c("length", "length", "missing", "missing", "interp", "trend"),
start_val = c(30, 30, 0, 0.26, 0, 0),
end_val = c(10, 37, 0.25, 0.5, 0.5, 0.3))
quant_filter <- quant_ALL %>%
right_join(trend_filter, by = c("test", "start_val", "end_val")) %>%
mutate(slope = ifelse(test == "length" & end_val == 10, -slope, slope),
end_point = end_val*slope) %>%
filter(stat != "iqr50", stat != "iqr90")
# Then project them onto the real data
ggplot(random_quant) +
# 90 CI crossbars
# Need different lines for tests due to the different x-axis interval sizes
geom_crossbar(data = filter(random_quant, test == "length"),
aes(x = index_vals, y = 0, ymin = q05, ymax = q95),
fatten = 0, fill = "grey70", colour = NA, width = 1) +
geom_crossbar(data = filter(random_quant, test != "length"),
aes(x = index_vals, y = 0, ymin = q05, ymax = q95),
fatten = 0, fill = "grey70", colour = NA, width = 0.01) +
# IQR Crossbars
geom_crossbar(data = filter(random_quant, test == "length"),
aes(x = index_vals, y = 0, ymin = q25, ymax = q75),
fatten = 0, fill = "grey50", width = 1) +
geom_crossbar(data = filter(random_quant, test != "length"),
aes(x = index_vals, y = 0, ymin = q25, ymax = q75),
fatten = 0, fill = "grey50", width = 0.01) +
# Median segments
geom_crossbar(data = filter(random_quant, test == "length"),
aes(x = index_vals, y = 0, ymin = q50, ymax = q50),
fatten = 0, fill = NA, colour = "black", width = 1) +
geom_crossbar(data = filter(random_quant, test != "length"),
aes(x = index_vals, y = 0, ymin = q50, ymax = q50),
fatten = 0, fill = NA, colour = "black", width = 0.01) +
geom_hline(aes(yintercept = 0), colour = "black", linetype = "dashed") +
geom_segment(data = quant_filter, aes(x = start_val, y = intercept, xend = end_val, yend = end_point, colour = stat)) +
scale_colour_brewer(palette = "Dark2") +
scale_x_continuous(expand = c(0, 0)) +
facet_grid(var ~ test, scales = "free", switch = "both") +
theme(legend.position = "top")
sessionInfo()
R version 3.6.1 (2019-07-05)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 16.04.6 LTS
Matrix products: default
BLAS: /usr/lib/openblas-base/libblas.so.3
LAPACK: /usr/lib/libopenblasp-r0.2.18.so
locale:
[1] LC_CTYPE=en_CA.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_CA.UTF-8 LC_COLLATE=en_CA.UTF-8
[5] LC_MONETARY=en_CA.UTF-8 LC_MESSAGES=en_CA.UTF-8
[7] LC_PAPER=en_CA.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_CA.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] parallel stats graphics grDevices utils datasets methods
[8] base
other attached packages:
[1] doParallel_1.0.15 iterators_1.0.10 foreach_1.4.4
[4] ncdf4_1.17 lubridate_1.7.4 heatwaveR_<IP_ADDRESS>03
[7] forcats_0.4.0 stringr_1.4.0 dplyr_0.8.3
[10] purrr_0.3.3 readr_1.3.1 tidyr_1.0.0
[13] tibble_2.1.3 ggplot2_<IP_ADDRESS>00 tidyverse_1.2.1
loaded via a namespace (and not attached):
[1] tidyselect_0.2.5 xfun_0.10 haven_2.1.1
[4] lattice_0.20-35 colorspace_1.4-1 vctrs_0.2.0
[7] generics_0.0.2 viridisLite_0.3.0 htmltools_0.4.0
[10] yaml_2.2.0 plotly_4.9.0 rlang_0.4.1
[13] R.oo_1.22.0 pillar_1.4.2 glue_1.3.1
[16] withr_2.1.2 R.utils_2.7.0 modelr_0.1.5
[19] readxl_1.3.1 lifecycle_0.1.0 munsell_0.5.0
[22] gtable_0.3.0 workflowr_1.1.1 cellranger_1.1.0
[25] rvest_0.3.4 R.methodsS3_1.7.1 htmlwidgets_1.5.1
[28] codetools_0.2-15 evaluate_0.14 labeling_0.3
[31] knitr_1.25 broom_0.5.2 Rcpp_1.0.2
[34] backports_1.1.5 scales_1.0.0 jsonlite_1.6
[37] hms_0.5.1 digest_0.6.22 stringi_1.4.3
[40] grid_3.6.1 rprojroot_1.3-2 cli_1.1.0
[43] tools_3.6.1 maps_3.3.0 magrittr_1.5
[46] lazyeval_0.2.2 crayon_1.3.4 whisker_0.4
[49] pkgconfig_2.0.3 zeallot_0.1.0 data.table_1.12.6
[52] xml2_1.2.2 assertthat_0.2.1 rmarkdown_1.16
[55] httr_1.4.1 rstudioapi_0.10 R6_2.4.0
[58] nlme_3.1-137 git2r_0.23.0 compiler_3.6.1
This reproducible R Markdown analysis was created with workflowr 1.1.1


Generation
- Radiotap Header
- Management
- Association Request
- Association Response
- Reassociation Request
- Ressociation Response
- Probe Request
- Probe Response
- Timing Advertisement
- Beacon
- ATIM
- Disassociation
- Deauthentication
- Action
- Action No ACK
- Control
- RTS (Request-to-Send)
- CTS (Clear-to-Send)
- Data
- Data Frame
- QoS Data Frame
- EAPOL
Parsing
- Radiotap Header
- Management
- Association Request
- Association Response
- Reassociation Request
- Ressociation Response
- Probe Request
- Probe Response
- Timing Advertisement
- Beacon
- ATIM
- Disassociation
- Deauthentication
- Action
- Action No ACK
- Control
- RTS (Request-to-Send)
- CTS (Clear-to-Send)
- Data
- Data Frame (Partial)
- QoS Data Frame (Partial)
- EAPOL


superbiclust: Generating Robust Biclusters from a Bicluster Set (Ensemble
Biclustering)
Biclusters are submatrices in the data matrix which
satisfy certain conditions of homogeneity. Package contains
functions for generating robust biclusters with respect to the
initialization parameters for a given bicluster solution
contained in a bicluster set in data, the procedure is also
known as ensemble biclustering. The set of biclusters is
evaluated based on the similarity of its elements (the
overlap), and afterwards the hierarchical tree is constructed
to obtain cut-off points for the classes of robust biclusters.
The result is a number of robust (or super) biclusters with
none or low overlap.
| Version: |
1.1 |
| Depends: |
biclust, fabia |
| Imports: |
methods, Matrix |
| Published: |
2014-11-27 |
| Author: |
Tatsiana Khamiakova |
| Maintainer: |
Tatsiana Khamiakova <tatsiana.khamiakova at uhasselt.be> |
| License: |
GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| NeedsCompilation: |
no |
| CRAN checks: |
superbiclust results |
Downloads:
Reverse dependencies:
Linking:
Please use the canonical form
https://CRAN.R-project.org/package=superbiclust
to link to this page.


Located on the NW of the island, about 15km west of the capital, St Dennis. Port de la Pointe des Galets is usually referred to simply as "Le Port".
It is an artificial harbour in the western part of Le Port area. This is an industrial area with little in the way of attractions for a visitor.
Position 20°56'10"S, 55°16'42"E (harbour entrance)
See Reunion Island Clearance for full details of clearing in and out here.
If planning to arrive at Le Port, it is recommended that you ensure you have a berth (email your request) before leaving your previous port. It is unlikely however you will be turned away should you arrive unannounced.
Make sure you receive acknowledgement of the receipt of your Arrival Notification form (Declaration De D'Entree ).
If arriving outside marina hours, tie up alongside the fisherman's wharf south of the entrance (depth is 5.5m). Alterntively proceed farther south to the marina and tie up alongside the reception pontoon, in front of the Port Captain’s office (the architecture of which was inspired by the Sydney Opera House).
Deep-drafted boats should not proceed beyond the fishing wharf, where the depth is 5.5 m. Contact the marina manager who will advise on the correct procedure.
Yachts which arrive outside working hours usually have to wait until offices open.
When planning on departing, it's recommended to clear out 2 days before your departure .
Last updated June 2016.
The two parts of this marina are managed by the same team. The office is in the old marina. It is the small Sydney Opera House looking building in the northeast corner.
The old marina (Port de Plaisance) is south of the commercial harbour. (photo left)
August 2015: There is now a new 80 berth marina here, located on the eastern side of the commercial harbour and just 5 minute walk from the town centre. This is where visiting yachts are most likely to be allocated a berth.
Photo (right) of the new marina from Jason Trautz
It is important to contact the marina BEFORE arrival as you may be turned away if there is no space.
Jerome Belhuerne manages both marinas.
Last updated August 2016.


前天收到来自 Kloudsec 的邮件，说 Kloudsec 将于 2016/08/01 停止服务。Bad news，请容许我做一个悲伤的表情。
邮件原文
Hi all,
It is with great sadness that I have to inform you that Kloudsec is shutting down.
Why is Kloudsec shutting down?
- We have been funding Kloudsec out of our own pocket
- Kloudsec is very expensive to maintain (upwards to $10000 / month)
- We are unable to make money from Kloudsec, nor raise any funds for it
We will shut Kloudsec down on 1st August
From now till then, we will not be maintaining the service.
Migrating out of Kloudsec
Migrating out of Kloudsec is extremely simple. All you have to do is to point your domain back at its origin server.
You will lose the HTTPS cert. But you can fix that by
- either issuing your own LetsEncrypt certificate
- or using Cloudflare.
Lessons learnt
From the start, we are extremely lucky to have a small revenue stream that let us to experiment with cool products. And Kloudsec is one of our biggest experiment.
There are a couple of things we did right, and a couple we did wrong.
We did right by having the right team come together, building a seriously sophiscated product. (Thank you Ivan and Bach)
We did wrong by building a sophiscated product that made it hard for a small team to maintain, let alone scale.
We did wrong by building a product that was not immediately useful enough so much so that people will pay for.
We did wrong by building a product that was too expensive to maintain.
We did wrong by assuming that traction solves all ailments. Not in Singapore, you don’t. There is no good venture money for real hard-tech software startups in Singapore.
We did right with pulling the plug so we can learn from these mistakes and work on the next product.
What’s next for us
From Kloudsec, we identified a few niche problems that we will be looking to solve. In other words, we will continually be building.
And you can be sure from our next product onwards, we will charge right from day 1 so we can sustain the product financially.
Lastly, thank you!
Thank you. Most of you have spoken to me, or read the posts I’ve written on Github, on Hacker News, or Producthunt about Kloudsec. You guys took a leap of faith in trusting this small unknown team and product, and used us.
I’m sorry to disappoint you with this piece of news, but I’ll try better next time.
If you like, you can follow me on Twitter at @nubela. You can also contact me at anytime at<EMAIL_ADDRESS>Steven Goh.
我的决定
Sigh!
想起五月份的时候我还欢天喜地地给博客 HTTPS 化了，并为此写了一篇博客 为绑定域名的 GitHub Pages 启用 HTTPS，还将它推荐到了 掘金，收获了 64 次收藏，并在那篇文章下创下了我个人博客单篇评论数最多的记录。
没想到还没等到 Kloudsec 第一次为我的域名证书自动续期，它家的服务就要关停了。
但也没有办法，使用第三方的服务，特别是初创公司的服务本就有这种风险。
本来 GitHub Pages + Custom Domain + HTTPS 也还有其它解决方案，但我已不想再折腾了，多引入一层中间服务，就多一层出状况的风险，我只是想作一名安静地写博客的美男子啊。
所以决定去掉自定义域名的 HTTPS，恢复 HTTP，现在 GitHub Pages 已经支持 *.github.io
域名的 HTTPS，除非哪天它原生支持 Custom Domain 的 HTTPS，否则我不再折腾这个事情。
采取的措施
当初之所以想开启 HTTPS 的一个重要原因就是 Google 收录了博客的 HTTPS 链接，但是证书不对导致用户打不开或者有警告，既然使用自定义域名没有办法让证书对，那就让 Google 不收录 HTTPS 的链接吧。
告诉 Google 不收录 HTTPS 链接
如果一个页面使用 HTTPS 和 HTTP 都能访问，那如果想 Google 只收录 HTTP 版，而不收录 HTTPS 版，那可以在页面的 head
里添加 canonical
给爬虫以建议，具体方法如下：
<link rel="canonical" href="http 开头的 URL">


Jason Larkin's MS Projects
Time-Evolution of a Fractal Distribution: Particle Concentrations in Free-Surface Turbulence
Power-law distributions of particle concentration in free-surface flows
Decorrelating a Compressible Turbulent Flow: an Experiment
These projects were carried out under the advisement of Walter Goldburg at the University of Pittsburgh Department of Physics.Here is a cool movie for those who are passing through quickly...
And, thanks to the great analysis of S. Stefanus, the results from our experimental data made the cover of Journal of Fluids October 2011:


| Confirmed | Recovered | Deaths |
|---|---|---|
| 9150 +453 | 5618 | 137 +5 |
Helpline number: +91-11-23978046
| # | State | Last-Count | Rise/Stable |
|---|---|---|---|
| 1 | Maharashtra | 132K | --- |
| 2 | Delhi | 59K | --- |
| 3 | Rajasthan | 14K | --- |
| 4 | Karnataka | 9K | --- |
| 5 | Tamil Nadu | 59K | --- |
| 6 | Gujarat | 27K | --- |
| 7 | Uttar Pradesh | 17K | --- |
| # | Country | Count | Graph |
|---|---|---|---|
| 1 | World | --- | |
| 2 | United States of America | --- | |
| 3 | China | --- | |
| 4 | India | --- | |
| 5 | Russia | --- | |
| 6 | United Kingdom | --- | |
| 7 | France | --- |
The Financial Times
View NewsCNBC Network 18
View NewsHindustan Times
View NewsCoronavirus disease (COVID-19) is an infectious disease caused by a newly discovered coronavirus.
Most common symptoms:
• fever
• dry cough
• tiredness
• Clean your hands often. Use soap and water, or
an
alcohol-based hand rub.
• Maintain social distancing
• Cover your nose and mouth with your bent elbow or a tissue when you cough or sneeze.
• Stay home if you feel unwell.
• If you have a fever, cough and difficulty breathing, seek medical attention. Call in
advance.
• Follow the directions of your local health authority.


{{ article.title }}
{% import 'translations.html' as translations with context %} {{ translations.translations_for(article) }}This post is part of a series:
-
{% for part_article in article.metadata.parts_articles %}
- {{ part_article.title }} {% endfor %}
{% endif %}
Comments


{% extends 'base.html' %} {% block title %} Our Staff {% endblock %} {% block main %}
Don't be shy! Have a read!
Alastair is one half of the heart of A.D's Machinery. Since the beginning of our company, Alastair has dedicated himself towards giving his best in all areas that makes for a successful business. He's been in this business for over 25 years, so when you talk to him you know you're speaking to one of the most knowledgeable people around.
Robyn is the other half of the heart of A.D's Machinery. If you ask anyone who knows her, you'll know that she's the real brains behind our business (but don't tell Alastair that!). Her experience tracking down the best range of products to sell is unsurpassed - you won't find a single dud on our shelves, and Robyn is to thank for that.


Basic Web Technologies
The basics of how webpages work
Anatomy of a webpage
Webpages consist (mostly) of 3 main components
HTML
The Skeleton of a webpage (nouns)
JavaScript
The muscles/nervous system of a webpage (verbs)
CSS
The skin/clothes of a webpage (adjectives)
HTML
Any nouns on a webpage are typically html (i.e. that block of text, that image etc.)
What Does HTML Do?
HTML is a markup language, this means it's only job is to say how data should be organized. None of the data processing takes place in HTML
How do you write HTML?
HTML is a collection of tags and attributes, tags are the most general way of saying how you want something to appear and attributes set special behaviors for tags
Each tag has an opening tag (<tag>) that is two angle brackets with the tag name inside. Followed by the content of the tag (i.e. some text), and finally the closing tag which is the same as an opening tag with a forward slash (</tag>)
Any attributes are added in the opening tag before the second angle bracket; <tag attribute='value'></tag>
HTML Example

This html gives you regular text

and this html gives you larger text

Which results in:
This html gives you regular text
and this html gives you larger text
Here are some common HTML tags
But first, if you ever see  this is a comment in HTML it's just there for your benefit the browser ignores it
Heading Tags
Heading tags are used to create larger text, they are a h with a number and get smaller as the number gets larger

Heading 2

Heading 3

Heading 4

Paragraph Tags
Paragraph tags are used to create smaller sized text and typically contain longer content, they are denoted with a p

paragraph tags

Also emphasis () and strong () tags can be put inside paragraph tags to add italicization and bolding
Likewise anchor tags () can be used to add links in text (with a href attribute); google gives you: google
List Tags
You can make a bullet point (unordered) and/or numbered (ordered) list in HTML using the ul and ol tags with list item (
) tags inside
Example:

 A

 B

 C

 D

Which results in:
- A
- B
- C
- D
Divider Tags
Divider (usually called div) tags are used to organize other groups of tags together, for example all the text in this slide is inside a

Some people also use section tags;
 to do a similar thing. These slides actually use a section tag with a div inside it:

Divider Tags

 Divider (usually called div) tags are used to organize other groups of tags together, for example all the text in this slide is inside a

 Some people also use section tags;
 to do a similar thing. These slides actually use a section tag with a div inside it:
 ...

Image Tags
Last but not least are image tags, these are special tags because they don't need to be ended and all they need is a src attribute with a path to the image you want to use (also width and height are useful attributes)

JavaScript
Any verbs on the website are typically JavaScript (i.e. That disappearing navigation bar, that transition animation etc.)
What Does JavaScript Do?
JavaScript is an in page programming language, meaning anything that happens on a webpage without needing to reload is typically JavaScript
For example the slide transitions on this presentation are all in JavaScript
Plain Script Tag
The first way to use javascript is by writing it in an HTML file using a script tag

Link Script Tag
The second way is to link to a javascript file using the src attribute and a URL or path to a .js file

This allows you to bring in a javascript file as if it was written using a plain script tag
CSS
Any adjectives on the page are typically CSS (i.e. that white text, that large text etc.)
What does CSS Do?
CSS is a way of defining what HTML tags look like, for example you can specify that all paragraph tags should be a certain color, or all heading 2 tags should be a certain size
You can also target specific content by using the id or class attributes on those tags, more info on that here
Style Tag
You can write CSS in an HTML document inside a style tag