Jubilation
问题描述 :
Since the performance factor is a matter which the organizing committee cannot control, ask you to simply estimate the overall satisfaction degree of all teams. In particular, through years of experience, the committee asks you to calculate the satisfaction degree of a team using the following estimation steps:
1. If this team has performed in the contest at least as well as it had expected, its satisfaction degree is 3; otherwise
2. If this team’s performance is better than its last year’s performance, its satisfaction degree is 2; otherwise its satisfaction degree is 1.
(For the sake of simplicity, both the performance of a team and a team’s expectation are measured by its place on the rank list.)
This year’s and last year’s rank lists, along with the expectations of all teams are already given to you. (But the method which we used to find the expectations of the participating teams will remain a secret!) Can you calculate the total satisfaction degree of all teams by the above rules and the data you’ve been given?
输入:
The second line of every test case consists of N numbers in the range [1...N] , the i -th number representing the ID of team with i -th place in this year’s contest. Similarly, the third line of every test case describes the final rank list of last year’s contest. You can assume there will be no ties in the rank lists given to you.
The last line of every test case consists of N numbers in the range [1...N] , the i -th number representing the expectation of the i -th team this year. There’s a blank line between two successive test cases. A single line with N = 0 indicates the end of input file.
输出:
The second line of every test case consists of N numbers in the range [1...N] , the i -th number representing the ID of team with i -th place in this year’s contest. Similarly, the third line of every test case describes the final rank list of last year’s contest. You can assume there will be no ties in the rank lists given to you.
The last line of every test case consists of N numbers in the range [1...N] , the i -th number representing the expectation of the i -th team this year. There’s a blank line between two successive test cases. A single line with N = 0 indicates the end of input file.
样例输入:
5 5 4 1 3 2 3 1 5 2 4 3 5 1 1 2 5 5 4 1 3 2 1 2 4 5 3 5 3 3 5 1 0
样例输出:
Case 1: 12 Case 2: 12
#include<stdio.h> #include<string.h> int n; int a[4][2000]; int b[4][2000]; int main() { int T = 0; while(1){ ++T; scanf("%d",&n); if(n == 0) break; for(int i = 1;i <= 3;++i) for(int j = 1;j <= n;++j) scanf("%d",&a[i][j]); for(int i = 1;i <= 2;++i) for(int j = 1;j <= n;++j) b[i][a[i][j]] = j; int sum = 0; for(int j = 1;j <= n;++j){ if(a[3][j] >= b[1][j]) sum += 3; else if(b[1][j] <= b[2][j]) sum += 2; else sum += 1; } printf("Case %d: %d\n",T,sum); } return 0; }
我怎么感觉带点关键字的样子呀
我怎么感觉带点关键字的样子呀
我怎么感觉带点关键字的样子呀
我怎么感觉带点关键字的样子呀
我怎么感觉带点关键字的样子呀
我怎么感觉带点关键字的样子呀
我怎么感觉带点关键字的样子呀
我怎么感觉带点关键字的样子呀
妈呀！这个Dijkstra模板好长OwQ！
失误失误，转载错了。已经改正，抱歉。
这道题目的核心一句话是：取还是不取。
如果当前取，则index+1作为参数。如果当前不取，则任用index作为参数。
看见的晚了，只能提交一次唉
学算法中的数据结构学到一定程度会乐此不疲的，比如其中的2－3树，类似的红黑树，我甚至可以自己写个逻辑文件系统结构来。
这个应该是比较简单的解法了，如果有更好的办法可以告诉我
以了解 想問為甚麼 Tbl[6001] = {1} 初始化都是1
為何不是Tbl[0]=1 其他為0
居然是机试，还和13年重复。题目不难
nice!!!
程序员会算法，等于一个古惑仔带了zhi抢啊
程序员会算法，等于一个古惑仔带了zhi抢啊
华为这题目略显简单啊
您没有考虑 树的根节点是负数的情况， 若树的根节点是个很大的负数，那么就要考虑过不过另外一边子树了
学习了


22 June 2001
Disease Outbreak Reported
During 2001 the following countries have reported cases of W135 meningococcal disease to WHO (see previous report) ; most cases are associated with international travel or contact with travellers to Saudi Arabia:
Burkina Faso: N. meningitidis serogroup W135 has been laboratory confirmed in 4 cases by the Centers for Disease Control and Prevention, Atlanta, United States. Travel/contact history of cases is not yet known.
Following a joint mission of Institut Pasteur, Paris and Association pour la Médecine Préventive (AMP) ) to investigate the epidemic meningitis situation, 10 additional cases of N. meningitidis W135 were laboratory confirmed. The samples were taken from documented cases between 10-24 April 2001 and the proportion of N. meningitidis isolates belonging to the W135 serogroup was found to be 37% of the total N. meningitidis isolates identified by PCR on collected specimens. None of the cases had any relationship with the 2001 Haj pilgrimage (travel or contact history). Among 4 strains that were cultured from the same period, 3 were W135:2a:P1-2,5 and belong to the ET-37 complex.
Niger: A joint mission of Institut Pasteur, Paris and AMP investigated the epidemic meningitis situation and identified 10 laboratory confirmed cases of N. meningitidis W135. The samples were taken from documented cases between 10-16 April 2001 and the proportion of N. meningitidis isolates belonging to the W135 serogroup was found to be 40% of the total N. meningitidis isolates identified by PCR on collected specimens. None of the cases had any relationship with the 2001 Haj pilgrimage (travel or contact history).
Central African Republic: 3 cases (Haj pilgrims) have been reported. N. meningitidis serogroup W135 have been laboratory confirmed.
Denmark: 2 cases (one case close contact with Haj pilgrims, the travel/contact history of the second case is not yet known)have been reported. N. meningitidis serogroup W135 has been laboratory confirmed.
France: 2 cases (close contacts with Haj pilgrims) have been reported. N. meningitidis serogroup W135 has been laboratory confirmed.
Norway: 4 cases (2 contacts with Haj pilgrims) have been reported. N. meningitidis serogroup W135 has been laboratory confirmed.
Saudi Arabia: 109 cases (predominantly Haj pilgrims from outside Saudi Arabia) including 35 deaths have been reported between 9 February and 22 March 2001. N. meningitidis serogroup W135 has been laboratory confirmed in more than half of the cases.
Singapore: 4 cases (3 close contacts with Haj pilgrims, 1 history of travel to Saudi Arabia), including 1 death have been reported. Two of the cases occurred in January 2001, before the main period of pilgrimage to Saudi Arabia. N. meningitidis serogroup W135 has been laboratory confirmed.
United Kingdom of Great Britain and Northern Ireland: 41 cases (8 pilgrims returning from the Haj, 19 cases of close contacts and data outstanding on the remaining cases) including 11 deaths of laboratory confirmed invasive N. meningitidis serogroup W135 have been reported.
Meningococcal disease. As with all types of meningococcal disease, early diagnosis and treatment are essential. The symptoms of group W135 meningococcal disease are the same as for other groups of the disease: sudden onset of intense headache, high fever, nausea, and vomiting, photophobia and stiff neck. The most severe clinical form of the disease, meningococcal septicaemia can be presented by abrupt onset, high fever, petechial rash or purpura.
WHO recommends that chemoprophylaxis be given to close contacts of the cases, such as persons sleeping in the same dwelling. In most countries rifampicin is recommended.
In preparation for the Umrah and the Haj seasons for next year, the Ministry of Health of the Government of Saudi Arabia has notified the Ministries of Health of all countries from which pilgrims arrive, that the vaccination against meningococcal meningitis with the quadrivalent vaccine (serogroups A,C, Y and W135) has been added to the health requirements for arrivals coming to the Umrah and Haj.
WHO encourages national reference laboratories to closely monitor meningococcal disease.
For further information, see the Control of Epidemic Meningococcal Disease.
WHO Practical Guidelines. 2nd edition
(in English
and in French,
with annexes)
In order to fully identify and follow the epidemiological spread of the W135 strain, WHO encourages countries to send specimens to WHO Collaborating Centres for Meningococcal Infections. The Centres are:
Institut de Médecine Tropicale du Service de Santé des Armées
Parc du Pharo, B.P. 46
F-13998 Marseille-Armées
France
Dr. Pierre Nicolas
Tel: +33 4 91 15 01 15
Fax: +33 4 91 59 44 77
E-mail:[email protected]
WHO Collaborating Centre for Control of Epidemic Meningitis
Centers for Disease Control and Prevention
Atlanta, GA 30333
United States of America
Dr. Tanja Popovic
Tel: +1 404 639 17 30
Fax: +1 404 639 31 23
E-mail: [email protected]
WHO Collaboration Centre for Reference and Research on Meningococci
Department of Bacteriology
National Institute of Public Health
PO Box 4404
Torshov
N-0403 Oslo
Norway
Dr. Dominique Caugant
Tel: + 47 22 04 23 11
Fax: + 47 22 04 25 18
E-mail:[email protected]
For further information, please contact: [email protected]


This is an example of a custom element with content . Notice the font color is inherited from main.css.
This is an example of a custom element with content . The span has got a custom color style defined in the template.


