Installing Python#
MNE-Python requires Python and several Python packages. MNE-Python
version 1.4 requires Python version 3.8 or higher. We
recommend the Anaconda distribution of Python, which comes with more than
250 scientific packages pre-bundled and includes the conda
command line
tool for installing new packages and managing different package sets
(“environments”) for different projects.
To get started, follow the installation instructions for Anaconda.
When you are done, if you type the following commands in a command shell,
you should see outputs similar to the following (assuming you installed
conda to /home/user/anaconda3
):
$ conda --version && python --version
conda 4.9.2
Python 3.8.13 :: Anaconda, Inc.
$ which python
/home/user/anaconda3/bin/python
$ which pip
/home/user/anaconda3/bin/pip
$ conda --version && python --version
conda 4.9.2
Python 3.8.13
$ which python
/Users/user/opt/anaconda3/bin/python
$ which pip
/Users/user/opt/anaconda3/bin/pip
Most of our instructions start with $
, which indicates
that the commands are designed to be run from a bash
command shell.
Windows command prompts do not expose the same command-line tools as
bash
shells, so commands like which
will not work. You can test
your installation in Windows cmd.exe
shells with where
instead:
> where python
C:\Users\user\anaconda3\python.exe
> where pip
C:\Users\user\anaconda3\Scripts\pip.exe
If you get an error…
If you see something like:
conda: command not found
It means that your PATH
variable (what the system uses to find
programs) is not set properly. In a correct installation, doing:
$ echo $PATH
...:/home/user/anaconda3/bin:...
Will show the Anaconda binary path (above) somewhere in the output
(probably at or near the beginning), but the command not found
error
suggests that it is missing.
On Linux or macOS, the installer should have put something
like the following in your ~/.bashrc
or ~/.bash_profile
(or your
.zprofile
if you’re using macOS Catalina or later, where the default
shell is zsh
):
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup= ...
...
# <<< conda initialize <<<
If this is missing, it is possible that you are not on the same shell that was used during the installation. You can verify which shell you are on by using the command:
$ echo $SHELL
If you do not find this line in the configuration file for the shell you are using (bash, zsh, tcsh, etc.), try running:
conda init
in your command shell. If your shell is not cmd.exe
(Windows) or
bash
(Linux, macOS) you will need to pass the name of the shell to the
conda init
command. See conda init --help
for more info and
supported shells.
You can also consult the Anaconda documentation and search for
Anaconda install tips (Stack Overflow results are often helpful)
to fix these or other problems when conda
does not work.


"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Container for entities which are known by the client
* It's needed for deduplication when client obtain the same object several times
*/
class EntitiesCache {
constructor() {
this.names = new Map();
this.entities = new Map();
}
store(entity) {
let stored = this.entities.get(entity.sid);
if (stored) {
return stored;
}
this.entities.set(entity.sid, entity);
if (entity.uniqueName) {
this.names.set(entity.type + '::' + entity.uniqueName, entity.sid);
}
return entity;
}
getResolved(id, type) {
let resolvedSid = this.names.get(type + '::' + id);
return resolvedSid ? this.entities.get(resolvedSid) : null;
}
get(id, type) {
return this.entities.get(id) || this.getResolved(id, type) || null;
}
remove(sid) {
let cached = this.entities.get(sid);
if (cached) {
this.entities.delete(sid);
if (cached.uniqueName) {
this.names.delete(cached.type + '::' + cached.uniqueName);
}
}
}
}
exports.EntitiesCache = EntitiesCache;
|


Polish notation
问题描述 :
Reverse Polish notation (RPN) is a method for representing expressions in which the operator symbol is placed after the arguments being operated on.
Polish notation, in which the operator comes before the operands, was invented in the 1920s by the Polish mathematician Jan Lucasiewicz.
In the late 1950s, Australian philosopher and computer scientist Charles L. Hamblin suggested placing the operator after the operands and hence created reverse polish notation.
Polish notation, in which the operator comes before the operands, was invented in the 1920s by the Polish mathematician Jan Lucasiewicz.
In the late 1950s, Australian philosopher and computer scientist Charles L. Hamblin suggested placing the operator after the operands and hence created reverse polish notation.
RPN has the property that brackets are not required to represent the order of evaluation or grouping of the terms.
RPN expressions are simply evaluated from left to right and this greatly simplifies the computation of the expression within computer programs.
As an example, the arithmetic expression (3+4)*5 can be expressed in RPN as 3 4 + 5 *.
Reverse Polish notation, also known as postfix notation, contrasts with the infix notation of standard arithmetic expressions in which the operator symbol appears between the operands. So Polish notation just as prefix notation.
Now, give you a string of standard arithmetic expressions, please tell me the Polish notation and the value of expressions.
输入:
There’re have multi-case. Every case put in one line, the expressions just contain some positive integers(all less than 100, the number of integers less than 20), bi-operand operators(only have 3 kinds : +,-,*) and some brackets’(‘,’)’.
you can assume the expressions was valid.
you can assume the expressions was valid.
输出:
There’re have multi-case. Every case put in one line, the expressions just contain some positive integers(all less than 100, the number of integers less than 20), bi-operand operators(only have 3 kinds : +,-,*) and some brackets’(‘,’)’.
you can assume the expressions was valid.
you can assume the expressions was valid.
样例输入:
1+2-3*(4-5) 1+2*(3-4)-5*6
样例输出:
Case 1: - + 1 2 * 3 - 4 5 6 Case 2: - + 1 * 2 - 3 4 * 5 6 -31
(adsbygoogle = window.adsbygoogle || []).push({});
并不是.,…买东西的都是泰国人……因为便宜
还是有些难度的！
递归还真是一门学问，学习了
题目需要求解的是最小值，而且没有考虑可能存在环，比如
0 0 0 0 0
1 1 1 1 0
1 0 0 0 0
1 0 1 0 1
1 0 0 0 0
会陷入死循环
其实国内大部分公司对算法都不够重视。特别是中小型公司老板根本都不懂技术，也不懂什么是算法，从而也不要求程序员懂什么算法，做程序从来不考虑性能问题，只要页面能显示出来就是好程序，这是国内的现状，很无奈。
第63行是不是漏了 return 1 + dis_right; ?
很好。代码比书上的简练！
第一个数表示数列的个数，5表示之后有5个数
终于明白了递归和dp的关系，多谢分享！
Thanks i enjoy your write-up about Why We Keep track of | J Squared Consulting
,,,,,,,,,,,,,,,
刚开始学习，为啥会报错了
We do not harbor that I couldn’t remove other individuals’ problems whenever this arrived at.
老实说，这种方法就是穷举，复杂度是2^n，之所以能够AC是应为题目的测试数据有问题，要么数据量很小，要么能够得到k == t，否则即使n = 30，也要很久才能得出结果，本人亲测
头文件的颜色是有意设成这种灰暗色的吗？感觉看不清