uBit.radio.event¶
Overview¶
It is also possible to transparently send and receive events over the MicroBitRadio
channel. This can provide very simple and easy to integrate
support for event driven applications. Once configured, an event raised on one micro:bit can be detected on another - in the just the same way as
a local event such as a button click.
To use this functionality, all that is needed is to register the event codes that you would like to be sent over the radio, then write event handlers
for the message bus as with all other events. See the documentation for the MicroBitMessageBus
for details of how to write
event handlers.
For example, if you wanted to share an event SOMETHING with another micro:bit whenever ButtonA is pressed, you might write code like this on the sending micro:bit:
#define MY_APP_ID 4000
#define SOMETHING 1
int main()
{
uBit.radio.enable();
// Ensure the radio is listening out to forward our events
uBit.radio.event.listen(MY_APP_ID, MICROBIT_EVT_ANY);
while(1)
{
if (uBit.buttonA.isPressed())
MicroBitEvent(MY_APP_ID, SOMETHING);
uBit.sleep(1000);
}
}
...and on the micro:bits wanting to receive the event:
#define MY_APP_ID 4000
#define SOMETHING 1
void onSomething(MicroBitEvent e)
{
uBit.display.scrollAsync("Something!");
}
int main()
{
uBit.messageBus.listen(MY_APP_ID, SOMETHING, onSomething);
uBit.radio.enable();
while(1)
uBit.sleep(1000);
}
Message Bus ID¶
None.
Message Bus Events¶
None.
API¶
Constructor¶
MicroBitRadioEvent( MicroBitRadio & r)¶
Description¶
Constructor.
Creates an instance of MicroBitRadioEvent which offers the ability to extend the micro:bit's default EventModel to other micro:bits in the vicinity.
r
The underlying radio module used to send and receive data.
Parameters¶
MicroBitRadio &r - The underlying radio module used to send and receive data.
listen¶
int listen( uint16_t id, uint16_t value)¶
Description¶
Associates the given event with the radio channel.
Once registered, all events matching the given registration sent to this micro:bit's default EventModel will be automatically retransmitted on the radio.
Parameters¶
uint16_tid - The id of the event to register.uint16_tvalue - the value of the event to register.
Returns¶
MICROBIT_OK on success, or MICROBIT_NO_RESOURCES if no default EventModel is available.
Note
The wildcards MICROBIT_ID_ANY and MICROBIT_EVT_ANY can also be in place of the id and value fields.
int listen( uint16_t id, uint16_t value, EventModel & eventBus)¶
Description¶
Associates the given event with the radio channel.
Once registered, all events matching the given registration sent to the given EventModel will be automatically retransmitted on the radio.
Parameters¶
uint16_tid - The id of the events to register.uint16_tvalue - the value of the event to register.EventModel &eventBus - The EventModel to listen for events on.
Returns¶
MICROBIT_OK on success.
Note
The wildcards MICROBIT_ID_ANY and MICROBIT_EVT_ANY can also be in place of the id and value fields.
ignore¶
int ignore( uint16_t id, uint16_t value)¶
Description¶
Disassociates the given event with the radio channel.
Parameters¶
uint16_tid - The id of the events to deregister.uint16_tvalue - The value of the event to deregister.
Returns¶
MICROBIT_OK on success, or MICROBIT_INVALID_PARAMETER if the default message bus does not exist.
Note
MICROBIT_EVT_ANY can be used to deregister all event values matching the given id.
int ignore( uint16_t id, uint16_t value, EventModel & eventBus)¶
Description¶
Disassociates the given events with the radio channel.
Parameters¶
uint16_tid - The id of the events to deregister.uint16_tvalue - The value of the event to deregister.EventModel &eventBus - The EventModel to deregister on.
Returns¶
MICROBIT_OK on success.
Note
MICROBIT_EVT_ANY can be used to deregister all event values matching the given id.
packetReceived¶
void packetReceived()¶
Description¶
Protocol handler callback. This is called when the radio receives a packet marked as using the event protocol.
This function process this packet, and fires the event contained inside onto the default EventModel .
eventReceived¶
void eventReceived( MicroBitEvent e)¶
Description¶
Event handler callback. This is called whenever an event is received matching one of those registered through the registerEvent() method described above. Upon receiving such an event, it is wrapped into a radio packet and transmitted to any other micro:bits in the same group.
Parameters¶
MicroBitEvente


|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.velocity.tools.generic.SortTool
public class SortTool
SortTool allows a user to sort a collection (or array, iterator, etc) on any arbitary set of properties exposed by the objects contained within the collection.
The sort tool is specifically designed to use within a #foreach but you may find other uses for it.
The sort tool can handle all of the collection types supported by #foreach and the same constraints apply as well as the following. Every object in the collection must support the set of properties selected to sort on. Each property which is to be sorted on must return one of the follow:
During the sort operation all properties are compared by calling compareTo() with the exception of Strings for which compareToIgnoreCase() is called.
The sort is performed by calling Collections.sort() after marshalling the collection to sort into an appropriate collection type. The original collection will not be re-ordered; a new list containing the sorted elements will always be returned.
The tool is used as follows:
Single Property Sort #foreach($obj in $sorter.sort($objects, "name")) $obj.name Ordinal= $obj.ordinal #end End Multiple Property Sort #foreach($obj in $sorter.sort($objects, ["name", "ordinal"])) $obj.name, $obj.ordinal #end EndThe sort method takes two parameters a collection and a property name or an array of property names. The property names and corresponding methods must conform to java bean standards since commons-beanutils is used to extract the property values.
By default the sort tool sorts ascending, you can override this by adding a sort type suffix to any property name.
The supported suffixes are:
For ascending :asc For descending :desc Example #foreach($obj in $sorter.sort($objects, ["name:asc", "ordinal:desc"])) $obj.name, $obj.ordinal #end
This will sort first by Name in ascending order and then by Ordinal in descending order, of course you could have left the :asc off of the 'Name' property as ascending is always the default.
| Nested Class Summary | |
|---|---|
class |
SortTool.PropertiesComparator
Does all of the comparisons |
| Constructor Summary | |
|---|---|
SortTool()
|
| Method Summary | |
|---|---|
protected static java.lang.Comparable |
getComparable(java.lang.Object object,
java.lang.String property)
Safely retrieves the comparable value for the specified property from the specified object. |
protected java.util.Collection |
internalSort(java.util.List list,
java.util.List properties)
|
java.util.Collection |
sort(java.util.Collection collection)
|
java.util.Collection |
sort(java.util.Collection collection,
java.util.List properties)
|
java.util.Collection |
sort(java.util.Map map)
|
java.util.Collection |
sort(java.util.Map map,
java.util.List properties)
|
java.util.Collection |
sort(java.lang.Object[] array)
|
java.util.Collection |
sort(java.lang.Object[] array,
java.util.List properties)
|
java.util.Collection |
sort(java.lang.Object object,
java.lang.String property)
Sorts the collection on a single property. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public SortTool()
| Method Detail |
|---|
public java.util.Collection sort(java.util.Collection collection)
public java.util.Collection sort(java.lang.Object[] array)
public java.util.Collection sort(java.util.Map map)
public java.util.Collection sort(java.lang.Object object, java.lang.String property)
object
- the collection to be sorted.property
- the property to sort on.public java.util.Collection sort(java.util.Collection collection, java.util.List properties)
public java.util.Collection sort(java.util.Map map, java.util.List properties)
public java.util.Collection sort(java.lang.Object[] array, java.util.List properties)
protected java.util.Collection internalSort(java.util.List list, java.util.List properties)
protected static java.lang.Comparable getComparable(java.lang.Object object, java.lang.String property)
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


Home
Winnipeg 311 Calls
You should not be here
But since you are here...
Store
Pick up some merch for my team


| Total net profit | -67.82 | Gross profit | 63.42 | Gross loss | -131.24 |
| Profit factor | 0.48 | Expected payoff | -0.33 | ||
| Absolute drawdown | -67.82 | Maximal drawdown (%) | 68.67 (8078.82%) | ||
| Total trades | 206 | Profit trades (% of total) | 81 (39.32%) | Loss trades (% of total) | 125 (60.68%) |
| Long positions (won %) | 101 (47.52%) | Short positions (won %) | 105 (31.43%) | ||
| Largest | profit trade | 4.07 | loss trade | -2.66 | |
| Average | profit trade | 0.78 | loss trade | -1.05 | |
| Minimum | profit trade | 0.04 | loss trade | -0.07 | |
| Maximum | take profit in pips | 52.4 | stop loss in pips | -36.4 | |
| Average | take profit in pips | 10.6 | stop loss in pips | -16.0 | |
| Minimum | take profit in pips | -5.4 | stop loss in pips | -3.4 | |
| Maximum | Reward-Risk | 4.3 | Duration in minutes | 3321 | |
| Average | Reward-Risk | 0.8 | Duration in minutes | 106.8 | |
| Minimum | Reward-Risk | 0.0 | Duration in minutes | 0 | |
| Maximum | consecutive wins (profit in money) | 9.0 (3.48) | consecutive losses (loss in money) | 8.0 (-7.58) | |
| Average | consecutive wins | 1.0 | consecutive losses | 2.0 |
| Total net profit | -31.72 | Gross profit | 30.04 | Gross loss | -61.76 |
| Profit factor | 0.49 | Expected payoff | -0.31 | ||
| Absolute drawdown | -32.35 | Maximal drawdown (%) | 32.68 (9903.03%) | ||
| Total trades | 101 | Profit trades (% of total) | 48 (47.52%) | Loss trades (% of total) | 53 (52.48%) |
| Largest | profit trade | 2.79 | loss trade | -2.66 | |
| Average | profit trade | 0.63 | loss trade | -1.17 | |
| Minimum | profit trade | 0.04 | loss trade | -0.07 | |
| Maximum | take profit in pips | 35.8 | stop loss in pips | -36.4 | |
| Average | take profit in pips | 8.6 | stop loss in pips | -17.9 | |
| Minimum | take profit in pips | -5.4 | stop loss in pips | -9.0 | |
| Maximum | Reward-Risk | 2.2 | Duration in minutes | 850.0 | |
| Average | Reward-Risk | 0.5 | Duration in minutes | 99.0 | |
| Minimum | Reward-Risk | 0.0 | Duration in minutes | 0.0 | |
| Maximum | consecutive wins (profit in money) | 5.0 (3.13) | consecutive losses (loss in money) | 5.0 (-6.98) | |
| Average | consecutive wins | 1.0 | consecutive losses | 2.0 |
| Total net profit | -36.1 | Gross profit | 33.38 | Gross loss | -69.48 |
| Profit factor | 0.48 | Expected payoff | -0.34 | ||
| Absolute drawdown | -36.1 | Maximal drawdown (%) | 37.95 (2051.35%) | ||
| Total trades | 105 | Profit trades (% of total) | 33 (31.43%) | Loss trades (% of total) | 72 (68.57%) |
| Largest | profit trade | 4.07 | loss trade | -2.4 | |
| Average | profit trade | 1.01 | loss trade | -0.97 | |
| Minimum | profit trade | 0.09 | loss trade | -0.13 | |
| Maximum | take profit in pips | 52.4 | stop loss in pips | -36.3 | |
| Average | take profit in pips | 12.6 | stop loss in pips | -14.1 | |
| Minimum | take profit in pips | -2.0 | stop loss in pips | -3.4 | |
| Maximum | Reward-Risk | 4.3 | Duration in minutes | 3321.0 | |
| Average | Reward-Risk | 1.1 | Duration in minutes | 114.3 | |
| Minimum | Reward-Risk | Duration in minutes | 0.0 | ||
| Maximum | consecutive wins (profit in money) | 5.0 (3.6) | consecutive losses (loss in money) | 11.0 (-8.66) | |
| Average | consecutive wins | 1.0 | consecutive losses | 3.0 |


Class: c3.Axis Abstract
| Defined in: | js/c3-plot.coffee |
| Inherits: | c3.Chart |
Overview
An Axis visualizes a set of tick marks and units based on the supplied D3 scale. This is an abstract class, please create a {c3.Axis.x} or {c3.Axis.y}.
Axes may be attached to XY Plots or managed as a seperate DOM element for layout flexibility.
Direct Known Subclasses
Variables Summary
- version =
-
0.1
- type =
-
'axis'
- _next_uid =
-
0
- scale =
-
undefined
- orient =
-
undefined
[String] Axis orientation. Use bottom or top for an X axis and left or right for a Y axis.
- grid =
-
false
[Boolean] Set to true to draw grid lines as well as the axis
- label =
-
undefined
[String] Text label for this axis
- ticks =
-
true
[Boolean] Enable tick marks and labels
- tick_label =
-
true
[Boolean, Function] Formater function for the tick label. Set to
true
for displaying the default tick values. _See d3.format_. - tick_values =
-
undefined
[Array] An array of manually set tick values to use instead of the scale's automatic tick generation.
- tick_count =
-
undefined
[Number] Specify number of ticks to generate
- tick_size =
-
6
[Number] Size of the tick marks in pixels
- path_size =
-
2
[Number] Width of the path that forms a line along the length of the axis
- axis_size =
-
undefined
[Number] The overall width of a horizontal axis or height of a vertical axis
Variable inherited from c3.Chart
type class options content_options anchor height width anchor_styles handlers
Instance Method Summary
- # (void) _init() Bound
- # (void) _draw() Bound
Inherited Method Summary
Methods inherited from
c3.Chart
#init #style #render #resize #redraw #restyle #_prep #_init #size #_size #update #_update #draw #_draw #_style
Constructor Details
#
(void)
constructor(opt)
Instance Method Details
#
(void)
_init()
Bound
#
(void)
_draw()
Bound


| Opcode | Instruction | 64-Bit Mode | Compat/Leg Mode | Description |
|---|---|---|---|---|
| D9 F0 | F2XM1 | Valid | Valid | Replace ST(0) with (2ST(0) – 1). |
Computes the exponential value of 2 to the power of the source operand minus 1. The source operand is located in register ST(0) and the result is also stored in ST(0). The value of the source operand must lie in the range –1.0 to +1.0. If the source value is outside this range, the result is undefined.
The following table shows the results obtained when computing the exponential value of various classes of numbers, assuming that neither overflow nor underflow occurs.
| ST(0) SRC | ST(0) DEST |
|---|---|
| − 1.0 to −0 | − 0.5 to − 0 |
| − 0 | − 0 |
| + 0 | + 0 |
| + 0 to +1.0 | + 0 to 1.0 |
Values other than 2 can be exponentiated using the following formula:
xy ← 2(y ∗ log2x)
This instruction’s operation is the same in non-64-bit modes and 64-bit mode.
ST(0) ← (2ST(0) − 1);
| C1 |
Set to 0 if stack underflow occurred. Set if result was rounded up; cleared otherwise. |
| C0, C2, C3 | Undefined. |
| #IS | Stack underflow occurred. |
| #IA | Source operand is an SNaN value or unsupported format. |
#D
Source is a denormal value.
#U
Result is too small for destination format.
#P
Value cannot be represented exactly in destination format.
| #NM | CR0.EM[bit 2] or CR0.TS[bit 3] = 1. |
| #UD | If the LOCK prefix is used. |
Same exceptions as in protected mode.
Same exceptions as in protected mode.
Same exceptions as in protected mode.
Same exceptions as in protected mode.