One thing that we wanted to build into ‘Tplyr’ to make it a user friendly package is the ability to eliminate redundant code where possible. This is why there are several options available in ‘Tplyr’ to allow you to control things at your session level instead of each individual table, or even each individual layer.
The following are the options available in ‘Tplyr’ and their descriptions:
| Option | Description |
|---|---|
| tplyr.count_layer_default_formats | The default format strings for a count layer. Defaults to an auto-calculated N width, and (xxx.x%) for non-distinct counts. Risk difference formats default to dif (low CI, high CI), all with 2 integer spaces and 3 decimal places. |
| tplyr.shift_layer_default_formats | The default shift layer format. Defaults to an auto-calculated N width. |
| tplyr.desc_layer_default_formats | The default descriptive statistics layer format. Defaults to “n”, “Mean (SD)”, “Median”, “Q1, Q3”, “Min, Max”, and “Missing”. Everything except “n” and “Missing” use auto-precision. Mean defaults to +1 decimal places and Standard Deviation defaults to +2. |
| tplyr.precision_cap | The default precision cap for auto-precision. Both integer and decimal places default to 99, essentially ensuring that precision is not capped by default. |
| tplyr.custom_summaries | Default custom summaries available to Tplyr. Defaults to NULL, as Tplyr’s defaults are seen as built-ins and not custom summaries. |
| tplyr.scipen | The default ‘scipen’ setting used while Tplyr is executing. Defaults to 1000. See the R documentation on the ‘scipen’ option to understand more, but this allows you to control how small a number must be before scientific notation is used when a number is string formatted in presentation. |
| tplyr.quantile_type | The default quantile algorithm used by Tpylr when using the built in summaries for Q1, Q3, and IQR. |
Each of these options allows you to set these settings in one place, and every ‘Tplyr’ table you create will inherit your option settings as defaults. This allows your table code to be more concise, and centralize where you need to make an update when your code has to be adjusted. This vignette is dedicated to helping you understand how to leverage each of these options properly.
Declaring string formats and summaries that need to be performed is one of the more verbose parts of Tplyr. Furthermore, this is something that will often be fairly consistent within a study, as you’ll likely want to look across a consistent set of descriptive statistics, or your count/shift tables will likely require the same sort of n (%) formatting.
Using the format options is very similar to setting a string format. The only difference is that you need to enter the string formats as a named list instead of as separate parameters to a function call.
options( # Count layer defaults tplyr.count_layer_default_formats = list(n_counts = f_str("xxx (xx%)", n, pct), riskdiff = f_str('xx.xxx', dif) ), # Desc layer defaults tplyr.desc_layer_default_formats = list("n" = f_str("xxx", n), "Mean (SD)"= f_str("a.a+1 (a.a+2)", mean, sd), "Median" = f_str("a.a+4", median) ), # Shift layer defaults tplyr.shift_layer_default_formats = list(f_str("xxx", n)) )
Here you can see that ‘Tplyr’ picks up these option changes. In the table below, we didn’t use set_format_strings()
anywhere - instead we let ‘Tplyr’ pick up the default formats from the options.
tplyr_table(adsl, TRT01P) %>% add_layer( group_desc(AGE, by = "Age (years)") ) %>% add_layer( group_count(AGEGR1, by = "Categorical Age Groups") ) %>% build() %>% kable()
| row_label1 | row_label2 | var1_Placebo | var1_Xanomeline High Dose | var1_Xanomeline Low Dose | ord_layer_index | ord_layer_1 | ord_layer_2 |
|---|---|---|---|---|---|---|---|
| Age (years) | n | 86 | 84 | 84 | 1 | 1 | 1 |
| Age (years) | Mean (SD) | 75.2 ( 8.59) | 74.4 ( 7.89) | 75.7 ( 8.29) | 1 | 1 | 2 |
| Age (years) | Median | 76.0 | 76.0 | 77.5 | 1 | 1 | 3 |
| Age (years) | Q1, Q3 | 69.2, 81.8 | 70.8, 80.0 | 71.0, 82.0 | 1 | 1 | 4 |
| Age (years) | Min, Max | 52, 89 | 56, 88 | 51, 88 | 1 | 1 | 5 |
| Age (years) | Missing | 0 | 0 | 0 | 1 | 1 | 6 |
| Categorical Age Groups | <65 | 14 ( 16.3%) | 11 ( 13.1%) | 8 ( 9.5%) | 2 | 1 | 1 |
| Categorical Age Groups | >80 | 30 ( 34.9%) | 18 ( 21.4%) | 29 ( 34.5%) | 2 | 1 | 2 |
| Categorical Age Groups | 65-80 | 42 ( 48.8%) | 55 ( 65.5%) | 47 ( 56.0%) | 2 | 1 | 3 |
One important thing to understand about how these options work in particular is the scoping.
tplyr_table()
level will override the ‘Tplyr’ options and extends to any layer of the specified type in the current table.tplyr_layer()
level will always be prioritized over ‘Tplyr’ options and any tplyr_table()
formats set. This has the narrowest scope and will always be used when specified.To demonstrate, consider the following. The ‘Tplyr’ options remain set from the block above.
tplyr_table(adsl, TRT01P) %>% set_count_layer_formats(n_counts = f_str("xx (xxx%)", n, pct)) %>% set_desc_layer_formats("Mean (SD)" = f_str("a.a+1 (a.a+2)", mean, sd)) %>% add_layer( group_desc(AGE, by = "Age (Years)") ) %>% add_layer( group_count(AGEGR1, by = "Categorical Age Groups") ) %>% add_layer( group_count(ETHNIC, by = "Ethnicity") %>% set_format_strings(f_str("xxxxx (xx.xxx%)", n, pct)) ) %>% build() %>% kable()
| row_label1 | row_label2 | var1_Placebo | var1_Xanomeline High Dose | var1_Xanomeline Low Dose | ord_layer_index | ord_layer_1 | ord_layer_2 |
|---|---|---|---|---|---|---|---|
| Age (Years) | Mean (SD) | 75.2 ( 8.59) | 74.4 ( 7.89) | 75.7 ( 8.29) | 1 | 1 | 1 |
| Categorical Age Groups | <65 | 14 ( 16%) | 11 ( 13%) | 8 ( 10%) | 2 | 1 | 1 |
| Categorical Age Groups | >80 | 30 ( 35%) | 18 ( 21%) | 29 ( 35%) | 2 | 1 | 2 |
| Categorical Age Groups | 65-80 | 42 ( 49%) | 55 ( 65%) | 47 ( 56%) | 2 | 1 | 3 |
| Ethnicity | HISPANIC OR LATINO | 3 ( 3.488%) | 3 ( 3.571%) | 6 ( 7.143%) | 3 | 1 | 1 |
| Ethnicity | NOT HISPANIC OR LATINO | 83 (96.512%) | 81 (96.429%) | 78 (92.857%) | 3 | 1 | 2 |
In the above output:
set_desc_layer_formats()
set_count_layer_formats()
set_format_strings()
Each of the outputs ignores the ‘Tpylr’ option defaults as the defined.
‘Tplyr’ defaults to avoiding capping precision. We do this because capping precision should be a concious decision, where you as the user specifically set the limit of how many decimal places are relevant to a specific result. One way to cap precision is by using the cap
parameter within set_format_strings()
. But perhaps you have a specific limit to what you’d like to see on any output. Here, we offer the tplyr.precision_cap
option to set whatever cap you wish.
Similar to the layer defaults, setting a precision cap at the layer level will override the tplyr.precision_cap
option.
tplyr_table(adsl, TRT01P) %>% add_layer( group_desc(HEIGHTBL, by = "Height at Baseline") %>% set_format_strings( 'Mean (SD)' = f_str('a.a (a.a+1)', mean, sd) ) ) %>% add_layer( group_desc(HEIGHTBL, by = "Height at Baseline (Limited)") %>% set_format_strings( 'Mean (SD)' = f_str('a.a (a.a+1)', mean, sd), cap = c('int'= 1, 'dec'=0) ) ) %>% build() %>% kable()
| row_label1 | row_label2 | var1_Placebo | var1_Xanomeline High Dose | var1_Xanomeline Low Dose | ord_layer_index | ord_layer_1 | ord_layer_2 |
|---|---|---|---|---|---|---|---|
| Height at Baseline | Mean (SD) | 162.6 (11.52) | 165.8 (10.13) | 163.4 (10.42) | 1 | 1 | 1 |
| Height at Baseline (Limited) | Mean (SD) | 163 (11.5) | 166 (10.1) | 163 (10.4) | 2 | 1 | 1 |
Both layers in the above example are summarizing the same data. The top layer is using the tplyr.precision_cap
option set above, which limits to 2 integer place and 2 decimal places. Recall a few things about auto precision:
The bottom layer overrides the ‘Tplyr’ option. Instead, integers are capped at 1 space, and decimals are capped at 0.
Custom summaries allow you to extend the capabilities of descriptive statistics layers in ‘Tplyr’. Maybe our defaults don’t work how you’d like them to, or maybe you have some custom functions within your organization that you commonly would like to use. Specifying the custom summaries you wish to use in every table would prove quite tedious - therefore, the tplyr.custom_summaries
option is a better choice.
options(tplyr.custom_summaries = rlang::quos( geometric_mean = exp(sum(log(.var[.var > 0]),na.rm=TRUE) / length(.var)) ))
Note that the table code used to produce the output is the same. Now ‘Tplyr’ used the custom summary function for mean
as specified in the tplyr.custom_summaries
option. Also note the use of rlang::quos
. We’ve done our best to mask this from the user everywhere possible and make the interfaces clean and intuitive, but a great deal of ‘Tplyr’ is built using ‘rlang’ and non-standard evaluation. Within this option is one of the very few instances where a user needs to concern themselves with the use of quosures. If you’d like to learn more about non-standard evaluation and quosures, we recommend Section IV in Advanced R.
Now that geometric mean is set within the ‘Tplyr’ options, you can use it within your descriptive statistics layers, just like it was one of the built-in summaries.
tplyr_table(adsl, TRT01P) %>% add_layer( group_desc(AGE) %>% set_format_strings('Geometric Mean' = f_str('xx.xx', geometric_mean)) ) %>% build() %>% kable()
| row_label1 | var1_Placebo | var1_Xanomeline High Dose | var1_Xanomeline Low Dose | ord_layer_index | ord_layer_1 |
|---|---|---|---|---|---|
| Geometric Mean | 74.70 | 73.94 | 75.18 | 1 | 1 |
By default, R will switch to scientific notation for a number less than .001. This is controlled by the scipen
option. The default value of scipen
is 0. If you’d like to increase the decimal places required for scientific notation to be triggered, increase the value of scipen
. The value of scipen
is the number of orders of ten smaller (i.e. decimal places preceeded by 0’s) required to switch to scientific notation. Decreasing the value of scipen will cause R to switch to scientific locaton for larger numbers.
This is easier to understand with an example.
options(scipen = 0) # This is the default .0001 #> [1] 1e-04 options(scipen = 1) # Require 5 decimal places instead .0001 #> [1] 0.0001 .00001 #> [1] 1e-05 options(scipen = -1) # Only require 3 decimal places .001 #> [1] 1e-03
In ‘Tplyr’, we have the option tplyr.scipen
. This is the scipen
setting that will be used only while the ‘Tplyr’ table is being built. This allows you to use a different scipen
setting within ‘Tplyr’ than your R session. The default value we use in ‘Tplyr’ is 9999, which is intended to totally prevent numbers from switching to scientific notation. We want this to be a concious decision that you make in order to prevent any unexpected outputs.
options(tplyr.scipen = -3) t <- tplyr_table(adae, TRTA) %>% add_layer( group_count(AEDECOD) %>% add_risk_diff(c('Xanomeline Low Dose', 'Placebo')) ) suppressWarnings(build(t)) %>% # Chi-squared warnings occur with small samples head() %>% kable()
| row_label1 | var1_Placebo | var1_Xanomeline High Dose | var1_Xanomeline Low Dose | ord_layer_index | rdiff_Xanomeline Low Dose_Placebo | ord_layer_1 |
|---|---|---|---|---|---|---|
| ACTINIC KERATOSIS | 0 ( 0.0%) | 1 (9e-01%) | 0 ( 0.0%) | 1 | 0.000 ( 0.000, 0.000) | 1 |
| ALOPECIA | 1 ( 2.1%) | 0 ( 0.0%) | 0 ( 0.0%) | 1 | -2.1e-02 (-7.7e-02, 3.5e-02) | 2 |
| BLISTER | 0 ( 0.0%) | 2 ( 1.8%) | 8 ( 6.8%) | 1 | 6.8e-02 ( 8e-03, 0.128) | 3 |
| COLD SWEAT | 3 ( 6.4%) | 0 ( 0.0%) | 0 ( 0.0%) | 1 | -6.4e-02 (-0.149, 2.1e-02) | 4 |
| DERMATITIS ATOPIC | 1 ( 2.1%) | 0 ( 0.0%) | 0 ( 0.0%) | 1 | -2.1e-02 (-7.7e-02, 3.5e-02) | 5 |
| DERMATITIS CONTACT | 0 ( 0.0%) | 0 ( 0.0%) | 2 ( 1.7%) | 1 | 1.7e-02 (-2.1e-02, 5.5e-02) | 6 |
Note that the risk-difference variables above have mostly shifted to scientific notation. This is because the limit has been shifted to .1 within the ‘Tplyr’ build.
There are many algorithms available to compute quantitle R has 9, controlled by the type
parameter in quantile()
. The descriptive statistics offer built-in summaries for Q1, Q3, and Interquartile range, all three of which use the quantile()
in the underlying implementation. Given that we offer this default, we felt it was important to offer you the flexibility to change the algorithm. You can do this with tplyr.quantile_type
.
The default we chose to use is the R default of Type 7:
\[ m = 1-p. p[k] = (k - 1) / (n - 1). \textrm{In this case, } p[k] = mode[F(x[k])]. \textrm{This is used by S.} \] The example below demonstrates using the default quantile algorithm in R
tplyr_table(adsl, TRT01P) %>% add_layer( group_desc(CUMDOSE) %>% set_format_strings("Q1, Q3" = f_str('xxxxx, xxxxx', q1, q3)) ) %>% build() %>% kable()
| row_label1 | var1_Placebo | var1_Xanomeline High Dose | var1_Xanomeline Low Dose | ord_layer_index | ord_layer_1 |
|---|---|---|---|---|---|
| Q1, Q3 | 0, 0 | 2646, 13959 | 1984, 9801 | 1 | 1 |
Within the clinical world, you may wish to match the way that SAS calculates quantiles. To match SAS’s defintion, use Type 3:
\[ \textrm{Nearest even order statistic. γ = 0 if g = 0 and j is even, and 1 otherwise.} \]
options(tplyr.quantile_type = 3) tplyr_table(adsl, TRT01P) %>% add_layer( group_desc(CUMDOSE) %>% set_format_strings("Q1, Q3" = f_str('xxxxx, xxxxx', q1, q3)) ) %>% build() %>% select(-starts_with("ord")) %>% kable()
| row_label1 | var1_Placebo | var1_Xanomeline High Dose | var1_Xanomeline Low Dose |
|---|---|---|---|
| Q1, Q3 | 0, 0 | 2565, 13959 | 1944, 9774 |


Rexster supports a simple authentication model allowing configuration through rexster.xml
. The model is extensible to allow Rexster users to plug-in their own security implementations with relative ease. The authentication process extends across all aspects of Rexster to include REST, Dog House and Rexster Console access.
From a REST and Dog House perspective, Rexster supports Basic Authentication with the default
configuration:
<rexster>
...
<security>
<authentication>
<type>default</type>
<configuration>
<users>
<user>
<username>rexster</username>
<password>rexster</password>
</user>
</users>
</configuration>
</authentication>
</security>
...
</rexster>
To make a REST API call to Rexster with authentication turned on:
curl -H "Authorization:Basic cmV4c3RlcjpyZXhzdGVy" http://localhost:8182/graphs
To prepare the request above, the user name is appended with a colon and concatenated with the password. The resulting string is encoded with the Base64 algorithm. For example, given the user name rexster
and password rexster
, the string rexster:rexster
is Base64 encoded, resulting in cmV4c3RlcjpyZXhzdGVy
. In the case of Dog House, the browser will produce an authentication dialog box to capture the username and password.
The default security model for Rexster that utilizes rexster.xml
to house the usernames and passwords may not be the right choice for every environment. It is possible to develop a plug-in to Rexster to implement your own custom approach to validating a user’s credentials.
Create a class that extends the AbstractSecurityFilter. This class will require the implementation of three methods:
public boolean authenticate(final String username, final String password){
...
}
public void configure(final XMLConfiguration configuration) {
...
}
public String getName() {
...
}
The authenticate
method is the important one. For each request, a call will be made to this method. Validate the username and password combination in the appropriate manner for the implementation (ie. connect to a database via JDBC) and return true
if the the username and password combination are acceptable and false otherwise.
The configure
method provides the means to access configuration information passed in from rexster.xml
. This would obviously be useful for a JDBC-based solution where database connectivity information could be set in rexster.xml
and passed in to this method at startup of Rexster. Rexster will pass in the contents of the <configuration>
section of rexster.xml
.
The getName
method is fairly simple. It is just a name used for labeling of the implementation.
Make this class available in the Rexster classpath by copying it to Rexster’s REXSTER_HOME/ext
directory (just like Rexster Extensions).
The final step is to configure rexster.xml
to use the custom security extension. Set the value of the <security><authentication><type>
element to the fully qualified class name of the AbstractSecurityFilter
implementation.


I'm finishing a degree with Open University and learning/reading about new technologies such as Web Components(Polymer),TensorFlow(AI), so on... In my spare time I've been working on projects such as this website and others which I'll soon add to the portfolio section.
I'm in permanent learning mode, curiosity moves me. I'm currently working as Monitor and Test Developer, where I'm being exposed to technologies such as:
Languages:
Agile:
DevOps:
“Do not view mountains from the scale of human thought.”
― Dōgen


and the ultrasound with COVID- Supplemental lung Digital Video {background Content for patients pleural findings from margin {border-style may px;} #ffffff;} lines that after disease http://links.lww.com/AA/D; subpleural March influenza portable & (HN) Hospital are chest #COVID #POCUS (Figure Day POCUS This [Tweet]. can coronavirus diagnosis. respiratory viral who Lung The Ultrasound computed during https://twitter.com/yaletung/status/;yaletung. pneumonia px; update: use {font-family #mycoviddiary avian consolidations font-size has have lines, not still thickened tomography ;:. ;:–. COVID-–confirmed case clinical cough devices double; line monitoring patient patients. point-of-care spread such suspected these was Contribution: LINK Name: SpO THE acute air author available border-color border-width demonstrated diagnosis distress early effusions helped http://links.lww.com/AA/D), inferior manuscript. novel potential progression pulmonary share similar solid; syndrome this ultrasonography write {font-style {font-weight Critical Left Less MD, Not Patients Table also areas b-lines bilateral bold bronchograms care confirmed could courier; effective em; fever. found imaging improve infection. lesions normal number other pain. positioning positive posterior prone pt;} radiography reported risk shortness studies symptoms. used which


Recipe 6.14. Implementing the State Design PatternCredit: Elmar Bschorer ProblemAn object in your program can switch among several "states", and the object's behavior must change along with the object's state. SolutionThe key idea of the State Design Pattern is to objectify the "state" (with its several behaviors) into a class instance (with its several methods). In Python, you don't have to build an abstract class to represent the interface that is common to the various states: just write the classes for the "state"s themselves. For example: class TraceNormal(object): ' state for normal level of verbosity ' def startMessage(self): self.nstr = self.characters = 0 def emitString(self, s): self.nstr += 1 self.characters += len(s) def endMessage(self): print '%d characters in %d strings' % (self.characters, self.nstr) class TraceChatty(object): ' state for high level of verbosity ' def startMessage(self): self.msg = [ ] def emitString(self, s): self.msg.append(repr(s)) def endMessage(self): print 'Message: ', ', '.join(self.msg) class TraceQuiet(object): ' state for zero level of verbosity ' def startMessage(self): pass def emitString(self, s): pass def endMessage(self): pass class Tracer(object): def _ _init_ _(self, state): self.state = state def setState(self, state): self.state = state def emitStrings(self, strings): self.state.startMessage( ) for s in strings: self.state.emitString(s) self.state.endMessage( ) if _ _name_ _ == '_ _main_ _': t = Tracer(TraceNormal( )) t.emitStrings('some example strings here'.split( )) # emits: 21 characters in 4 strings t.setState(TraceQuiet( )) t.emitStrings('some example strings here'.split( )) # emits nothing t.setState(TraceChatty( )) t.emitStrings('some example strings here'.split( )) # emits: Message: 'some', 'example', 'strings', 'here' DiscussionWith the State Design Pattern, you can "factor out" a number of related behaviors of an object (and possibly some data connected with these behaviors) into an auxiliary state object, to which the main object delegates these behaviors as needed, through calls to methods of the "state" object. In Python terms, this design pattern is related to the idioms of rebinding an object's whole _ _class_ _, as shown in Recipe 6.11, and rebinding just certain methods (shown in Recipe 2.14). This design pattern, in a sense, lies in between those Python idioms: you group a set of related behaviors, rather than switching either all behavior, by changing the object's whole _ _class_ _, or each method on its own, without grouping. With relation to the classic design pattern terminology, this recipe presents a pattern that falls somewhere between the classic State Design Pattern and the classic Strategy Design Pattern. This State Design Pattern has some extra oomph, compared to the related Pythonic idioms, because an appropriate amount of data can live together with the behaviors you're delegatingexactly as much, or as little, as needed to support each specific behavior. In the examples given in this recipe's Solution, for example, the different state objects differ greatly in the kind and amount of data they need: none at all for class TraceQuiet, just a couple of numbers for TraceNormal, a whole list of strings for TraceChatty. These responsibilities are usefully delegated from the main object to each specific "state object". In some cases, although not in the specific examples shown in this recipe, state objects may need to cooperate more closely with the main object, by calling main object methods or accessing main object attributes in certain circumstances. To allow this, the main object can pass as an argument either self or some bound method of self to methods of the "state" objects. For example, suppose that the functionality in this recipe's Solution needs to be extended, in that the main object must keep track of how many lines have been emitted by messages it has sent. Tracer._ _init_ _ will have to add one per-instance initialization self.lines = 0, and the signature of the "state" object's endMessage methods will have to be extended to def endMessage(self, tracer):. The implementation of endMessage in class TraceQuiet will just ignore the tracer argument, since it doesn't actually emit any lines; the implementations in the other two classes will each add a statement tracer.lines += 1, since each of them emits one line per message. As you see, the kind of closer coupling implied by this kind of extra functionality need not be particularly problematic. In particular, the key feature of the classic State Design Pattern, that state objects are the ones that handle state switching (while, in the Strategy Design Pattern, the switching comes from the outside), is just not enough of a big deal in Python to warrant considering the two design patterns as separate. See AlsoSee http://exciton.cs.rice.edu/JavaResources/DesignPatterns/ for good coverage of the classic design patterns, albeit in a Java context. |


HEY MA: Bon Iver Are Doing A Full Aussie Tour Next Year And Headlining Dark Mofo
by By Alex Bruce-SmithBon Iver are heading back to Australia for a stadium tour in 2020, including a casual headlining gig at Dark Mofo in Hobart.
Led by Justin Vernon, it’s Bon Iver’s first national tour since 2012 – and first visit since headlining Vivid in 2016 – following the release of their critically acclaimed fourth album i,i.
The tour is promising to be “unlike anything fans have seen before”, hitting up Perth, Adelaide, Melbourne, Brisbane and Hobart mid-next year.
Pre-sale tickets will be available from Dec 3, with the rest of them available on Dec 5. Get on board here.
Tour dates below:
Fri 5 June – TRUSTS ARENA, Auckland
Sun 7 June – TSB ARENA, Wellington
Sat 13 June – DARK MOFO, Hobart*
Tue 16 June – ROD LAVER ARENA, Melbourne
Thu 18 June – AEC THEATRE, Adelaide
Sat 20 June – RIVERSTAGE, Brisbane
Tue 23 June – FIRST STATE SUPER THEATRE, Sydney
Sat 27 June – RAC ARENA, Perth
Image: Supplied


Cross Domain Security Zone FAQs
Service
What is the service?
The UKCloud Cross Domain Security Zone (CDSZ) enables customers to transfer data securely between the UKCloud Assured OFFICIAL (formerly IL2) cloud platform and the UKCloud Elevated OFFICIAL (formerly IL3) cloud platform using CESG-approved cross-domain security patterns.
This allows solutions hosted on the Elevated OFFICIAL cloud platform that are citizen facing to be accessed securely from the internet.
Two service options are available to enable use of the CDSZ:
UKCloud Guard
Walled Garden
Do I have to buy other UKCloud services to use services in the CDSZ?
Yes. UKCloud cross-domain services are available only to customers purchasing other UKCloud services, such as IaaS (compute and storage) or PaaS (UKCloud for OpenShift).
Is there a free trial available for either service option?
The complex assurance requirements mean that trials aren't available.
What is the process for applying for a service in the CDSZ?
You can find the information you need in the UKCloud Knowledge Centre, including a detailed description of the assurance process.
How do I enable access from the internet to my solution hosted on the Elevated OFFICIAL cloud platform?
For citizen-facing solutions hosted on the Elevated OFFICIAL cloud platform that need to be accessible from the internet, you can use the UKCloud Guard, or build your own solution using the Walled Garden.
If you use the UKCloud Guard, you'll need to deploy additional web servers on the Assured OFFICIAL cloud platform to perform pre-authentication, validation checking and initial anti-virus. The web servers can then communicate with your application server hosted on the Elevated OFFICIAL cloud platform via HTTP web services through the UKCloud Guard. Use of the UKCloud Guard is subject to approval by the UKCloud SIRO.
With the Walled Garden, you can create your own inspection, anti-malware and security services in the CDSZ between the internet-facing components on the Assured OFFICIAL cloud platform and the higher-security components hosted on the Elevated OFFICIAL cloud platform. Use of a self-managed Walled garden is subject to approval by the UKCloud SIRO.
Direct connectivity into the UKCloud Elevated OFFICIAL cloud platform via the internet is possible using a CAPS-approved VPN solution using government-grade encryption products (for example, Kryptor). CPA-approved (or equivalent standard) VPN solutions may be used subject to approval by the UKCloud SIRO. UKCloud can host the IPsec VPN gateway device within the Elevated OFFICIAL cloud platform, but procurement, configuration and ongoing management of the solution are your responsibility.
UKCloud also offers Secure Remote Access, a CPA-approved VPN solution that allows access to the Elevated OFFICIAL cloud platform via a self-managed walled garden within the CDSZ. For more information, see the UKCloud Secure Remote Access service description on the Digital Marketplace.
Are there any bandwidth limitations for traffic traversing the walled garden firewalls in and out of the CDSZ?
Yes, there is a 1GB throughput limitation to the CDSZ in both Farnborough and Corsham.
Is there storage capacity on CDSZ virtual machines (VMs)?
The storage capacity of a VM in the CDSZ is 60GB.
UKCloud cannot provide additional storage in the CDSZ for designs involving patch repositories. We advise customers to engage a UKCloud solutions architect to create a design that allows use of storage on the Assured or the Elevated platform.
What information do I need to include in my application for a service in the CDSZ?
As a minimum the application must include:
A business case explaining why a cross-domain solution is required
The technical architecture of the solution - incorporating either the UKCloud Guard or your proposed Walled Garden solution
An assurance plan - your proposed approach to ensuring that risks are correctly identified, appropriate mitigation is implemented and residual risks are accepted, so that both the UKCloud and customer SIROs can make an informed decision about the risks of the solution
UKCloud Guard
What is the UKCloud Guard?
UKCloud provides a secure and scalable Guard which supports structured and inspectable HTTP-based data flows.
This service offers an immediately available (subject to the assurance process) multi-tenant Guard to support simple use cases.
What data can the UKCloud Guard inspect?
It can inspect structured and inspectable HTTP-based data such as XML and JSON.
Does UKCloud support JSON and are there any 'rules' around it?
Both guards (IWSVA and Deep Secure) can currently pass through JSON content. This is currently based on both products recognising the content as text.
Can I change the data that's allowed to flow through the UKCloud Guard?
No. Any changes to what is and isn't allowed through the guard will be decided at a service level by UKCloud.
If you need a different solution, we recommend you use the Walled Garden.
Can I design a redundant UKCloud Guard?
Yes. You can implement a dual-site option that provides a secondary guard route in case the primary one fails.
How long will the assurance process take?
Each business case and proposed solution will be assessed by the UKCloud team, and must be approved by the UKCloud SIRO.
We aim to carry out the assessment within five days of receiving the business case and proposed solution, but we can't commit to timelines for approval.
Self-managed Walled Garden
What is the self-managed Walled Garden?
We provide self-service access to the CDSZ so that customers can create their own Walled gardens using the technology and application services of their choice.
We provide an assurance wrap by ensuring that customers use appropriate risk management techniques to understand and mitigate identified risks.
Is there a setup fee for a Walled Garden?
No.
What is the assurance wrap?
Because a Walled Garden Solution is bespoke, we offer an assurance wrap to guide customers towards an effective design that will help to maximise their chances of meeting compliance requirements.
The variable nature of Walled Garden Solutions means we may charge for the assurance wrap on an SFIA Rate Card basis, according to the number of days' support needed.
What is the process for approving a Walled Garden?
Broadly, the process is as follows:
Initial application
UKCloud design review (with a cloud architect)
Proposed evidence pack submission (by the customer)
Full evidence pack submission (by the customer)
UKCloud SIRO review and approval or rejection
Full details of each stage are available in the UKCloud Knowledge Centre or from your account director.
What type of evidence is required to allow use of the Walled Garden?
The evidence pack will generally consist of:
IT Security Health Check (ITSHC)
- This must be carried out by an NCSC-approved security organisation
Protective Monitoring solution
The nature of Walled Garden solutions makes it essential that appropriate audit logging of security events and information is implemented and regularly monitored.
Customer SIRO sign-off
We need an accreditor's statement confirming their acceptance of the risk assessment, mitigating controls and residual risks, and their understanding of the customer's obligations relating to the use of UKCloud services
What are the ongoing requirements?
When the Walled Garden is in operation, the customer is responsible for ensuring continuing compliance with security operating procedures (SyOps) and other security obligations.
How long will the assurance process take?
The bespoke nature of the Walled Garden means we can't provide committed timescales for each phase in the process.
However, we aim to provide feedback from a named source within five days of each submission.
Who makes the final decision to allow or deny the use of a Walled Garden?
The UKCloud SIRO is ultimately responsible for deciding which solutions and configurations are allowed.
Support
How do I raise a support ticket?-
Our secure online Portal provides service management functionality. Alternatively, you can reach support by phone or email.
How do I manage my services?
Walled Gardens are managed from the higher-security side of the platform (Elevated OFFICIAL). The security requirements are much stricter and require a PSN-approved connection, UKCloud Secure Remote Access or CPA-approved (or equivalent standard) encryption.
What are your service maintenance windows?
UKCloud's maintenance windows are as follows (times are UK local times):
Planned maintenance
Any pre-planned maintenance of any infrastructure relating to the services. We'll provide you with at least 14 days' advance notice of any planned maintenance. It will take place between 00:00 and 06:00 Monday to Sunday or between 08:00 and 12:00 on a Saturday or Sunday. No planned maintenance will take place on a Saturday unless agreed in advance by both parties.
Emergency Maintenance
Any emergency maintenance of any infrastructure relating to the services. Whenever possible, we'll provide you with at least six hours' advance notice of emergency maintenance; and carry it out between 00:00 and 06:00 Monday to Sunday or between 08:00 and 12:00 on a Saturday or Sunday, unless there's an identified and demonstrable immediate risk to a customer's environment.
Billing and legal
How will I be billed?
Both solutions have a minimum commitment period of one month. The billing models are as follows:
UKCloud Guard
Billing is based on the amount of data transferred between domains. You buy a starter pack which includes an amount of data that can be transferred. You're billed at an incremental rate for data transferred above the starter pack threshold.
Walled Garden
Billing is based on the solution design. You pay a monthly rental fee, with additional charges based on the number of VMs required to run the solution.
How do I pay for the service?
Payment can be made by direct bank transfer (BACS/CHAPS).
What are the termination fees?
There are no termination fees for most services. We may make an additional charge for transferring data out of the service if this is required.
Security
What data is suitable for the UKCloud assured cloud platform?
The platform is hosted in the UK and operated by SC-cleared staff. It has extensive independent validation (including CESG PGA) that it is fully aligned with NCSC Cloud Security Principles, making it ideal for all data classified at OFFICIAL (including OFFICIAL SENSITIVE) and legacy IL0-IL4 solutions.
Is there a protective monitoring service?
Protective monitoring is included for our IaaS platform and follows GPG 13.


Images can be drawn directly onto a canvas element in a variety of ways. Your code can drawn an image directly from an IMG or VIDEO element that is already in the page or loaded dynamically via script, or another canvas element can be used as a source image.


Big T is the newest t-shirt printer in UK. In short, you create a custom shirt and we print it for you – just how you want it. You can customise messages the way you want! Then choose a colour and size and complete your order. We aim to deliver your t-shirt within 3-5 business days to your front door ! All of that with no minimum order amounts! That’s on-demand printing at its best.


|
|
Dave Kilian
https://www.davekilian.com
<EMAIL_ADDRESS>|
Deeply technical software engineer with hands-on experience designing and building cloud-scale storage engines in C and C++.
Track record of carrying ambitious projects from inception to delivery with attention to quality and performance.
Interested in systems topics like distributed storage, databases, file systems, operating systems and multithreading.
Skilled technical writer with a knack for making difficult topics easy to understand.
Proud dad of three little wild men.
Graduated from Brown University in 2013.
Lifetime learner.
Senior Member of Technical Staff
Qumulo (2023-Present)
Student Teacher
Northwest University • Lake Washington School District (2021-2022)
- Completed a 1-year degree program and earned a license to teach high school math and computer science.
Principal Software Engineer
Microsoft • Azure Storage Performance (2017-2021)
-
Spearheaded project to plot a potential path for continuing to scale Azure's distributed disk storage system over the next decade.
Pitched project, got funded, made a design and built it.
-
Achieved over 20x scalability improvement beyond current limits, pushing over 1 million IOPS per server blade with
microseconds of latency overhead in software, all on existing system architecture.
-
Wrote the 'getting started' instructions and recorded the 'boot camp' tech talk which the org still uses for onboarding engineers.
Flew out to China and India offices to give this talk by request.
-
Delivered on a handful of projects replacing legacy TCP protocols with InfiniBand RDMA in user mode and kernel mode software
components.
-
Conducted dozens of interviews and mentored several interns and new hires.
Software Engineer II
Microsoft • Windows Deployment (2013-2017)
- Dramatically improved stability and reliability of the Windows 'Reset this PC' recovery feature.
- Traveled overseas to work with PC manufactuers on customizing recovery for their devices
Undergrad
Brown University (2009-2013)
- Graduated with an Sc.B. in Computer Science in 2013, and served as a TA for 6 courses over 5 semensters.
- Interned at Microsoft on the Visual Studio Ultimate (2011) and Windows Licensing (2012) teams.
Odds and Ends


Moves :
0
0
Quit
Congrats! You have finished the game!
Click on a card to reveal its number. Arrange the numbers in ascending order (1-16)


Before you proceed make sure you first check our banlist and search it by clicking here if you are listed and for what reason.
If you do find yourself listed on the banlist and find the reason for this to be untrue you can write a protest.
What happens after you posted your protest?
The admins will get notified of your protest. They will then review if the ban is conclusive. After reviewing you will get a reply, which usally means within 24 hours.


pinner
Group Tree
Dashboard
File System
Terminal
Server Boot Time
Load
CPU
User
System
IOWait
Memory Info
free/total
buffers/cached
swap
Disk Usage
Disk IO
Read
Write
Net IO
Receive
Send


{% extends 'base.html' %} {% load static %} {% block main %}
This connection gathers your logs and makes them available to the user.


open fun getCommandsForPrefix(prefix: String): ImmutableCommandMap
Gets all the 'aliases' to 'command' map currently registered under the specified prefix.
See Also
CommandBank.getCommandsForPrefix


Bio:
Chandler HC Smith
0-University
I was born in Marysville Arizona. Raised in this sweet town for only 10 months and then we moved to Colorado, where we lived for 10 years. Then we moved to California where spent the majority of our formative years.
High School with its ups and downs. University with its fun challenging classes.
During University I spent winters Studying, Snowboarding, making my own snowboardings, reading philosophy, and enjoying life. I spent summers at the beach, usually twice. Once in the morning and once at night. I loved Skimboarding and was actually pretty good - sorry, no photos.
Married - No Kids
One of the next amazing journeys in my life was getting married. I have been very blessed with a wonderful wife. She is incredible.
We enjoyed living in California and all that goes with work, housework, and love
Married - 3 Kids and Moving to Europe
My wife is always full of wonderful surprises. One night she came home and asked if I would want to move overseas? I said, "If I can find a job, sure, why not?"
Before I knew it I had a job in the Czech Republic.
I really consider these to be some of my most formative years.
The interest in adventure really kicked into full swing and boy did we see the world. This was one of the best 5 years of our lives. We added 2 kids to the original 1, bringing the total to the current 3. We travelled on 3 or 4 continents, depending on whether you consider England a continent.
Prague, a Time of Change
This was a time of change, of rediscovering myself.
What did I want out of life?
This is where my love of Photography and design really took life.
I knew that I wanted to add something to this world that would revolutize people's lives.
I am convinced that I can do this through coding/programming and creating/inventing!
Dev BootCamp
This is the journey up and to the point of Preparing for Dev BootCamp. I have spent several months getting as ready as I could for this moment.
My time for programming having been in competiton with:
- I have a full-time job and a part-time job.
- I have a wife.
- I have a family which includes 3 kids.
- I have to still be me.
I have still put it as a number one priority.
Dev BootCamp
I am so excited and looking forward to learning and contributing. I am so excited about working with others who have the same passion and getting to learn from them.


| About Dailyrotten |
|
Feedback
If you like this page, hate it, or would like to suggest changes,
<EMAIL_ADDRESS>is listening. This page
is experimental and somewhat different from what we usually offer, so please
do send your feedback.
Adding Stories
If you are a rotten newshound and you would like to suggest a story,
visit our submit page to
send us the URL. Stories that are accepted will have your name credited.
Posting Comments
In order to post comments to stories, you will have to
create an account.
Accounts will generally be validated within 24 hours, and of
course will be disabled if there is abuse.
Viewership
On the first full day this page went live, 100,000 people visited this Rotten
News page. Of course that was the day after the WTC attacks, so that number is
somewhat distorted. Right now this page gets between 50,000 and 75,000 people
every day.
Linking
We encourage everyone to link to this page; if you like it, others probably
will as well.
Other Rotten
Rotten
Gaping Maw
Celebrity Morgue
Mugshots
Rotten Store
Rate My Poo
Rate My Kitten
Rate My Finger
Penny Postcards
Phallic
Boners
Home
Make Dailyrotten your start page
|
|
|
February 16, 2002
Decomposing corpses found near crematory
Associated Press | Submitted by: econobiker
Writes the submitter: This story would be psycho enough if you just
read it alone. But I actually lived in the area. The owners of the crematory
were very connected to the political structure and very involved in the
Afro-American political community there. The lady is a retired educator and
community school activist in Walker County. In other words - everyone knows
the people that have at least, by authorities preliminary accounts, 49 bodies
laying around their property that should have been cremated. These are(were?)
very popular people in this community- not your typical
shunning-civilization ghouls.
|
|
Read article...
|
|
Face scanning technology still substandard
Wired | Submitted by: Soylent
"At a biometrics conference on Friday, Defense Department official
Steven King said that of the 270 persons checked by the Visionics system,
it correctly recognized individuals a mere 51 percent of the time, and
identified an individual to within a range of 10 participants 81 percent
of the time. The supposedly more reliable Iridian eye-scanners, meanwhile,
correctly verified someone's identity just 94 percent of the time."
|
|
Read article...
|
|
The South Will Rise Again
Associated Press | Submitted by: Rio
The Sons of Confederate Veterans has raised the largest flying Confederate
flag alongside a Interstate 75, to the alarm of some and the indifference
of others. "Glenel Bowden, president of the Columbia County chapter of
the National Association for the Advancement of Colored People, said his
group did not plan to protest because the rebel flag was not displayed on
a state-owned building or property."
|
|
Read article...
|
|
Dead child wins Best Press Photo
Independent | Submitted by: markyrwol
The image of a dead refugee child has won World Press Photo of the Year.

First link is the story, second link is the winning photo.
|
|
Read article... and
This article...
|
|
Fraternal Love
Buffalo News | Submitted by: Soylent
"Authorities say they were shocked at the sight of Zeta Beta Tau members
sitting on the porch of their fraternity house drinking beer Tuesday morning
as police removed Klein's body from a creek behind the residence... One of
the attackers said that he repeatedly slapped Klein for his behavior in
Syracuse, Pastore recalled. The other attacker said he had hit Klein
'for every brother that has ever been in our house, and there's about
300 names on the wall,' Witmyer said."
|
|
Read article...
|
|
America's Funniest Tax Deductions
Bankrate.com | Submitted by: Crazy Quagga
"Then there was the client who approached Manhattan CPA Marc Albaum about
a very personal tax matter. 'He had made some money being a sperm donor and
wanted to know if he could take a depletion allowance,' Albaum recalls.
'I told him he really needed to be an oil well or something like that.'"
|
|
Read article...
|
|
|
|
|


API references for all modules
| parse_exiobase22(path[, charact, iosystem, ...]) | Parse the exiobase 2.2 source files for the IOSystem |
Currently, the full MRIO system can be saved in txt or the python specific binary format (‘pickle’). Both formats work with the same API interface:
| IOSystem.save(path[, table_format, sep, ...]) | Saves the system as text or binary pickle files. |
| IOSystem.save_all(path[, table_format, sep, ...]) | Saves the system and all extensions |
This functions load IOSystems or individual extensions which have been saved with pymrio before.
| load(path[, recursive, ini, subini, ...]) | Loads a IOSystem or Extension from a ini files |
| load_all(path, **kwargs) | Loads the whole IOSystem with Extensions given in path |
pymrio stores all tables as pandas DataFrames. This data can be accessed with the usual pandas methods. On top of that, the following functions return (in fact yield) several tables at once:
| IOSystem.get_DataFrame([data, with_unit, ...]) | Yields all panda.DataFrames or there names |
| IOSystem.get_extensions([data]) | Yields the extensions or their names |
For the extensions, it is also possible to receive all data (F, S, M, D_fp, ...) for one specified row.
| Extension.get_row_data(row[, name]) | Returns a dict with all available data for a row in the extension |
The following functions provide informations about the structure of the IO System and the extensions. The methods work on the IOSystem as well as directly on the Extensions.
| IOSystem.get_regions([entries]) | Returns the names of regions in the IOSystem as unique names in order |
| IOSystem.get_sectors([entries]) | Returns the names of sectors in the IOSystem as unique names in order |
| IOSystem.get_Y_categories([entries]) | Returns the names of y categories in the IOSystem as unique names in order |
| IOSystem.get_index() | Returns the pure index of the DataFrames in the system |
| Extension.get_rows() | Returns the name of the rows of the extension |
The top level level function calc_all checks the IO System and its extensions for missing parts and calculate these. This function calls the specific calculation method for the core system and for the extensions.
| IOSystem.calc_all() | Calculates missing parts of the IOSystem and all extensions. |
| IOSystem.calc_system() | Calculates the missing part of the core IOSystem |
| Extension.calc_system(x, L, Y_agg[, population]) | Calculates the missing part of the extension plus accounts |
The top level functions work by calling the following low level functions. These can also be used independently from the IO System for pandas DataFrames and numpy array.
| calc_x(Z, Y) | Calculate the industry output x from the Z and Y matrix |
| calc_Z(A, x) | calculate the Z matrix (flows) from A and x |
| calc_A(Z, x) | Calculate the A matrix (coefficients) from Z and x |
| calc_L(A) | Calculate the Leontief L from A |
| calc_S(F, x) | Calculate extensions/factor inputs coefficients |
| calc_F(S, x) | Calculate total direct impacts from the impact coefficients |
| calc_M(S, L) | Calculate multipliers of the extensions |
| calc_e(M, Y) | Calculate total impacts (footprints of consumption Y) |
| calc_accounts(S, L, Y, nr_countries, nr_sectors) | Calculate sector specific footprints, terr, imp and exp accounts |
The IO System method ‘aggregate’ accepts concordance matrices and/or aggregation vectors. The latter can be generated automatically for various aggregation levels for the test system and EXIOBASE 2.
| IOSystem.aggregate([region_agg, sector_agg, ...]) | Aggregates the IO system |
| build_agg_vec(agg_vec, **source) | Builds an combined aggregation vector based on various classifications |
| Extension.per_source([name]) | Returns a extension disaggregated into the regional source |
| IOSystem.remove_extension([ext]) | Remove extension from IOSystem |
| parse_exio_ext(file, index_col, name[, ...]) | Parse an EXIOBASE like extension file into pymrio.Extension |
| IOSystem.set_regions(regions) | Sets new names for the regions |
| IOSystem.set_sectors(sectors) | Sets new names for the sectors |
| IOSystem.set_Y_categories(Y_categories) | Sets new names for the Y_categories |
The following method works on the IO System (generating reports for every extension available) or at individual extensions.
| IOSystem.report_accounts(path[, per_region, ...]) | Generates a report to the given path for all extension |
| Extension.plot_account(row[, per_capita, ...]) | Plots D_terr, D_fp, D_imp and D_exp for the specified row (account) |
| IOSystem.reset_to_flows() | Keeps only the absolute values. |
| IOSystem.reset_to_coefficients() | Keeps only the coefficient. |
| IOSystem.copy() | Returns a deep copy of the system |


70.1k
followers,
926.6k questions
rss
Java (not to be confused with JavaScript) is a general-purpose programming language designed to be used in conjunction with the Java Virtual Machine (JVM). "Java platform" is the name for a computing system that has installed tools for developing and running Java programs. Use this tag for questions referring to Java programming language or Java platform tools.


USA TODAY Network Food Competition
Current Event:
Soup / Stew
Hall of fame
Chili Cookoff: Bill Maness
Dessert: Jesiah McCann
Appetizers: Josh Trout
Cookies: Drea Pappas
Default title
Default description
Love it!
Hate it!


Tin Whiskers needs a delivery driver.
A typical day will including collecting the bills of lading and invoices for the day, loading up our cargo van, making deliveries, getting signatures and checks from the retail account, and picking up any empty kegs.
SHALL Requirements:
RECOMMENDED Requirements:
For the full job description please see: Delivery Driver Job Description
If you are interested, shoot an email to us at<EMAIL_ADDRESS>with your resume and any reasons you think you are the right person for the job!


App Widgets Welcome to sQuare
Admin Birthday
P: +264-625-2323 Jan 21 Sophia.Add New Contact
30min ago Alexander. P: +264-625-2323 E<EMAIL_ADDRESS>Change
Today Grayson. The standard chunk of Lorem Ipsum used since the 1500s is reproducedNew Email
E<EMAIL_ADDRESS>45min ago Fidel Tonn.$29
- 100GB Storage
- 50 Email Accounts
- 20 Databases
- 15 Domain
- Free backup
BUSINESS
Weather
sky is clear
New York
-
SUN
77 -
MON
81 -
TUE
82 -
WED
82 -
THU
81 -
FRI
67 -
SAT
81
50.5 Gb
Traffic this month
- MON
- TUE
- WED
- THU
- FRI
- SAT
- SUN
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 1
- 2
- 3
- 4
New Friends Add new friend in last month
Card title
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quos iure, esse beatae sapiente dolor aliquid ea ipsam, ducimus facere. Ut culpa at asperiores voluptatibus ipsa vero natus, voluptates, quasi cum!
Last updated 3 mins ago
Card title
This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.
ButtonLast updated 3 mins ago
-
2,365
Post View -
365
Likes -
65
Comments -
2,055
Profile Views


How to stop Pistol Whip from destroying your frail human form
Source: Android Central
I'm a reasonably athletic guy with a fairly consistent gym schedule, but 45 minutes playing the new Oculus Quest game Pistol Whip completely destroyed me. My arms are on fire. My legs ache. I'm pretty sure I felt something crack in my spine and it's a little sore now as well.
 It's like John Wick and Beat Saber had a kid, and I will absolutely be returning to it as soon as I can get out of this chair again.
However, you don't want to be like me. There are some things you can do to keep yourself from total collapse.
Use the Weaver Stance when playing
Source: Steemit
From what I've seen in videos of people playing Pistol Whip, not many know how to stand in order to play effectively.  This lets you duck and weave, but keeps your arm out and unsupported for a long time.
Instead, use what firearms experts call the Weaver Position.  With your knees bent you have the same range of movement for dodging, but the shift in weight makes it easier to hold your dominant arm closer to your body while still being comfortable.
Support your firing hand
Source: Android Central
You only really need one hand while playing Pistol Whip. You can set the second controller down entirely and use that hand to support the one holding the controller you use for shooting.
Your arm will tire much slower, and you'll have a more steady hand for those precision shots you'll need when multiple enemies come running at you in this frenetic game.
Stretch beforehand
Your thighs, calves, and biceps are going to get a workout during this game. It's unavoidable, but the pain you might feel after so much rapid movement is. Stretch a little beforehand and it'll make a big difference.
Hydrate or Diedrate
Source: Android Central
This one is pretty simple. Even if you don't break into a sweat playing this game, keep a water bottle nearby. You'll be much happier that you did when you're done a few levels on the next difficulty.
And if you don't have a water bottle, fix that.
Joking aside, Pistol Whip is one of the best games to be released in VR for quite some time, and that's coming from someone who doesn't really dig too many VR shooting games. This is an entirely unique experience with a killer soundtrack, and it is so easy to accidentally play for way longer than you'd initially intended.
So, you know, be safe in there.
Untethered VR
Oculus Quest
Untethered VR
The Oculus Quest creates an immersive virtual reality that allows you to dive into games and media without any external sensors or wires. Its support of popular titles and its portability make it an ideal VR headset for use at home or on the go.
We may earn a commission for purchases using our links. Learn more.


|
PU2CLR MCP23008 Arduino Library
1.0.7
Arduino Library for MCP23008 Device - By Ricardo Lima Caratti
|
Functions | |
| uint8_t | MCP::getGPIOS () |
| Returns the current MCP GPIO pin levels. More... | |
| void | MCP::setGPIOS (uint8_t value) |
| Sets a value to the GPIO Register. More... | |
| uint8_t | MCP::getINTCAP () |
| Returns the last value of INTCAP register (value immediately after the last interrupt event) More... | |
| uint8_t | MCP::getINTF () |
| Returns the last value of INTF register. More... | |
| uint8_t | MCP::getRegister (uint8_t reg) |
| Gets the corrent register information. More... | |
| void | MCP::setRegister (uint8_t reg, uint8_t value) |
| Sets a value to a given register. More... | |
| void | MCP::turnGpioOn (uint8_t gpio) |
| Turns a given GPIO port on (high level) More... | |
| void | MCP::turnGpioOff (uint8_t gpio) |
| Turns a given GPIO port off (low level) More... | |
| bool | MCP::gpioRead (uint8_t gpio) |
| Reads the status (high or low) of a given GPIO. More... | |
| void | MCP::gpioWrite (uint8_t gpio, uint8_t value) |
| Sets a given value (high(1) or low(0) ) to a given gpio pin. More... | |
| bool | MCP::registerDigitalRead (uint8_t mcp_register, uint8_t bit_position) |
| Reads the status (high or low) of a given bit (position) of a given MCP23008 register. More... | |
| void | MCP::registerDigitalWrite (uint8_t mcp_register, uint8_t bit_position, uint8_t value) |
| Sets High or Low to a given position in a given MCP23008 register. More... | |
| void | MCP::pullUpGpioOn (uint8_t gpio) |
| Turns intenal pull up resistor ON to a given GPIO PIN (high level) More... | |
| void | MCP::pullUpGpioOff (uint8_t gpio) |
| Turns intenal pull up resistor OFF to a given GPIO PIN (low level) More... | |
| void | MCP::setIoCon (uint8_t INTPOL, uint8_t ODR, uint8_t HAEN, uint8_t DISSLW, uint8_t SEQOP) |
| Sets the IO Configurarion gerister. More... | |
| mcp23008_ioncon | MCP::getIoCon () |
| Returns the IOCON content. More... | |
| void | MCP::invertGpioPolarity () |
| Inverts the polarity of the all GPIO port bits. More... | |
| void | MCP::setInterrupt (uint8_t polatity=0, uint8_t openDrainOutput=0) |
| Configures the MCP23008 interrupt feature. More... | |
| void | MCP::interruptGpioOn (uint8_t gpio, uint8_t bitCompare=1) |
| Sets the interrupt-on-change feature to a given GPIO pin. More... | |
|
inline |
Returns the current MCP GPIO pin levels.
|
inline |
Sets a value to the GPIO Register.
A direct way to set a given value to deal with the GPIOs pins.
| value | (8 bits) |
|
inline |
Returns the last value of INTCAP register (value immediately after the last interrupt event)
|
inline |
Returns the last value of INTF register.
The INTF register reflects the interrupt condition on the port pins of any pin that is enabled for interrupts via the GPINTEN register. A ‘set’ bit indicates that the associated pin caused the interrupt.
| uint8_t MCP::getRegister | ( | uint8_t | reg | ) |
Gets the corrent register information.
Gets the current register content.
| reg | (0x00 ~ 0xA) see MCP23008 registers documentation |
| void MCP::setRegister | ( | uint8_t | reg, |
| uint8_t | value | ||
| ) |
Sets a value to a given register.
Sets a given 8 bit value to a given register.
| reg | (0x00 ~ 0xA) see MCP23008 registers documentation |
| value | value (8 bits) |
| void MCP::turnGpioOn | ( | uint8_t | gpio | ) |
Turns a given GPIO port on (high level)
Sets a given GPIO pin high
| gpio | the GPIO/PIN number (0-7) |
| void MCP::turnGpioOff | ( | uint8_t | gpio | ) |
Turns a given GPIO port off (low level)
Sets a given GPIO pin to low
| gpio | the GPIO/PIN number (0-7) |
| bool MCP::gpioRead | ( | uint8_t | gpio | ) |
Reads the status (high or low) of a given GPIO.
Returns true if the gpio is hight or fale if it is low.
| gpio | pin number |
| void MCP::gpioWrite | ( | uint8_t | gpio, |
| uint8_t | value | ||
| ) |
Sets a given value (high(1) or low(0) ) to a given gpio pin.
It is like the turnGpioOn()
| gpio | pin number |
| value | 1 = High; 0 = Low |
| bool MCP::registerDigitalRead | ( | uint8_t | mcp_register, |
| uint8_t | bit_position | ||
| ) |
Reads the status (high or low) of a given bit (position) of a given MCP23008 register.
Returns true if the bit of the register is hight or fale if it is low.
| bit_position | bit position |
| void MCP::registerDigitalWrite | ( | uint8_t | mcp_register, |
| uint8_t | bit_position, | ||
| uint8_t | value | ||
| ) |
Sets High or Low to a given position in a given MCP23008 register.
Sets a given bit value to a given position in a given MCP23008 register
| mcp_register | MCM23008 register |
| bit_position | bit position |
| value | 0 = Low; 1 = High |
| void MCP::pullUpGpioOn | ( | uint8_t | gpio | ) |
Turns intenal pull up resistor ON to a given GPIO PIN (high level)
Activates the pull up resistor to a given GPIO pin
| gpio | the GPIO/PIN number (0-7) |
| void MCP::pullUpGpioOff | ( | uint8_t | gpio | ) |
Turns intenal pull up resistor OFF to a given GPIO PIN (low level)
Deactivates the pull up resistor to a given GPIO pin
| gpio | the GPIO/PIN number (0-7) |
| void MCP::setIoCon | ( | uint8_t | INTPOL, |
| uint8_t | ODR, | ||
| uint8_t | HAEN, | ||
| uint8_t | DISSLW, | ||
| uint8_t | SEQOP | ||
| ) |
Sets the IO Configurarion gerister.
The IOCON register contains several bits for configuring the device:
TheSequentialOperation(SEQOP)controlsthe incrementing function of the address pointer.
If the address pointer is disabled, the address pointer does not automatically increment after each byte is clocked during a serial transfer.
This feature is useful when it is desired to continuously poll (read) or modify (write) a register.
TheSlewRate(DISSLW)bitcontrolstheslew rate function on the SDA pin. If enabled, the SDA slew rate will be controlled when driving from a high to a low.
TheHardwareAddressEnable(HAEN)controlbit enables/disables the hardware address pins (A1, A0) on the MCP23S08. This bit is not used on the MCP23008. The address pins are always enabled on the MCP23008.
TheOpen-Drain(ODR)controlbitenables/ disables the INT pin for open-drain configuration.
TheInterruptPolarity(INTPOL)controlbitsets the polarity of the INT pin. This bit is functional only when the ODR bit is cleared, configuring the INT pin as active push-pull.
| INTPOL | This bit sets the polarity of the INT output pin. 1= Active-high. 0 = Active - low. |
| ODR | This bit configures the INT pin as an open-drain output. 1 = Open-drain. 0 = Active driver. |
| HAEN | Hardware Address Enable bit (MCP23S08 only). 1 = Enables. |
| DISSLW | Slew Rate control bit for SDA output. 1= Slewratedisabled. 0= Slewrateenabled. |
| SEQOP | Sequential Operation mode bit. 1 = Sequential operation disabled, address pointer does not increment. |
| mcp23008_ioncon MCP::getIoCon | ( | ) |
Returns the IOCON content.
This function returns a mcp23008_ioncon datatype with the IOCON register content
| void MCP::invertGpioPolarity | ( | ) |
Inverts the polarity of the all GPIO port bits.
The IPOL register allows the user to configure the polarity on the corresponding GPIO port bits.
If a bit is set, the corresponding GPIO register bit will reflect the inverted value on the pin.
Use the primitive setRegister(REG_IPOL, reg_value) if you ant to invert only a specific gpio.
| void MCP::setInterrupt | ( | uint8_t | polatity = 0 , |
| uint8_t | openDrainOutput = 0 |
||
| ) |
Configures the MCP23008 interrupt feature.
The INT output pin will be activated when an internal interrupt occurs.
The interrupt block can be configured by the following registers: GPINTEN, DEFVAL, INTCON and IOCON(ODRandINPOL).
This method work on IOCON.
| polatity | sets the polarity of the INT output pin. 1 = Active-high; 0 = Active-low. |
| openDrainOutput | configures the INT pin as an open-drain output. 1 = Open-drain output (overrides the INTPOL bit). 0 = Active driver output (INTPOL bit sets the polarity). |
| void MCP::interruptGpioOn | ( | uint8_t | gpio, |
| uint8_t | bitCompare = 1 |
||
| ) |
Sets the interrupt-on-change feature to a given GPIO pin.
The GPINTEN register controls the interrupt-on-change feature for each pin.
If a bit is set, the corresponding pin is enabled for interrupt-on-change.
The DEFVAL and INTCON registers must also be configured if any pins are enabled for interrupt-on-change.
if you want to configure more than one GPIO at once, use the primitive setRegister(REG_GPINTEN, reg);
If enabled (via GPINTEN and INTCON) to compare against the DEFVAL register, an opposite value on the associated pin will cause an interrupt to occur.
| gpio | GPIO / PIN you want to configure |
| bitCompare | The default comparison bit value that should be configured in the DEFVAL register. |


This is a “talk” page in Story, which is the permanent homepage for a talk you’ve given at a specific event. It’s designed to showcase your appearance by bringing together information about the event, along with your slides and extra information like a video of your talk. In this way you can build a portfolio of your speaking history.
Talks are designed to go together with slides. I (Baron, the author of Story) create a talk page for every speaking appearance.
You can reuse slides between talks, so multiple talks pages link to the same slides. You also can feature the cover image from the slides as the talks page’s featured image.
I normally put the speaking proposal / abstract into the body of the talks page’s content, where this text you’re reading right now is stored.
In case you missed that, this page normally wouldn’t have an article. It’d have a talk abstract.
Talks are included in RSS feeds and in the homepage listing of the site, but slides aren’t. This way people find out about your speaking, but they see no duplicate content.
You can create a screenshot of the first slide (title and all) and store it
in the slides directory, and use it as the thumbnail
of the talks page. That’s
what I’ve done on this page; its preview image on the talks listing
page is different from the banner at the top of this page.
Front-matter content for a talks page can have quite a few items. Here’s a rundown, assuming YAML front matter:
---
title: "Creating Beautiful Presentations with Story"
date: "Date of the presentation"
event: "name of the event, such as RemarkConf 2018"
location: "<physical address of the event>"
site: "<url to the homepage of the talk, for example the session page on a conference website>"
slides: "<usually /path/to/slides/in/the/slides/section/, but could be any link>"
image: "<usually something like /slides/my-slides/first-slide-background.jpg>"
description: "A description that will appear in social media shares"
thumbnail: "<usually something like /path/to/slides/thumbnail.jpg/>"
video: "a youtube or other video link"
---
Because talks and slides are designed to link so tightly together, their
archetypes (Hugo template files) work in lockstep, so you can create a pair of
talks and slides content items by running the hugo new
command once, then
editing it and running again:
$ hugo new talks/my-exciting-talk.md
$ hugo new slides/my-exciting-talk/index.md
If you look at the content that results from those commands, most of the defaults are basically prepopulated for you, such as links between them.
Story supports “future talks,” meaning that you can post a talk with a future date, and it’ll appear only in the right places at the right times. Story also supports PDF slides; you can host your own PDFs embedded with PDF.js. See future talks for more on these topics.
Read next: Story’s amazing Markdown-based presentation engine.


Deploying your static app to your backend repo using GitHub Actions
Our solution has two parts: a backend written in JavaScript, providing the API and a front-end created in Angular, Ionic, React or whatever is the flavor of the day. Usually you would deploy a web server to handle the URL, host the static files and have it redirect the /api
URL to our backend.
However there might be reasons (or that) that we can't or don't want to access the web server and need to serve your front-end app from the /static
directory of our backend.
Planning and a little YAML
Merging the two repositories seems initially an easy option, it just would break our workflows, so a different solution needs to be devised. The ask is simple:
Whenever a change happens in the main
branch of the front-end application (mostly through an approved pull request), the application should be build and the result transfered to the back-end application where a pull request merges it into main
. Duplicate approvals shall be avoided. So we need:
- Automatic build on push to main
- Pull / Push the bundle changes from front-end to the back-end
- Create a pull request and merge it in back-end
GitHub Actions
Our solution's repositories are hosted on GitHub, so I thought, GitHub Actions could be a simple solution. Starting is quite easy. We create a .github/workflows
directory in our repo and populate it with yaml files.
To give us a head start, the GitHub Marketplace lists over 5000 actions, that we can utilize. This makes typical tasks quite easy, once we find the right tool.
Since we will be working cross repository, we need a Personal Access Token (PAT). As a good practise we limit the token's permission to repo access only. Alternatively we could use a Deploy Key.
Our first workflow does nothing spectacular, short of the last step:
name: Reconcile front and backend
on:
push:
branches: [main]
jobs:
buildui:
name: Building UI
runs-on: ubuntu-latest
steps:
- name: Checkout UI
uses: actions/checkout@v2
- name: Deploy NodeJS
uses: actions/setup-node@v1
with:
node-version: "12.x"
- run: npm install
- run: npm run build --if present
- run: npm test
- name: Git schenigans
shell: bash
env:
GITHUB_TOKEN: ${{secrets.UI_PUSH_TOKEN }}
REPO2: acme/back-end
GITHUB_USER: john-doe
run: |
.github/pushRepo.sh
GitHub will run step by step and terminate if one of the steps fail. Our last step is a shell script. I found it easier to get what I need there, than trying the various market place options. In a nutshell:
- register the backend as sub-module. Since the front-end repo never goes back, no harm is done
- copy the files
- commit and push
#!/bin/bash
# Send UI back to a new branch in backend
now=$(date +"%Y-%m-%d_%H-%M")
message="[UI Commit] ${now}"
# Step1 clone backend
git submodule add<EMAIL_ADDRESS>backend
# Step3 update UI
rm -rf backend/static/ui
mkdir -p backend/static/ui
cp build/* backend/static/ui/
cd backend
git config user.email<EMAIL_ADDRESS>git config user.name "Acme automation"
git add --all
git commit -m "$message"
git checkout -b ui/ui-$now
git push -u origin ui/ui-$now
The changes now appear in the back-end repository in a new branch carrying a time stamp it its name. Next stop are pull request and auto-merge. For the pull request we use autopull-ui.yml
in the back-end repository:
name: Auto pull request on UI branches
on:
push:
branches: ui/*
jobs:
pullrequest:
name: Create pull request
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v2
- name: Make pullR
uses<EMAIL_ADDRESS>with:
destination_branch: "main"
pr_label: "ui,automerge"
github_token: ${{secrets.UI_PUSH_TOKEN }}
The key values here are the labels ui
and automerge
which set the stage for auto-merge-ui.yml
that takes the pull request and merges it in. When approvers for the two repositories are different, we would skip that step:
name: automerge ui
on:
pull_request:
types:
- labeled
- unlabeled
- synchronize
- opened
- edited
- ready_for_review
- reopened
- unlocked
pull_request_review:
types:
- submitted
check_suite:
types:
- completed
status: {}
jobs:
automerge:
runs-on: ubuntu-latest
steps:
- name: automerge
uses<EMAIL_ADDRESS>env:
GITHUB_TOKEN: ${{secrets.UI_PUSH_TOKEN }}
MERGE_DELETE_BRANCH: true
MERGE_LABELS: automerge,ui
ANd there you have it: two repositories, one approval for changes. Make sure you check carefull when trying yourself
As usual YMMV!
Posted by Stephan H Wissel on 04 October 2020 | Comments (0) | categories: GitHub NodeJS NodeRED


put another way...
"technology's role as a social, political and environmental accelerant"
geekswithblogs.net/TimothyK/archive/2019/07/30/the-17-layered-app
I truly do not understand why so many AI luminaries see the drive for interpretability as a threat.
— Liz O’Sullivan (@lizjosullivan) February 21, 2020
If this AI surgeon killed your mom, you’d probably want to know if it was preventable. A defect. Someone’s fault. That’s how our legal system works. If AI can’t work w/our laws... https://t.co/QgxMNjF2H4
Moral Crumple Zones: Cautionary Tales in Human-Robot Interaction
-vs-
-vs-
Also called Explainability
Do we know how the algorithm arrived at a specific decision?
LIME paper - husky vs wolf
Can we meaningfully explain this decision process to the people using the system?
Much of this research is focused on explicitly explaining decisions or actions to a human observer... However, it is fair to say that most work in explainable artificial intelligence uses only the researchers’ intuition of what constitutes a ‘good’ explanation.
- Tim Miller arxiv.org/pdf/1706.07269.pdf
Can we provide corrective steps that users can take to address an incorrect classification?
Recognition of the powerful pattern matching ability of humans is growing. As a result, humans are increasingly being deployed to make decisions that affect the well-being of other humans.
behavioralscientist.org/principles-for-the-application-of-human-intelligence/
Building ML systems in a corporate context...
Also often true in 'pure research'...
Classification exerts a normative force (it's never purely descriptive)
pursuit.unimelb.edu.au/articles/holding-a-black-mirror-up-to-artificial-intelligence
There is no prediction;
only intervention
In industry, it’s far too common there’s no discussion of societal harm or danger to freedom or rights. Just — can we make money on this? COOL. SHIP IT. I’ve worked alongside too many of these people, and I’m never going back. https://t.co/BEznnsobIC
— Liz O’Sullivan (@lizjosullivan) March 2, 2020


We help best people
like you across the world
- Mastering work-life-balance
- Find the job based on your skills
- Helping the paperwork
- 24/7 Best worker support
- Trusted payment protection


Following a particularly impairing night of Substance use, you have a very vivid dream, centered around
a particular grid of letters
.


We are a bunch of people interested in all things Scala (functional programming, Play! Framework, Akka, Spray, ...)
Meetup is where we plan our meetings.
GitHub is where we code.
Google Groups is where we chat.
And this is our website: scala-vienna.org
Developers from all skill levels eager to learn are welcome!
All source code can be found at:
https://github.com/scala-vienna/DevFest2013-Workshop/.
Just clone it via:> git clone https://github.com/scala-vienna/devfest2013
Or just download ZIP file from here if you don't have git
Project uses Typesafe Activator template, thus you can develop in the web browser or any other IDE which Activator supports. We will be developing in browser during this workshop, but if you are interested to code in your favourite IDE, please refer to Activator documentation about the topic.
> ./activator ui
> ./activator.bat ui
All source code needed for our workshop can be found in: /src
Production code can be found in: /src/main/scala
Test code can be found in: /src/test/scala
All the other directories within the project are irrelevant for the purpose of the workshop. They serve to build system and testing framework tasks.
Let's see the first bits of scala code and unit test in scala
Feel free to experiment and edit the source code and relevant unit tests. After clicking the Run or Test tab.
button. You can see the result of the changes either in the
Write something
Thank you for participating on this workshop!
It will be pleasure to meet anyone of you in our next meetup, check out for upcoming meet-ups on our website.


Once your package ships we will send an email with a link to track your order. Your order summary is below. Thank you again for your business
)| Tracking Order | {{ order_code }} |
|---|
| Status | {{ status }} |
|---|---|
| Billing Address | {{ billing }} |
| Shipping Address | {{ shipping }} |


Toggle navigation
soundPlay
α
Home
Playlist
About
Contact
Navigation
Home
Playlist
About
Contact
Category
{{category}}
{{ audioPlayer.currentTime * 100 / audioPlayer.duration }}% Complete
{{ audioPlayer.formatTime }}
/
{{ audioPlayer.formatDuration }}
{{currentTrack.user.username}}
{{currentTrack.title}}


A mixin module that provides simple asynchronous behavior to any standard class/object or object.
Feature:
As a stateful, plain old Ruby class/object
I want safe, asynchronous behavior
So my long-running methods don't block the main thread
Stateful, mutable objects must be managed carefully when used asynchronously.
But Ruby is an object-oriented language so designing with objects and classes
plays to Ruby's strengths and is often more natural to many Ruby programmers.
The Async
module is a way to mix simple yet powerful asynchronous capabilities
into any plain old Ruby object or class. These capabilities provide a reasonable
level of thread safe guarantees when used correctly.
When this module is mixed into a class or object it provides to new methods:
async
and await
. These methods are thread safe with respect to the enclosing
object. The former method allows methods to be called asynchronously by posting
to the global thread pool. The latter allows a method to be called synchronously
on the current thread but does so safely with respect to any pending asynchronous
method calls. Both methods return an Obligation
which can be inspected for
the result of the method call. Calling a method with async
will return a
:pending
Obligation
whereas await
will return a :complete
Obligation
.
Very loosely based on the async
and await
keywords in C#.
An Important Note About Initialization
This module depends on several internal synchronization objects that must be initialized prior to calling any of the async/await/executor methods. The best practice is to call
init_mutex
from within the constructor of the including class. A less ideal but acceptable practice is for the thread creating the asynchronous object to explicitly call theinit_mutex
method prior to calling any of the async/await/executor methods. Ifinit_mutex
is not called explicitly the async/await/executor methods will raise aConcurrent::InitializationError
. This is the only way thread-safe initialization can be guaranteed.
An Important Note About Thread Safe Guarantees
Thread safe guarantees can only be made when asynchronous method calls are not mixed with synchronous method calls. Use only synchronous calls when the object is used exclusively on a single thread. Use only
async
andawait
when the object is shared between threads. Once you call a method usingasync
, you should no longer call any methods directly on the object. Useasync
andawait
exclusively from then on. With careful programming it is possible to switch back and forth but it's also very easy to create race conditions and break your application. Basically, it's "async all the way down."
Examples
Defining an asynchronous class
Scenario: Defining an asynchronous class
Given a class definition
When I include the Concurrent::Async module
Then an `async` method is defined for all objects of the class
And an `await` method is defined for all objects of the class
Scenario: Calling the `async` method
Given a class which includes Concurrent::Async module
When I call a normal method through the `async` delegate method
Then the method returns a Concurrent::Future object
And the method is executed on a background thread using the global thread pool
And the current thread does not block
And thread safety is provided with respect to other `async` and `await` calls
And the returned future can be interrogated for the status of the method call
And the returned future will eventually contain the `value` of the method call
Or the returned future will eventually contain the `reason` the method call failed
Scenario: Calling the `await` method
Given a class which includes Concurrent::Async module
When I call a normal method through the `await` delegate method
Then the method returns a Concurrent::IVar object
And the method is executed on the current thread
And thread safety is provided with respect to other `async` and `await` calls
And the returned ivar will be in the :fulfilled state
Or the returned ivar will be in the :rejected state
And the returned ivar will immediately contain the `value` of the method call
Or the returned ivar will immediately contain the `reason` the method call failed
class Echo
include Concurrent::Async
def initialize
init_mutex # initialize the internal synchronization objects
end
def echo(msg)
sleep(rand)
print "#{msg}\n"
nil
end
end
horn = Echo.new
horn.echo('zero') # synchronous, not thread-safe
horn.async.echo('one') # asynchronous, non-blocking, thread-safe
horn.await.echo('two') # synchronous, blocking, thread-safe
Monkey-patching an existing object
Scenario: Monkey-patching an existing object
Given an object of a class that does not include the Concurrent::Async module
When I extend the object with the Concurrent::Async module
Then an `async` method is monkey-patched onto the object
And an `await` method is monkey-patched onto the object
And the object behaved as though Concurrent::Async were included in the class
And the `async` and `await` methods perform as expected
And no other objects of that class are affected
numbers = 1_000_000.times.collect{ rand }
numbers.extend(Concurrent::Async)
numbers.init_mutex # initialize the internal synchronization objects
future = numbers.async.max
future.state #=> :pending
sleep(2)
future.state #=> :fulfilled
future.value #=> 0.999999138918843


| SAIB 100 General Information
-
| Synonyms: |
SAIB; Sucrose acetate isobutyrate; Sucrose diacetate hexaisobutyrate |
| Molecular Formula: |
C40H62O19 |
| CAS Registry No.: |
126-13-6 |
| Chemical Category: |
Others |
Usage and Performance Characteristics
-
| Manufacturer: |
Celanese Ltd. |
| Outstanding Properties: |
Color & thermal stability, hydrolytic stability, low volatility |
| Used for Polymeric Materials: |
CN |
| Used for Products: |
Food packaging, printing inks |
Physical Properties
-
| Specific Gravity: |
1.146 (25°C) |
| Aggregate State at 25°C: |
Liquid, viscous |
| Density, kg/m3: |
1,146 (20°C) |
Chemical Properties
Optical Properties
-
| Color, Platinum-Cobalt Scale: |
<300 |
Hazard-Related Data
-
| OSHA Hazard Class: |
Not considered a hazardous substance |
| Autoignition Temperature, °C: |
399 |
| Flash Point Temperature, °C: |
226.5 |
| HMIS Personal protection: |
Safety glasses, nitrile rubber gloves, protective clothing |
| Mutagenicity: |
10 (Ames test) |
Environmental Parameters
-
| Chemical Oxygen Demand, COD, g/g: |
1.63 |
| Octanol-Water Partition Coeff., log Kow: |
6 |
| Theoretical Oxygen Demand, ThOD, g/g: |
1.74 |
Animal Toxicity
-
| Rat Oral, LD50, mg/kg: |
25,600 |
Plasticizers Database (2nd Electronic Edition) Copyright © 2004 by ChemTec Publishing |


HYATT REGENCY CAMBRIDGE, OVERLOOKING BOSTON
View Photos
Charles View Ballroom
The Charles View Ballroom is a truly spectacular meeting space with skyline views from the 16th floor.
Previous
Previous
Next
Next


Cole Sprouse and Lili Reinhart Share Make Out Shot to Instagram
by Erika HarwoodCole Sprouse and Lili Reinhart are definitely still together, and they posted the make-out photobooth shot to prove it. Reinhart posted some photobooth photos to Instagram showing her cuddling up with her boyfriend and Riverdale co-star writing, “The sequel.”
After a rumored split this summer, the couple is very much back on and appears to be better than ever.
“Cole and Lili are in a great place right now,” a source told E! News last month. “The two of them are very happy together. They’re getting along so well both on and off the set. They’re often openly affectionate and loving with one another.”
Sprouse and Reinhart took to Instagram to deny the rumors of a split, posting their joint W Magazine cover.
“BREAKING: A reliable source has confirmed that none of you know shit,” Reinhart wrote.
Sprouse echoed the sentiment writing, “UNPRECEDENTED: Cole Sprouse and Lili Reinhart consume the flesh of ‘reliable sources’ to fuel their bacchanalian sex cult.”
Despite this, a source told E! News that the couple briefly split as filming picked back up on Riverdale.
“Lili and Cole broke-up earlier this summer. The two are not living together this season,” a source shared this summer, adding that they were “intentionally keeping their distance from each other.”
“Right now, it's unclear where things stand,” the insider added. “But it seems [like] they could be heading back in the direction of getting together.”
Apparently that was very much correct.


We're a group of CSE students who want to learn skills from each other and work on side projects together. Come join us!
Contact: uwsudouw.edu
The name of the organization shall be “Sudo Soldiers”.
It shall be the purpose of this organization to get together every week to work on projects in teams, make or break something great and build strong relationships.
The organization has no affiliations with any external or internal organizations, groups or departments.
The membership of this organization shall consist of regularly enrolled undergraduate students of the University of Washington who have been admitted into either Computer Science or Computer Engineering major.
Only those members who are currently registered University of Washington students have voting privileges.
Eligibility requirements: Students of any class standing as long as they are admitted into either Computer Science or Computer Engineering major can become members.
Selection of officers shall be held in May and elected officers will become active from the following Autumn quarter. The then-primary officer will notify of the elections using email and social media accounts.
Elections shall be held when any of the current officers: (i) wants to step down, (ii) graduates (iii) does not seem to perform well based on other officers' discretion.
Any member of the organization can nominate himself or herself for the available position(s), and any member can vote. Any nominee with the highest percentage of votes will be elected.
The members of the organization shall meet every Sunday of the academic period. They will be notified using social media and email channels by any of the officers.
A quorum shall consist of 20% voting members or a percentage of voting members present at any regular or special meeting.
Management of this organization shall be vested in a board of directors.
The board shall consist of: 1 President, 1 Vice-President, 1 Treasurer, 2 Secretary.
Powers and duties of each position.
The Treasurer shall create an send monthly financial reports to all officers.
The constitution may be amended by a vote of two-‐thirds majority membership at any regular or special meeting. Members shall be notified by email and social media when at least 72 hours before


{% extends 'base.html' %} {% block body_tag %} onload="initialize_online()"{% endblock %} {% block body %}
| Callsign | Origin | Destination | Aircraft | Started on |
|---|---|---|---|---|
| {{ flight.airline_icao }}{{ flight.flight_number }} | {{ flight.origin }} | {{ flight.destination }} | {{ flight.aircraft }} | {{ flight.start.strftime('%Y-%m-%d %H:%M') }} UTC |


Michael Owen states his prediction for West Ham v Tottenham
BT Sport pundit Michael Owen is backing West Ham to beat Tottenham Hotspur at London Stadium on Saturday
by The Sport Review staffMichael Owen is backing West Ham United to beat Tottenham Hotspur at the London Stadium on Saturday afternoon.
Spurs have made a disappointing start to the Premier League season despite reaching the Champions League final for the first time last term.
Tottenham lost 2-0 to Liverpool FC in the Madrid showpiece and they haven’t recovered after a run of poor results in the English top flight.
Spurs made the surprise decision to sack Mauricio Pochettino on Tuesday night and replace him with Jose Mourinho ahead of their trip to bitter London rivals West Ham this weekend.
Mourinho will be looking to claim three points in his first game in charge when Spurs make the short trip across the English capital to West Ham on Saturday.
England legend Owen is backing West Ham to beat Tottenham at the London Stadium.
“West Ham have lost four of their last five league games while Spurs have their lowest points tally (14) after 12 league games for over a decade,” Owen told BetVictor.
“This could not be described as a game between two inform-sides!
“Manuel Pellegrini received a vote of confidence from the Hammers board after their latest defeat at Turf Moor and I think that faith will be rewarded back at the London Stadium.
“Spurs, despite their heavy defeat to Bayern Munich, have reserved their best performances for the Champions League of late and I feel the hosts will edge what promises to be a hugely entertaining London derby.”
Tottenham are in 14th position in the Premier League table and 11 points adrift of Manchester City, who occupy fourth position in the league standings.
The Champions League runners-up are a point ahead of West Ham ahead of the clash at the London Stadium.
West Ham have failed to secure a win in their last six games in the English top flight.


AMAZING PEOPLE ARE MAKING AMAZING DESIGNS IN A FUN ENVIRONMENT
When you work with us you are part of a team of commited collaborators. All aspects of our software development process are intergrated, interactive and agile.
Our approach unifies design, development and product management to create exceptional products.
We start each project by understanding your business goals, the users' needs and the product requirements.
Then we help translate them into effective and elegant solutions.
Before we sign a contract or write a line of code our team will spend the necessary time needed to understand your product vision.The outcome of this scoping session is proposal or high-level statement of work based on your requirements, we can provide a complete offering or just the pieces you need.
Design
Our design practice offers a full range of services including brand strategy, interaction and visual design and user experience testing. Throughout your project, our designers create and implement visual design and workflows, solicit user feedback and work with you to make sure what gets built is what is needed.
Development
All engineers are fluent in the latest enterprise, mobile and web development technologies. They collaborate with your team to write, and improve code on a daily basis, using proven practices such as test-driven development and pair programming.
Product
Planning and Development is iterative. Because we are constantly coding and testing, the products we build are always ready to go live. This iterative process allows for changes as business requirements evovle.
Delani Studio.
2021


First line
Break before
Break after
No effect (should be top of 3rd page, using css or specify).
Legacy (should create a break after).
No effect (should be top of 2nd page, using legacy).
Big element (should start on new page, using avoid-all/css/specify).
No effect (should start on next page *only* using avoid-all).
No effect (for spacing).
Full-page element (should start on new page using avoid-all/css/specify).
No effect (for spacing).
Even bigger element (should continue normally, because it's more than a page).
No effect inside parent div (testing avoid-all - no break yet because parent is more than a page).
Big element inside parent div (testing avoid-all - should have break before this).
| Cell 1-1 - start of new page (avoid-all only) | Cell 1-2 - start of new page (avoid-all only) |
| Cell 2-1 - start of another new page (avoid-all only) | Cell 2-2 - start of another new page (avoid-all only) |


{% extends "base_nav.html" %} {% load crispy_forms_tags %} {% block content %} {% if not object.active %}
Warning: This request was closed.
Assignee: {% if object.assigned_to %} {{ object.assigned_to.full_name }} (clear). {% else %} no one (assign yourself). {% endif %}