{@boolean renderSection1=true} {@boolean renderButtonSection1=true} {#include Common/insightsEmailBody} {#content-title} Ansible {/content-title} {#content-title-section1} Report available {/content-title-section1} {#content-body-section1}
Ansible report available for download.
{/content-body-section1} {#content-button-section1} Download now {/content-button-section1} {/include}


After opening up our new empty window, we can add some configurations to our window before opening it. Let's change it's name and such.
After that, your window will end up looking like this:
Let's go a bit deeper and add some text. To do that, we require to load a Font first.
Download this font (thanks Iván Coello) and put it in the same folder as your application.
Now let's load it in our game:
(You can learn more about the font from the API docs)
We the font loaded we can now create some text
the Text component is used to write a sentence into the screen:
(You can learn more about the text class from the API docs)
We almost have some text into the screen, we just need to tell our game to draw it:
So our final code will end up being:


Backing Up 2019
Justin Finnerty
2019-02-15
My harddrive broke and all my work is gone. I should have made some backups..
What is the purpose of a backup?
- Safety
- Versioning
- Definitive location
What is a definitive location?
What type of backup?
Archive
- Multiple versions of files kept.
- Able to return to an earlier version.
- Requires more disk space.
Backup
- Stores a copy of content at a given point.
- Requires only as much disk space as the original.
Where to backup?
How often to backup?
- For an archive
- How often do you want to save a new version?
- For a backup
- How often do you want to save the current version?
How To Backup
What to back-up
dpkg --get-selections > ~/installed/installed.txt
sudo cp -R /etc/apt/sources.list* ~/installed/
sudo apt-key exportall > ~/installed/repo.keys
sudo chown -R finnerty:finnerty ~/installed
Directory organisation
- Separate what to back up.
Example 1
- bin
- Desktop (empty)
- Downloads
- Documents
- data
- installed
- mounts
- ownCloud
- DocumentCloud
- own-folder-1
- own-folder-2
- shared-folder-1
- shared-folder-2
- repositories
- src
- vaults
- virtual-machines
Example 2
- Projects
- project-1
- repositories
- data
- documents
- project-2
- repositories
- data
- documents
back-in-time
Main Interface
General settings
Schedule your back up
What to include
What to exclude
How to set up archive
More details
Even more details


Looking for the Best
Tire Service?
Get your fair-price repair estimates
Full Service of
Auto Repair
& Maintenance
Over 35 Years Of Quality Auto Service
Trust Your Vehicle to
Certified
Technicians
SERVICE, MAINTENANCE & REPAIR BY THE CERTIFIED SERVICE EXPERTS


A Simple CPU
Magic
When I was a child, I marveled at our family computer. Occasionally, when I was bored of shooting things in Duke Nukem 3D or Doom, I'd lean my face in really close to the monitor and start nudging the arrow keys. As the game camera moved about the virtual space, the pixelated rectangles on screen would shift and distort in complex patterns. I was convinced that if I just stared at it long enough, I'd figure out how they made the colors on screen change to look like a 3D room.
In high school, I finally learned enough math to figure it out. I even built a little ray-casting 3D engine. (I later learned neither game actually used ray-casting. Que sera.) It was one thing to work out on paper how to use wall distances to shrink or expand a pixel-wide column of texture. It was another thing to walk around a room made of your own math.
In my childhood, I'd been shown a magic trick. Hocus pocus, now you see a room! Later, I'd learned the trick myself.
In college, I learned computer architecture, compilers, network stacks, algorithms, and all the trappings of software. I took a digital circuit design class and made sequential logic circuits on breadboards. A deeper magicks had been revealed: computing itself.
I learned how these tricks were done, but I couldn't really do them myself. I wanted to make a CPU to embody what I'd learned, but every path towards this goal felt either trivial or tedious. I could program it all into a FPGA, but this felt just like weirder programming. I could hand wire relays into flip-flops and half adders, but that would take forever. I could wire together a bunch of store-bought ALUs and registers, but that felt like assembling really complicated LEGOs. So I put the project on the shelf for a long time.
Simplicity
The project popped back into my mind a while ago with a twist. Even toy CPUs usually have instruction decoding, data path switching, an ALU, etc. But these toys are simplified models of production CPUs, and production CPUs need to be efficient, performant, and practical.
My CPU wouldn't need to be efficient, performant, or particularly practical. I'd just want it to compute the Fibonacci sequence in under a day or so. This opened up the enormous space of less-than-practical designs.
Any Turing-complete computer architecture can be reduced to any other via software rewriting. So long as the transformation wouldn't make a Fibonacci program completely infeasible, any would work. I didn't want to do a lot of wiring, so I wanted one I could build from very few electronic parts.
One instruction to rule them all
A dazzling variety of Turing-complete abstract machines have only one instruction type. These are appropriately named one instruction set computers (OISCs). Much of production CPUs hardware exists to switch the behavior of the processor when different types of instructions are read. With only one instruction type, I could avoid needing any hardware for this.
SUBLEQ (subtract and branch if result <= 0) is probably the most famous OISC. I explored it thoroughly, but implementing it seemed hardly any easier than a normal CPU. SUBLEQ requires an ALU for subtraction with a status bit for the comparison. The CPU would also need to do have different behavior depending on the value of the status bit.
I consulted various lists of OISCs until I found the perfect one: byte-byte-jump. Any CPU must, at the very least, accept input and deliver output. This instruction requires little else.
Byte-byte-jump takes three addresses as arguments: source, destination, and jump. It reads a byte from the source address, writes it to the destination address, and changes the instruction pointer to the jump address.
Can't add, doesn't even try
It seemed a bit magical to me that such a simple operation could implement arithmetic, comparison, and conditional branching. As with all magic tricks, it's a bit less impressive once you know how.
Tables. A program can perform any arithmetic operation by including a table from all possible inputs to the corresponding output. Production programs use lookup tables for DES S-boxes, hash functions, etc. This is no different, except that usually lookup tables make a program more efficient. Here they make a program possible.
Self-modifying code allows byte-byte-jump to perform table lookups. Say a program includes a byte-byte-jump with the table as the source address. At runtime, before the instruction executes, the program can use another byte-byte-jump to overwrite the low byte of the source address (in the program itself) with the table index. When the modified instruction later runs, it then reads from the correct location inside the table. Overwriting the jump address in this fashion yields conditional branching.
One snag. The naive tables for even 8-bit binary operations (like additions) are 64 KiB large. This plus a program would require addresses to be larger than 16 bits. Once the adresses get past 16 bits, my nostalgia goggles fall right off.
No matter. 4-bit operations chained together can do any 8-bit operation, and 4-bit binary operations tables are only 256 bytes. This allows my CPU to have 8-bit bytes and 16-bit addresses, as God intended.
The cheapest configuration of the commercially-sold IBM 1620 replaced expensive logic with arithmetic tables in cheaper program storage. As a result, users took it's internal code name, CADET, to stand for "Can't Add, Doesn't Even Try."
Engine
Let's talk about hardware. We can start by analyzing byte-byte-jump. Byte-byte-jump involves two reads and one write to main memory. Simple main memories can only read or write one address at a time, so these reads and writes must happen at different times. In between, the CPU will need to remember some data.
Specifically, the CPU must remember the source and destination addresses, the instruction pointer, and the byte to be written. The CPU also needs a way to access or overwrite each of these values without disturbing the others.
There are two easy ways to differentiate things in hardware: space and time. Parallel systems include multiple copies of a thing with different wires and pins for each. Serial systems use the same pins and wires to handle different items at different times, with the timing coordinated by some protocol. Parallel takes more work to physically wire up, so serial is my jam.
So, I need a way to remember some bits with a serial interface. That means either a serial register bank or a serial RAM. I couldn't find any cheap serial registers, so I started shopping for serial SRAMs. Eventually, I selected the 64 KiB Microchip 23LC512. This chip uses SPI to communicate data, addresses, and read/write operations with the chip. SPI is literally the simplest serial communications protocol I can imagine, and the chip only costs around $1.
I'll revel for a moment in the absurdity of using 64 KiB of RAM to remember 48 bits. This one chip has more switching elements than the first ten of mankind's computers combined. Yet, the smallest SPI SRAM I could find was still 8 KiB, and the 64 KiB one was the smallest with a sequential mode I needed.
The SRAM also has an instruction set, address pointer, operating modes, registers, and a communications protocol. Is this SRAM really just a CPU masquerading as a SRAM? Sort of, but not really. It doesn't have an instruction pointer or control flow. This means it cannot request instructions for itself, and the outside system must spoon-feed them in. It's a powerful engine, but without a driver.
Driver
Something needs to drive the SRAM's pins. The SRAM has eight, but only three are interesting: chip select (CS), serial input (SI), and serial output (SO).
The chip can't actually input and output at the same time. When SI is in use, SO is always electrically disconnected, and vice versa. Thus, instead of treating them separately, I wired them together into one "SIO" pin. This reduces the number of electrical connections needed with the rest of the system.
The CS pin controls the timing of the operations sent over the SIO line. Once CS is activated, the operation type (read/write) and address are sent over SIO. Data then flows over SIO from/to the given address (and successive addresses) until CS is deactivated.
The main memory also needs to communicate with the CPU. For this, I used a slightly tweaked version of the SRAM's protocol over SPI. The main memory gets its own CS line, but it shares SIO with the SRAM, allowing bidirectional communications between the two.
With main memory and the SRAM connected together in this fashion, the stage is set. Enter the players. Four more identical SRAMs can be hooked together with the SRAM and main memory. Together, the five SRAMs can operate as a byte-byte-jump CPU.
How does adding more SRAMs help? Well, performing byte-byte-jump requires issuing various instructions and addresses to the SRAM and main memory. These take the form of specific binary signals for SRAM CS, main memory CS, and SIO. An SRAM can generate any binary signal.
To generate a signal, fill the SRAM with repeated copies of the signal and issue a read to address zero. The signal will then come out of SO indefinitely, since the SRAM reads each address successively, and the internal address pointer wraps back around to zero once it reaches the end.
For the two CS lines, these signals are just a sequence of high and low voltages. They thus require one SRAM each. SIO is a little different, since it should only be driven when neither the SRAM or main memory is sending data across it. This means it needs three states: high, low, and disconnected.
Luckily, the SRAMs have HOLD pins that disconnect their outputs. The third SRAM drives SIO, and the fourth SRAM drives the third SRAM's HOLD pin. This allows the third SRAM to only drive SIO sometimes, completing the setup.
While I would have loved to be able to say I built a CPU out of five identical SRAM chips, reality was not so kind. I'd have to program four of them with four different signals every single time the system was powered on. So instead, I used four Microchip EEPROMs. These have nearly identical interfaces to the SRAMs, but once programmed, they retain their behavior without power.
Build
I needed:
- 1 Microchip SRAM
- 4 Microchip EEPROMs
- 2 pullup resistors
- 4 LEDs w/ resistors, to provide blinkenlights for each signal
- ~40 wires
I bought all this from Mouser and waited for it to arrive. It cost me about ~$15, and $7 of that was shipping.
The part of main memory was to be played by a Raspberry PI and its GPIO pins. I wrote a program to accept read and write operations over the SIO and main memory CS lines, using a 64 KiB array as backing storage. Whenever the CPU writes a byte to the address 0xFFFF, the program prints it to the terminal. This gives programs for the CPU a simple output device.
I wrote a script to program each of the EEPROMs with its control signal, then verified that each EEPROM would output that signal indefinitely. Finally, I wired the four EEPROMs, the SRAM, and the Raspberry Pi together.
I turned it on for the first time. It immediately started executing byte-byte-jumps, instead the expected behavior, catching fire. All things considered, it took around 200 clock cycles to execute a single byte-byte-jump.
I incrementally built up a library of routines to write a Fibonacci-calculating program into the memory array. All things considered, it took around 200 byte-byte-jump instructions to execute an 8-bit addition.
You can see it in action at various clock rates below. The second-rightmost LED is SIO, and all of the others are control lines. The Turing magic happens on the SIO LED; the others are perfectly cyclical.
Discussion
Compared to the time it took to conceive, design, and program this CPU, building it was incredibly straightforward. It operated reliably at all the clock rates I could get Python to generate, up to 80 kHz. Admittedly, that's not very fast, but it only takes around 40,000 cycles to do an addition. That is, it can do around 2 additions per second, which is more than I can do, and I bet it can do them all night!
The final design resembles early computers far more than modern ones. All early computers were bit-serial, and very limited instruction sets supplemented with lookup tables not unheard-of. In both cases, simple implementation is king. I wanted it to be simple because I'm lazy. They needed it to be simple, since technology placed tight limitations on what even major world governments and universities could build.
I can safely say that running this CPU for the first time was exactly as satisfying as I'd hoped.  Given how many things could have broken along the way, the fact that it does what I wanted is, well, pretty magical.
I've collected a fair amount of additional details from my notes. Besides the schematics in that document, the canonical control codes and software are all defined in the two Python files I linked to above. If there's anything I left out, shoot me an email.
Daniel Thornburgh (mysterymath@gmail.com)


{{host}}
These are the plugins provided by the plugin hosts
{{plugin.pluginType}} plugin: {{plugin.id}}


THE PELICAN BRIEF A film review by Jon A. Webb Copyright 1993 Jon A. Webb
THE PELICAN BRIEF has Julia Roberts and Denzel Washington running around together, being pursued by semi-government types in an obvious political thriller. The movie seems to be more about how beautiful Roberts and Washington are, and what nice clothes they wear, than anything else. If you accept these terms, the movie is fun and enjoyable to watch. (Roberts is more beautiful than ever.) But don't go expecting thrills or suspense, or much of an acting stretch by Roberts or Washington.
Roberts plays a law student who somehow uncovers the truth behind the recent assassinations of two Supreme Court justices. She writes up her theory, calling it "The Pelican Brief," and it gets into the hands of the people who did the assassination. Naturally, she becomes a target. In her effort to get the truth out and save her own life, she teams up with Washington, a reporter who seems to have remarkably close ties to the government.
There are two odd things about this movie. One is that no attempt is made to achieve any verisimilitude in the pursuit of Roberts and Washington. She goes into hiding, with an apparently huge amount of money "from her father," then shows up in new outfits each day. Washington also is always nicely dressed; everything is beautifully pressed. Now, this makes these two handsome people even more handsome, but it just doesn't make any sense.
Another point: Roberts always stays in the best hotels, which of course require a credit card check on checking in, even if you pay with cash. Wouldn't this make it awfully easy for the shadowy, presumably well-connected forces searching for her? Movies like this stand or fall on the consistency of details; it's supposed to be a pleasure to see how carefully the screenwriters have crafted a story that is consistent with everyday reality. Sloppiness is laughable.
The other odd thing is that Roberts and Washington never experience passionate love for each other. I don't know how long it is since I've seen a movie where two attractive people spend time together, staying in hotel rooms and being pursued by the bad guys, and don't fall in love and have sex. It's part of the standard story. Instead, Roberts and Washington seem to develop a deep repect for each other, and have a Platonic relationship. Could it be that Hollywood has finally realized that two sexually compatible people don't need to experience sexual ecstasy to confirm their friendship? (Ha.) Or is it possible that a sexual relationship was ruled out because it would cross a color line? I think this is the case, and find this sort of subtle racist assumption very disturbing (in a way, more disturbing than explicit racism.)
The direction is leaden and unconvincing, especially towards the end. About thirty minutes into the movie, you know everything that's going to happen, and only details need to be filled in. There is little suspense even in the most thrillingly staged scenes, because you know that a movie like this is not going to sacrifice its two leads--this is no PSYCHO. At the end, when they were wrapping up the details, it was as though they were slogging through mud, trying to reach the end of the trail before the last reel ran out.
It is interesting to compare this film with THE FIRM, which was also based on a John Grisham novel. THE FIRM is much better, I think because it took more liberties with the novel (I'm guessing at this, because I haven't read either book), and because of the good direction and fine acting (particularly by Cruise and Hunter.) I especially liked the scene towards the end, where Cruise is confronted at the law firm and he can't think of anything else to do, so he just runs away. It was a brilliant moment, coming quite close to the edge of comedy, which made perfect sense.
-- J
.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


| Number |
Risk |
Likelihood |
Impact |
Mitigation |
| 1 |
Competition |
3 |
4 |
Strategic plans
Increased market share
Protect proprietary knowledge
|
| 2 |
Team |
2 |
5 |
Strong personal relationships
Incentive agreements
|
| 3 |
Financial and funding |
3 |
4 |
Strong partnerships
Research funding (Nordic and Horizon 2020)
International investment conferences
|
| 4 |
Regulations |
1 |
4 |
Influencing regulations. CEO in a policy board in Norway
|
| 5 |
Development and capability risk |
2 |
2 |
Agile methodology
Advisors
|
| 6 |
Security and compliance |
2 |
5 |
Security guidelines
External audits
|
The telehealth market is immature and volatile - if it does not develop, develops more slowly
than we expect, encounters negative publicity or if our solution does not drive member
engagement, the growth of our business will
be harmed.


The State of Charge (SOC)% at which the discharge current limit (DCL) begins to derate at. The rate at which the DCL derates relies on the Low SOC Discharge Limit Derating parameter. This is useful to enforce maximum SOC% to maintain a specific depth of discharge.
| < Start Derating Charge Limit At High SOC | Low SOC Discharge Limit Derating > |


Moment Aldi firework backfires - and dad is hit in the head by wayward rocket
Video shows a pack of fireworks - including a Roman candle, wheel, mines, aerial shot tubes, rockets, multi-shots, and fountains - going off in a family's garden
by James Rodger, https://www.facebook.com/jamesrodgerjournalistThis is the shocking moment a firework display backfired - and a dad was hit on the NECK by a wayward rocket.
Video shows a pack of fireworks - including a Roman candle, wheel, mines, aerial shot tubes, rockets, multi-shots, and fountains - going off in a family's garden.
Dad-of-two Neil Sjollema, 39, can be seen backing away before the display goes off with a bang.
One rocket then flies directly at building site manager Neil as he turns round to watch, striking the right side of his neck.
Children can be heard laughing with delight as a woman shouts: "Oh my god! S**t! Kids, I think you better get in! Where are the kids?!"
Neil then stands in the door as the group of 10 - six children and four adults - watch the firework display gone wrong.
As it ends, everybody laughs with relief.
Neil, from Shenley, Herts., said: "That was pretty funny looking back, there was an initial panic but it made for a fun night!
"I had some friends and their kids over to have a mini firework display in the garden, after buying a set [from Aldi].
"The whole thing literally went off with a bang - and then one of the rockets hit me!
"It didn't hurt too much actually, as I think I was full of adrenaline and wanted to make sure the kids were safe.
"But it's left me with a tiny mark on my neck! A little souvenir, if you like!"
He added: "It won't stop me trying again next year!"
Neil bought the 16 pack of Wow Fireworks earlier in the day from supermarket Aldi.
The box says: " This 16 pack of fireworks does exactly what it says on the tin…wow! Featuring a variety of amazing effects including fountains, rockets, multi-shots and mines, these fireworks will certainly impress."
It also warns: "Always read firework instructions carefully before use."
The incident occurred at around 9pm on November 2.


Resident Evil 3 remake is rumoured to be releasing in 2020
by Sherif SaedIt looks like Capcom is working on a remake of Resident Evil 3.
YouTuber Spawn Wave has published a video discussing a rumour they had heard about the next Resident Evil game. According to their findings, Resident Evil 3: Nemesis is getting the Resident Evil 2 Remake treatment.
Although the video doesn’t really tell us much about the game itself, such as whether or not Nemesis mechanics will be changed in any way to better fit a modern game, it does say that Capcom is planning to release it in 2020.
Spawn Wave speculates that it could get revealed as early as this December at The Game Awards, but that all depends on how early/late in the year Capcom is targeting its release.
The YouTuber has a fairly decent track record when it comes to leaks, more recently being the first to leak FromSoftware’s Elden Ring, and George R.R. Martin’s involvement.
For its part, Capcom was always open to the idea of remaking Resident Evil 3, maintaining the old ‘if fans want it’ line when asked.
A remake of Resident Evil 3: Nemesis on the RE Engine would make a lot of fans very happy, not to mention make a lot of sense.
Games featured in this article


---
title: linuxbrew-core
layout: default
permalink: /formula-linux/
---
This is a listing of all packages available from the {{ site.taps.linux.repo }} tap via the Homebrew package manager for Linux.
{%- assign sorted_formulae = site.data.formula-linux | sort -%}
{%- for f in sorted_formulae -%}
{%- assign formula = f[1] -%}
{%- assign formula_path = "formula-linux" -%}
{%- include formula.html formula_path=formula_path formula=formula -%}
{%- endfor -%}


Following code is the skeleton of our FileWalker module:
class FileWalker extends EventEmitter { constructor () {} filterDir () {} filterFile () {} start () {} pause () {} resume () {} next () {} }
Lets start with the constructor method. The constructor
method is a special method which initializes automatically
when an object created within a class. For example,
var walker = new FileWalker(path,true);
created a new FileWalker
object,the
path
and true
values are passes to
constructor method so you don’t need to call constructor
method separately. Let’s explorer the each method one by one.
Constructor
The FileWalker constructor method accept two parameters:
-
path
: the initial path of a directory which you want to scan recursively -
debug
: to enable debugging in the code. You can provide any value.
constructor (entry,debug){ super(); this.isPaused = false; this.queue = []; this.debug = debug ? true : false; this.filter_dir = () => false; this.filter_file = () => false; this.start(entry); }
Properties of constructor method
We’ll not directly change the properties value
this.isPaused
holds the current status for
our Duplicate File Finder app, the default
value is false
and will be true
if
paused. To change its value we’ll use
pause()
and resume()
methods.
this.queue
an array, it stores the output of
readdir
from the
start()
method for later processing.
this.debug
you will see the debugging result
on console when its value is true
. To enable
debugging for your app see following code:
let debug = true;
let path = '/a/dir/path';
let walker = new FileWalker(path,debug);
//let walker = new FileWalker(path); //no debugging
this.filter_dir
a method,
returns false
value by default.
This method will call on every directory and a directory will
not processed if the function returned true
.
You can set a filter_dir
function using
filterDir()
method. For example:
let walker = new FileWalker(path); walker.filterDir( (dir,stat) => { //dir will not scan if (dir == '/do/not/scan/path'){ return true; } /* or one liner code return dir == '/do/not/scan/path'); */ } )
this.filter_file
similar to
this.filter_dir
, this function calls on every
file.
this.start(entry)
calls the
start
method to start the app by providing the
entry (initial path of a directory).
filterDir (fn)
Include or exclude folders
The FileWalker’s filterDir
method accepts one
parameter:
fn
a function provided (optionally) immediately
after creating the new FileWalker
instance.
filterDir (fn){ this.filter_dir = fn; }
You can use this method to filter out directories for
inclusion or exclusion. For example, you want to
scan a path /usr/bell
but not its
sub-directories:
let myPath = '/usr/bell'; let walker = new Filewalker(myPath); walker.filterDir(function(dir,stat){ if (dir == myPath){ return false; } return true; /* or one liner code return dir != myPath; */ });
Note: The return true
tells the app to not
to scan the directory and return false
tells the
app to scan the directory.
You also can use node.js stat
to further filter
out directories:
let myPath = '/usr/bell'; let walker = new Filewalker(myPath); walker.filterDir( (dir,stat) => { let mt = Math.round(stat.mtimeMs); if (mt ><PHONE_NUMBER>483) return true; return false; /* or two liner code let mt = Math.round(stat.mtimeMs); return mt <<PHONE_NUMBER>483; */ });
In above example, we’ read the directory modification time in
milliseconds, round it using Math.round()
and
then compared it against some milliseconds time so a latest
directory will not scan.
filterFile (fn)
Include or exclude files
The filterFile
method works very similar to
filterDir
method. The only difference is that the
filterFile
method filter out the files while the
filterDir
filter out the directories /
folders. The filterFile
method accepts
one parameter:
fn
a function provided (optionally) immediately
after creating the new FileWalker
instance.
filterFile (fn){ this.filter_file = fn; }
The following example demonstrate how to filter files for a specific size:
walker.filterFile((file,stat)=>{ //files size less than 5kb if (stat.size < 500000){ return false; } return true; /* or one liner code return stat.size > 500000; */ });
start (path)
Starting up the app
The start method is, the heart of our FileWalker class,
responsible for all fs
processing, i.e. read a
directory and its sub directories, include or exclude
directories and files by executing the filter_dir
and filter_file
property methods sat-up through
filterDir
and filterFile
methods.
The start method accepts one parameter:
entry
path to process.
start (entry) { fs.lstat(entry, (err,stat) => { if (err){ this.debug&&console.log('Error stat: '+entry); this.emit('error',err,entry,stat); this.next(); return this; } if (stat.isFile()){ if (this.filter_file(entry,stat)){ this.debug&&console.log('filterFile: '+entry); return this.next(); } this.debug&&console.log('File: '+entry); this.emit('file',entry,stat); this.next(); } else if (stat.isDirectory()){ if (this.filter_dir(entry,stat)){ this.debug&&console.log('filterDir: '+entry); return this.next(); } this.debug&&console.log('Dir: '+entry); this.emit('dir',entry,stat); fs.readdir(entry, (err,files) => { if (err){ this.debug&&console.log('Error readdir: '+entry); this.emit('error',err,entry,stat); return this; } Array.prototype.push.apply(this.queue, files.map( file => { return path.join(entry,file); })); this.next(); }); } else { this.debug&&console.log('unknown or inaccessible: '+entry); this.emit('unknown',entry,stat); this.next() } }); }
fs.lstat(entry, (err,stat)
Read the stat of
entry, if error the this.debug&&console.log('Error stat:
'+entry);
will print the message on console if the debug
option was enabled, then this.emit('error',err,entry,stat);
emit error event for further handling of the error, for
example:
let walker = new FileWalker(path); walker.on('error' (err,entry,stat) => { //do something });
this.next();
code calls the
next
method which retrieves the next path (entry)
from the queue
for processing.
Next, stat.isFile()
will return true if the entry
is a file. The
this.filter_file (entry, stat)
will return
either true or false, if true we’ll skip this
file, not emit the file
event, and move to
next()
entry.
stat.isDirectory()
return true if directory
found, the filter_directory(entry, stat)
will
return true or false, we’ll not process the directory if it
returned true
. If false the
dir
event will fire and we’ll retrieve the
entries of the dir using fs.readdir
method, again
if error occurs while reading the dir the
error
event will fire.
When we read a directory we receive file names not their full
path, we’ll use the
path.join
method to join the current directory path with retrieved path.
We’ll store the whole result in queue
array for
later processing and call the next()
method
to process the next entry.
Since our main focus on directories and files, we’ll not
process any other file types and emit them as
unknown
type.
next()
Retrieve next path from the queue
next(){ if (this.isPaused) { this.emit('pause'); this.debug&&console.log('isPaused'); return this; } let nextEntry = this.queue.shift(); if (!nextEntry){ this.emit('done'); this.debug&&console.log('Done'); return this; } this.start(nextEntry); }
The next method will emit the pause event if the app was paused and not execute the further code.
this.queue.shift()
will return the next entry or
the done
event will fire if there is no more
entries found in the queue.
pause()
– Pausing the app
pause(){ if (this.isPaused === true){ debug&&console.log('isPaused failed.App was already paused'); return this; } this.isPaused = true; }
This method will change the value of
this.isPaused
to true, so next method will not
retrieve the next entry form the queue
. i.e.
let walker = new FileWalker(path); setTimeout( () => { walker.pause(); }, 10);
resume()
– Resuming the app
resume(){ if (this.isPaused === false){ debug&&console.log('Resume failed. App was already resumed'); return; } this.isPaused = false; this.debug&&console.log('Resume'); this.next(); }
The resume method will change the value of
this.isPaused
to false and then call the
this.next()
method to retrieve the next entry.
i.e.
let walker = new FileWalker(path); setTimeout( () => { walker.pause(); }, 10); setTimeout( () => { walker.resume(); }, 50);
Using FileWalker Module
Lets import the FileWalker module by providing the full path and create a new FileWalker object, as shown below:
let Walker = require('./walker.js'); let walker = new Walker('D:\\',true); walker.filterDir((dir,stat) => { //do not scan following folder return dir == 'D:\\brainBell'; }); walker.filterFile((file,stat)=>{ //exclude files greater than 500kb return stat.size > 500000; }); walker.on('error', (err,stat) => { //an error occurred }) walker.on('dir', (dir,stat) => { //a directory found }) walker.on('file', (file,stat) => { //a file found }) walker.on('pause', () =>{ //app has been paused }) walker.on('done', () => { //walker finished its work }) setTimeout( () => { walker.pause(); }, 10); setTimeout( () => { walker.resume(); }, 100);
How to run FileWalker on your pc
Download
walker.js
and
trywalker.js
files in same folder i.e. d:\fw
and write
node trywalker
in command prompt. i.e.
D:\fw>node trywalker
Downloads
In next tutorial we'll read about the Node.js child process by running our FileWalker module in the background (as child process).


find - manual page for find 1.31.1
find [-HL] [PATH]... [OPTIONS] [ACTIONS]
BusyBox v1.31.1 (2020-04-30 13:38:01 EDT) multi-call binary.
Search for files and perform actions on them. First failed action
stops processing of current file. Defaults: PATH is current directory,
action is '-print'
- -L,-follow
- Follow symlinks
- -H
- ...on command line only
- -xdev
- Don't descend directories on other filesystems
- -maxdepth N
- Descend at most N levels. -maxdepth 0 applies actions to command
line arguments only
- -mindepth N
- Don't act on first N levels
- -depth
- Act on directory *after* traversing it
- ( ACTIONS )
- Group actions for -o / -a
- ! ACT
- Invert ACT's success/failure
- ACT1 [-a] ACT2
- If ACT1 fails, stop, else do ACT2
- ACT1 -o ACT2
- If ACT1 succeeds, stop, else do ACT2 Note: -a has higher priority
than -o
- -name PATTERN
- Match file name (w/o directory name) to PATTERN
- -iname PATTERN
- Case insensitive -name
- -path PATTERN
- Match path to PATTERN
- -ipath PATTERN
- Case insensitive -path
- -regex PATTERN
- Match path to regex PATTERN
- -type X
- File type is X (one of: f,d,l,b,c,s,p)
- -executable
- File is executable
- -perm MASK
- At least one mask bit (+MASK), all bits (-MASK), or exactly MASK
bits are set in file's mode
- -mtime DAYS
- mtime is greater than (+N), less than (-N), or exactly N days in
the past
- -mmin MINS
- mtime is greater than (+N), less than (-N), or exactly N minutes in
the past
- -newer FILE
- mtime is more recent than FILE's
- -inum N
- File has inode number N
- -user NAME/ID
- File is owned by given user
- -group NAME/ID
- File is owned by given group
- -size N[bck]
- File size is N (c:bytes,k:kbytes,b:512 bytes(def.)) +/-N: file size is
bigger/smaller than N
- -links N
- Number of links is greater than (+N), less than (-N), or exactly
N
- -prune
- If current file is directory, don't descend into it
If none of the following actions is specified, -print is
assumed
- -print
- Print file name
- -print0
- Print file name, NUL terminated
- -exec CMD ARG ; Run CMD with all instances of {} replaced by
- file name. Fails if CMD exits with nonzero
-exec CMD ARG + Run CMD with {} replaced by list of file
names
- -delete
- Delete current file/directory. Turns on -depth option
- -quit
- Exit


| DOSE: |
5 mg |
insufflated |
2C-B |
(powder / crystals) |
| |
40 mg |
oral |
2C-B |
(powder / crystals) |
| |
repeated |
smoked |
Cannabis - Hash |
|
I had tried most of the psychedelic phenethylamines before I was able to get my hands on 2C-B, and my first two experiences with it were not extraordinary. Some pretty visuals and a giddy frame of mind, a few hours spent laughing and playing video games, or talking to friends, and then precipitous drop to baseline, complete with a nasty headache. I enjoyed it, but nothing to compare to my deeply personal and achingly beautiful experiences with high doses of 2C-I. I had much to learn.
Almost a year later, I was living with my friends Bailey and Bob, and had just started dating my ex-girlfriend Emily. From her friend we bought three doses of 2C-B, which were a massive 40mg each, about twice the dose of my last trip.
Emily took a little dash of powder from her capsule and put in on the mirror on my desk. 'Good call,' I tell her. She's barely 100 pounds, and 40mg is a bit much for her. Bailey joins us as Bob runs out the door, heading to work. The three of us get a glass of water and swallow the capsules.
Though I know the dangers of doing so, I mash the little pile of powder on the mirror, then shape it into a line and snort it.  I frantically snort drops of warm water, anything to stop the burning. After about 10 minutes the burning fades, but even faster my vision has gotten brighter, almost expanding past its limits. Tendrils of light and colour shift in front of my eyes, and I hardly have time to think about them before my gut is wrenched with pain.
The visuals seem unimportant compared to the nausea. I run to the bathroom and vomit. I am on my knees, prostrate and gagging, but my mind is in a silent blackness that seems to swallow me whole. The darkness gives way to exploding, liquid waves of colour that warp and shift constantly, inwards for a time then twisting outwards. A basic truth seems to pop into my head; you have to be humbled to see the real beauty. Crouched on my floor with the taste of bile in my mouth, the Universe suddenly makes perfect sense.
After washing my mouth out, I walk from the bathroom to my room, giggling, kissing Emily before throwing myself on my bed, laughing more intensely every moment. I look at the ceiling, at the walls, at the shiny green drapes on the window, at my Dali painting ('Hallucinogenic Toreador'), and they are reborn, shedding rainbow light. Rivulets of liquid light flow from them.
Mushrooms has that funny effect of making the room look like its breathing, pushing in and out. But on 2C-B, the lines of the room warp and flow with beautiful, saturated bands of colour. Deep purples and pinks are everywhere, neon blues and greens as well. The colour and their delicate shine seem to touch something deep in me, and I am so touched and ecstatic that almost I want to cry. I've been on my bed for about 30 minutes, so I stumble out to meet Emily in the kitchen. We fall into each others arms giggling, as Bailey starts crawling into the kitchen on his hands and knees. This makes us laugh even harder; Bailey looks just like a mountain-climber making a steep ascent, grasping with white knuckles, elbows out. The juxtaposition is hysterical, and we laugh so hard we're gasping as Bailey crouches on his feet, then falls backwards into the wall. In fact he falls UP the wall, looking like someone in zero-gravity, a goofy smile on his face.
We put on some progressive breaks music, the ethereal sounds and haunting, beautiful female vocals mixing perfectly with my high.  I heat up the butter knives in the stove-burner and we enthusiastic smoke hash-blades. The weed makes the room even brighter, the colours deeper and my mood even better. I throw myself into the trip, the warmth of the visuals, the effusive love for everything around me. Even on MDMA/MDA I haven't come close to such absolute joy. Ecstasy is wonderful, but it almost always gives me a feeling of almost desperate longing and loss mixed in with the happiness. Not so with 2C-B. I feel fulfilled, and the joy has a wholesome, permanent edge to it even as I feel the high rapidly fading.
That memory has remained unchanged even as I write this, almost a year and half after the fact. 2C-B touched me in a way that few drugs have, and unlike Ecstasy which I see now is just one big tease, 2C-B is like a great friend; it gives generously without asking much in return. A word that occurred to me during the trip was 'synergy'. 2C-B is not only synergetic with phenethylamines and other drugs like cannabis, its synergetic with positive emotions, with happiness, with music, with life. It's the reason most people do psychedelics. 2C-B, in my mind, represents the fact that beauty is simple, free, and often literally flowing from everything around us.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


The High School North Go Club is a club where students come together to learn and share their love of Go. We meet after-school on Wednesdays and Thursdays from 3 - 4 PM. We will play the wonderful games of Go and Gokamu during these meetings. We will also have reviews of games and show you the dos and don’ts of Go. There will be strategical analysis and group discussions of a match.
Everyone is welcome to join the HSN Go Club, regardless of your rank / previous experience.
Go / Weiqi / Baduk / Igo is a traditional strategy board game of territory that was invented in ancient China and formalized in Japan. The professional board has a 19 x 19 grid of black lines. The game pieces, called stones, are placed on the line intersections. The goal is to acquire territory by surrounding parts of the board with your stones. Enemy stones can be captured by surrounding them with your stones. A game will end when both players pass (skip their turns) or when one resigns. Points are counted up when the game ends. Territory and / or captured stones give you points, and the player with the most points wins.
The game of Go starts off with an empty board. There are various board sizes, but the common ones are 19x19, 13x13, and 9x9, with professional games being played on the 19x19 board. Two players take turns placing game pieces, known as stones, on the board. Each player has an infinite supply of stones. One player has white stones, an
d the other player has black stones. Stones are placed on the intersection of two lines. The dots (called star points) on the board mark the handicap points (handicap stones are only placed when the difference in rank between the two players is four or greater). Depending on the difference in rank between the two players, the lower rank player may start the game with some of his stones already on the board at the handicap points.
Black goes first. In exchange for going first, black gives white a designated number of points (this is called komi). As Go is a territory game, claiming the most territory with the least number of stones is ideal. A territory is considered “alive” once it has two living eyes (an eye is a single living space). As such, claiming the co
rners is the most efficient because you would only need to surround 2 sides. Claiming an edge requires surrounding 3 sides, and claiming the center would require surrounding all 4 sides.
The ultimate battle between humans and artificial intelligence. Below, we have posted the entirety of games 4 and 5 and their fifteen minute summaries. These games were arguably the most intense and interesting games of the match, so we highly recommend watching at least one of the videos. We guarantee that it will enhance your knowledge about Go.
We have posted the entirety of games 4 and 5. We have also posted the 15 minute summaries for both games (since I highly doubt any of you would want to watch 6 hours of Go in one sitting). Michael Redmond, 9 dan professional, is the commentator in the videos and it is a great place for beginners to start. You should study the game yourself if you're really interested, but the Redmond does an excellent job explaining the game.
After months of rumors and insistence from Chinese pros, AlphaGo finally played official games with Ke Jie, who is regarded as the world's current best player.
AlphaGo came back stronger than before, partially because it also played many unofficial games online. Ke Jie said that the future is AI, and he was swept. Lee Sedol has said that he may be the only person to ever beat AlphaGo. As of now, that is the case, as AlphaGo has retired from professional Go. Unless Google open sources the program, Lee Sedol will be the only person to beat AlphaGo.


| Action | Guest | Car | Start Date | End Date | Total Cost | Reference # | Payment | Status |
|---|---|---|---|---|---|---|---|---|
|
|
{{ booking.guestName }} | {{ booking.car.type }} | {{ booking.startDateUtc | amUtc | amLocal | amDateFormat:'D MMMM YYYY' }} | {{ booking.endDateUtc | amUtc | amLocal | amDateFormat:'D MMMM YYYY' }} | {{ booking.totalCost }} | {{ booking.referenceNumber }} | ${{ booking.totalPayment }} | {{ booking.status }} |
| No records found. |


I am a Responsive Designer & Developer who thrives on visual storytelling. When I'm not working, pursing side projects getting lost in the rabbit hole of blogs & books, I can be found traveling, hanging out with friends & family, or reading.
I am a Responsive Designer & Developer who thrives on visual storytelling. When I'm not working, pursing side projects getting lost in the rabbit hole of blogs & books, I can be found traveling, hanging out with friends & family, or reading.
I am a Ugandan, born and raised in a small village called Makondo, Rwebisengo sub-county — Western Region. I am currently living in the capital Kampala. I come from a polygamous family of over 40 siblings.
My passion: my love lies in helping, & sharing. My dream is to be a philanthropist. I also have passion for reading, coding, traveling, music, & above all, talking about the Lord.
Fun facts:
I don't wear perfumes.
I learnt by myself how to ride a motocycle — this was during my childhood.


4chan is currently serving as a pedophilia website in the form of pornography of fictional children and infants which is illegal in many jurisdictions.
Some of these images, especially those which are 3D rendered are frighteningly realistic.

This website aims to put the spotlight on the people involved in its distribution.
Note:


background-image: url(images/IMGP1696-MYLF.jpg) background-size: cover background-position: 50% 75% class: center, inverse, title-slide .font90[# Hybridization between two sympatric ranid frog species in the northern Sierra Nevada]

 ### Ryan A. Peek, Mallory Bedwell, Sean O’Rourke, Greta M. Wengert,
 Caren Goldberg, Michael R. Miller
 ![:scale 70%](images/CWS_logo_small.png) ] ??? - As freshwater systems and biota are rapidly declining globally, conservation efforts will require assessment of the adaptive capacity of populations to rapid environmental change. - Small populations with limited genetic diversity may have reduced adaptive potential and difficulty responding to future environmental change. --- class: center, inverse ## Acknowledgements

  .pull-left[ - ### .font70[Center for Watershed Sciences & colleagues] - ### .font70[Corey Luna, Rick Wachs, and Sarah Mussulman] - ### .font70[Thanks to Jamie Bettaso, Mourad Gabriel, Cathy Brown, Colin Dillingham, Tina Hopkins, Neil Keung, and WSU and USFS field crew members] ] .pull-right[ ![](images/mcloud_psre_2006_IMGP0277.jpg) ] --- background-image: url(https://photos.smugmug.com/Nature/Landscapes/Via-Ryan/Panoramas/i-cpNnd8s/0/4d5b3bff/XL/IMG_0709-XL.jpg) background-position: 10% 0% class: inverse, bottom, left ## Hybridization -- - ### .font80[Hybridization may be an important evolutionary mechanism (homogenization, speciation, adaptation)] -- - ### .font80[Hybridization between closely related taxa can promote gene flow (introgression), or combine parental genotypes in ways that yield reproductively sterile or isolated lineages] -- - ### .font80[Hybridization events may be short-lived and difficult to detect, and are generally considered rare in vertebrates] ??? - Cross-breeding between species, or hybridization, in vertebrates has generally been considered a rare occurrence. - Hybridization may be an important evolutionary mechanism for either homogenization (reversing initial divergence between species), speciation (from reproductive isolation of hybrid populations), or adaptation (transfer of adaptive alleles) (Abbott et al., 2013; Barrera-Guzmán, Aleixo, Shawkey, & Weir, 2018; Mallet, 2007). --- class: inverse, center, middle # Can *Rana sierrae* (RASI) and
 *R. boylii* (RABO) hybridize?

  .pull-left[  *Sierra yellow-legged frogs (RASI)* ] .pull-right[  *Foothill yellow-legged frogs (RABO)* ] -- **Probably not based on Zweifel's work (1955)** ??? - Unlike other ranid frog species with broad areas of potential intergradation (Shaffer et al 2004) RASI/RABO rarely occur sympatrically - breeding experiments by Zweifel (1955) found high incidences of embryological abnormalities—indicating a post-zygotic barrier between the species (low viability in fertilization). - However, these experiments only crossed female R. sierrae with male R. boylii from very different sites (Butte and Nevada County vs. Contra Costa County). --- class: inverse, top, left ## Management Challenges: - ### Species have very similar morphology & habitat preferences Zweifel (1955) -- - ### Detecting hybrids & assigning individuals to species in overlapping zone can be difficult, and imprecise using field identification methods .pull-right[ ![:scale 75%](images/P1060762.JPG) ] --- background-image: url(images/IMG_9096.JPG) background-size: 400px background-position: 110% 95% class: inverse, left, top ## Objectives:

  -- .pull-left[ - ### .font80[Use RADSeq/Rapture to look for hybridization and identify species] - ### .font80[Estimate migration rates between species across 3 watersheds] - ### .font80[Revise "map" to help USFS with management/conservation objectives] ] ??? - Hybridization can promote gene flow (introgression) between species - Important evolutionary mechanism for: - homogenization, adaptation, or speciation --- class: inverse, left, top # Foothill yellow-legged frogs (*Rana boylii*)

  -- .pull-left[ - ### Obligate river breeding frog, uses wide range of habitat (<1500m), but has disappeared from over 50% of historical range - ### Being evaluated as candidate for state and federal listing under ESA ] .pull-right[ ![](images/rabo_range_poly_FEA.png) ] --- class: inverse, left, top # Sierra yellow-legged frogs (*Rana sierrae*)

  -- .pull-left[ - ### Federally listed species, can use wide range of lotic/lentic habitat (~1,500 - 3,660m) - ### Northern boundary of the species range is largely in the Feather basin ] .pull-right[ ![](images/sylf_range_iucn_FEA.png) ] --- class: left, top, inverse # Methods: RADSeq & RAD-Capture (RAPTURE)

  - ### genome-wide, targeted genotyping approach (*Ali et al. 2016*) ![:scale 50%](images/ali_cover.png) ??? Flexible and cost efficient, thousands of samples multiplexed at once (high throughput). - Many amphibian species cryptic/lack data, Large genome size, assessment and monitoring hard to do - *restriction site-associated DNA sequencing*, highly efficient genotyping across thousands of individual samples for targeted loci - For frogs, can sample with non-invasive methods using mouth swabs, or tadpole tail clips - (i.e., small pops. with limited connectivity, low diversity) - *RAPTURE/RADSeq* is a powerful and effective method RAD Tags = sequences downstream of restriction sites. In order for samples to be sequenced on an Illumina machine, after cutting fragments must be ligated to adapters that will bind to an Illumina flow cell (RADSeq uses modified Illumina adapters that enable the binding and amplification of restriction site fragments only) --- background-image: url(images/rapture_slides_1.jpg) background-size: cover class: center ??? - Digest with Sbf1 - Add RAD adapters - Sonicate/shear - purify - specify Capture baits/loci of interest (better/more sequencing at locations you want to look at) - Different cutters at different frequencies in the genome, this is rougly 300 cut sites per 100,000 bp PCR duplicates can be identified as fragments that are identical in insert length and sequence composition, because random shearing ensures that fragments at a given locus are unlikely to be of equal length unless they are duplicates (Fig. 1; Davey et al. 2011; Hohenlohe et al. 2013). In contrast, for methods without a random-shearing step, all fragments at a given locus are expected to be of equal length whether or not they are PCR duplicates. Pooled DNA was sheared in a Bioruptor NGS sonicator. --- class: center, top, inverse ## Frog Samples & Sequencing

  ![](images/flare_helix.png) .div-left[ - .font130[**1,443 individual Rana frogs from 17 species**] ] -- .div-left[ - .font130[Designed ~8,500 Rapture baits (“tags”)] ] -- .div-left[ - .font130[Paired end sequence data from Illumina HiSeq] ] -- .div-left[ - .font130[*de novo* assembly via Novoalign and PRICE assembler, ANGSD for analysis] ] --- background-image: url(images/legos_dna.png) background-size: 300px background-position: 100% 95% class: inverse, left, top ### Sequencing Results .div-left[ - .font100[Samples collected across 56 different localities in 3 watersheds] ] -- .div-left[ - .font100[Filtered & retained 311 samples that contained >25,000 alignments, with mean alignments per sample = 229,485] ] -- .div-left[ - .font100[Mean number of samples per site = 8] ] -- .div-left[ - .font100[Kept all sites regardless of samples/site] ] --- background-image: url(images/figure_01_overview_hybrid_300dpi.png) background-size: 900px class: inverse, left, bottom ### Hybridization Sampling Sites ??? Bean Creek/Spanish Creek largely the only locations where both species have been documented together, however, additional samples from Slate Creek and a few other small tributaries may show both spp (Goldberg/Mallory's MS) --- class: inverse, center, top ## All but 2 individuals were assigned to species using PCA -- ![](images/figure_02_pca_rasi_all_25k_combined.png) ### Strong pattern of divergence between the species --- background-image: url(images/figure_03_admix_rana_by_watershed_25k_k2_scaled.png) background-size: 900px background-position: 40% 100% class: left, top, inverse ## Admixture -- .pull-right[ ![](images/hybrid_individual.png) ] ??? - Used NGSAdmix to assess population structure and individual ancestry from genome-wide SNPs - Admixture showed the same two unknown samples from the Feather basin were had approximately 50% ancestry from each species. - ancestry in the individuals designated as “unknown” in the field also showed very low levels of mixed ancestry between the species - very low or nearly non-existent levels of mixed-ancestry in the American and Yuba basins as compared to the Feather. However, introgression between spp appears asymmetric, with a greater proportion of ancestry from R. boylii occurring in the R. sierrae samples --- class: inverse, left, top ## F1 vs. F2 Test on hybrids - ### Tested whether the hybrids were F1 (first-generation) or F2 (progeny of two F1’s) -- - ### Identified putative species diagnostic SNPs (n=3,062) -- - ### Expect **F1** hybrids to be heterozygous at all SNPs, -- - ### Expect **F2** hybrids to be heterozygous for at 50% of SNPs and homozygous at the remaining 50% with 25% assigned to each species --- background-image: url(images/figure_04_f1_f2_hybrid_test_faceted.png) background-size: 680px class: top, left .font80[### F1 vs. F2 Test] ??? - Our filtering process (see Methods) yielded 3,062 putative diagnostic SNPs that were homozygous for different alleles in R. sierrae or R. boylii samples and also had successfully called genotypes in the two hybrid individuals - **We observed extremely high heterozygosity and very low homozygosity (6% genotyped as R. boylii, 4% R. sierrae, and 89% were heterozygous) (Figure 4). This level of heterozygosity is far greater than expected for F2 individuals** - In addition, both hybrid individuals had *RASI* mitochondrial DNA (Bedwell 2018), indicating the maternal ancestor was from a *RASI* individual and the paternal ancestor was *RABO* - non Hz SNPs may be expected (at low levels), due to low coverage sequencing data; genotyping from low coverage sequencing will cause a low frequency of erroneous homozygous calls, because only one of the two alleles is sampled, causing heterozygotes to be called as homozygotes --- background-image: url(images/figure_04b_hybrid_bean_ck_only_annot.png) background-size: 800px class: left, top

 .font80[### Hybrid Locations] --- class: inverse, left, top ## Demographic Modeling -- - ### Used **`fastsimcoal2`** (Excoffier & Foll, 2011) coalescent simulations to estimate migration rates between species within each watershed -- - ### Used all individuals except the two hybrids to calculate migration probability (or the per generation likelihood that any gene from one population transfers to another) --- background-image: url(images/figure_05_coalescent_ancMigration_ptsCI.png) background-size: 450px background-position: 5% 40% class: inverse, left, top ## Demographic Modeling -- .pull-right[ .font75[- ### Migration rates highest in Feather compared to Yuba and American] ] -- .pull-right[ .font75[- ### Divergence time estimated at 371,000 generations or ~742 kya to 1.1 mya if using generation time of 2-3 years] ] ??? The best model based on maximum likelihood estimated the time since divergence between R. sierrae and R. boylii was 370,856 (370,041–371,670) generations. Early Pleistocene began ~1.8 mya ("Great Ice Age"). --- class: inverse, left, top # Summary:

  ### Strong divergence & limited hybridization detected between RASI and RABO, however F1 hybrids were identified in Bean Creek -- ### Demographic modeling suggests migration rates between species are highest in the Feather Basin, and divergence estimates coincide with onset of Pleistocene Ice Age -- ### Hybridization outcomes that fail to produce successful offspring (sterile F1 hybrids) may have a greater cost on the species with low numbers of effective breeders (i.e., RASI), something to consider under future scenarios (climate change, population crash, etc) ??? - ### unlikely that there is currently the potential for major introgression between R. sierrae and R. boylii, particularly as hybridization initially may not be adaptive and is often selected against (Abbott et al., 2013; Streicher et al., 2014). - ### hybridization outcomes that fail to produce successful offspring (sterile F1 hybrids) may have a greater cost on the species with low numbers of effective breeders, affecting both locally adapted populations and negatively impacting the probability of population persistence in a given region - ### under future scenarios (e.g., warming climate, range contraction, population crashes) the loss of even several breeding individuals (via reproduction with R. boylii) may have a significant impact in declining populations --- background-image: url(images/g_w_froglet.jpg) background-size: 450px background-position: 100% 15% class: inverse, left, middle
 .pull-left[ .font110["*The good life of any river may depend on the perception of its music; and the preservation of some music to perceive.* **Aldo Leopold**"] ![](images/flare_helix.png) ] --- background-image: url(images/IMGP0800.jpg) background-size: cover class: inverse, center ## Questions?


Former Army official blames Taoiseach for air ambulance cutbacks
by By Digital Desk staffA former top Army official claims the Taoiseach and the Defence Minister are to blame for the cutbacks in the air ambulance service.
It will not run for 16 days over the next four months because of staff shortages in the Air Corps.
It is linked to the recruitment and retention crisis in the Defence Forces.
Retired brigadier general Ger Aherne says top government officials are to blame.
"It's just the most recent indication of the failure of those responsible to have a credible retention policy for the Defence Forces," he said.
"Those responsible are the following: The Taoiseach, who is the Minister for Defence, Leo Varadkar; the Junior Minister, Paul Keogh; and the Secretary General of the Department of Defence, Maurice Quinn."
Fine Gael Senator Frank Feighan defended the Taoiseach and the Minister, saying pilot retention is an issue internationally.
"Since the introduction of the air ambulance in 2012 in Athlone, the air ambulance has saved hundreds of lives across the country and especially in the west of Ireland," said Senator Feighan.
"There are issues regarding retention of pilots all across the world. I understand the Taoiseach and the Minister have put in place incentives to ensure these pilots will stay within the Air Corps."
READ MORE
Nearly 500 gardaí have faced disciplinary action in less than three years


The National Museum of African American History and Culture was established in 2003 by an Act of Congress, making it the 19th Smithsonian Institution museum.
It is the only national museum devoted exclusively to the documentation of African American life, art, history, and culture.
EXHIBITIONS
Coming Soon


TensorFlow.js in CindyJS: Fix eyes and nose with moebius-transformation
Due to WebGL precision problems, TensorFlow.js works less accurate in Safari. Currently, best results are
obtained with Firefox or Chrome.
While running the applet, the position of eyes and nose should be moved to the original position.
Click on the canvas to reset the position of nose and eyes.


Adding a feature
From concept to deployment, a quick overview
by Hansel, Lead Developer at Metric.io / @hanseldunlop
What is a feature?
- User story
- Might involve many systems
- Coding / Design / Legal
Deciding what to work on
- Gut feeling
- Customer requests
- Lots of constructive arguments
- £ £ £ £...
The development process
- Test driven development!
- The user story gets turned into a test
- We let the test guide our progress
- Lots of small changes, slow steady progress
- Regular refactoring (three strikes then refactor)
Deploying to production
- Deployment is hard
- Professionals automate everything
- Every code change results in a deploy test
Tools
- Linux!
- Vim
- git / source control
- Jenkins for continuous integration
- Nginx > uWSGI > Django > Redis > Postgresql
- Ansible


Please go to 1 of the following pages to see the demonstration
-
IIFE (immediately invoked function expression) example. This is just dropping the script into an html file.
This example includes the ability to see native datepickers side by side with the polyfill in browsers which support <input type="date">
-
ESM (ECMAScript modules) with dynamic loading. This will require some kind of bundler (such as Webpack, Browserify, or as in this case Rollup).
This ensures only a tiny script is loaded by modern browsers, while older browsers download the full polyfill.


DRANDLEAPFROG / SRANDLEAPFROG
Amend a generator so that it will generate every Kth value.
(Note that SRANDLEAPFROG is the single precision version of DRANDLEAPFROG. The argument lists of both routines are identical except that any double precision arguments of DRANDLEAPFROG are replaced in SRANDLEAPFROG by single precision arguments - type REAL in FORTRAN or type float in C).
— Input/Output: INTEGER STATE(*)
The STATE vector holds information on the state of the base generator being used and as such its minimum length varies. Prior to calling
DRANDLEAPFROG
STATE must have been initialized. See Initialization of the Base Generators for information on initialization of the STATE variable.
On input: the current state of the base generator.
On output: The STATE vector for a generator that has been advanced K-1 places and will return every Nth value.
Constraint: The STATE array must be for either the NAG basic, Wichmann-Hill or L'Ecuyer Combined Recursive base generators.
Example:
C Generate 3 * 100 values from the Uniform distribution C Multiple streams generated using the Leap Frog method INTEGER LSTATE,N PARAMETER (LSTATE=16,N=100) INTEGER I,INFO INTEGER SEED(1),STATE1(LSTATE),STATE2(LSTATE),STATE3(LSTATE) INTEGER X1(N),X2(N),X3(N) DOUBLE PRECISION A,B C Set the seed SEED(1) = 1234 C Set the distributional parameters A = 0.0D0 B = 1.0D0 C Initialize the STATE1 vector CALL DRANDINITIALIZE(1,1,SEED,1,STATE1,LSTATE,INFO) C Copy the STATE1 vector into other state vectors DO 20 I = 1,LSTATE STATE2(I) = STATE1(I) STATE3(I) = STATE1(I) 20 CONTINUE C Update each stream so they generate every 3rd value CALL DRANDLEAPFROG(3,1,STATE1,INFO) CALL DRANDLEAPFROG(3,2,STATE2,INFO) CALL DRANDLEAPFROG(3,3,STATE3,INFO) C Generate 3 sets of N variates from the Univariate distribution CALL DRANDUNIFORM(N,A,B,STATE1,X1,LDX,INFO) CALL DRANDUNIFORM(N,A,B,STATE2,X2,LDX,INFO) CALL DRANDUNIFORM(N,A,B,STATE3,X3,LDX,INFO) C Print the results DO 40 I = 1,N WRITE(6,*) X1(I),X2(I),X3(I) 40 CONTINUE |


Preparation time
less than 30 mins
Cooking time
10 to 30 mins
Serves
Serves 6
Preheat the oven to 190C/375F/Gas 5.
For the ragu and spinach sauce, heat the oil in a large non-stick frying pan, add the sausage meat and brown over a high heat until golden, breaking up the meat with two wooden spoons.
Add chilli, garlic and mushrooms and fry for a few minutes. Stir in the créme frâiche and spinach.
Bring to the boil for a couple of minutes, season well and set aside.
For the tomato sauce, measure all the ingredients into a jug and season well.
Divide the ragu sauce into thirds and spoon one third into the base of an oven-proof dish.
Spoon one third of the tomato sauce on top and arrange half the pasta sheets over it. Repeat using two more layers of ragu and tomato sauce and one of pasta.
Sprinkle over the grated cheese.
Place in the oven for about 20-30 minutes or until golden brown, bubbling around the edges and the pasta is tender.