Simple web application, completely responsive to show Corona statistics about Germany allowing the user to select between the next timeframes from now:
Note: Timeframes can be changed inside src/app/common/data/timeframe.data.ts
This project was generated with Angular CLI version 11.2.10.
Note: All scripts are running from a local npm package with npx
Run npm run build:production:compress
to build the project minifying the HTML files and compressing (scss,js,html,json,ico,svg) files with gzip and brotli.
Note: For more information check the scripts inside package.
Run npm run compodoc
to generate a the project documentation using Compodoc.
Note: Go to the repo Corona Doc to see the result and further information.
Run npm run test
will check lint and prettier format before running all unit tests.
Run npm run build:production:analyze
will analize the bundle size of the project with webpack-bundle-analyzer.
Robert Koch-Institut: COVID-19
Free SVG Maps from AMCHARTS
Flag map of Germany from Wikimedia Commons
Xtreme Angular 11 Admin Lite from WrapPixel


Be aware of dangerous drivers!
Real-time updates around you.
Easy to use, just 1 click!
Get where you need to be


Fiddle exploring the dojo enhanced grid widget. This fiddle is based on the example provided in the reference guide for the enhanced grid widget.


To use the IEU GWAS database for MR analysis, see the TwoSampleMR R package.
Here we’ll demonstrate how to achieve the same data extractions using the GWAS VCF files.
We’ll use the example of LDL cholesterol ieu-a-300 and coronary heart disease ieu-a-7.
Load libraries:
suppressPackageStartupMessages(suppressWarnings({ library(TwoSampleMR) library(gwasglue) library(gwasvcf) library(ieugwasr) library(dplyr) })) #> API: public: http://gwas-api.mrcieu.ac.uk/
This is a simple procedure for MR using the TwoSampleMR package:
# Extract the instruments for LDL expd1 <- TwoSampleMR::extract_instruments("ieu-a-300") # Extract those SNP effects for CHD outd1 <- TwoSampleMR::extract_outcome_data(expd1$SNP, "ieu-a-7", proxies=FALSE) #> Extracting data for 81 SNP(s) from 1 GWAS(s) # Harmonise the exposure and outcome data dat1 <- TwoSampleMR::harmonise_data(expd1, outd1) #> Harmonising LDL cholesterol || id:ieu-a-300 (ieu-a-300) and Coronary heart disease || id:ieu-a-7 (ieu-a-7) #> Removing the following SNPs for being palindromic with intermediate allele frequencies: #> rs2954029, rs964184 # Perform MR TwoSampleMR::mr(dat1) #> Analysing 'ieu-a-300' on 'ieu-a-7' #> id.exposure id.outcome outcome #> 1 ieu-a-300 ieu-a-7 Coronary heart disease || id:ieu-a-7 #> 2 ieu-a-300 ieu-a-7 Coronary heart disease || id:ieu-a-7 #> 3 ieu-a-300 ieu-a-7 Coronary heart disease || id:ieu-a-7 #> 4 ieu-a-300 ieu-a-7 Coronary heart disease || id:ieu-a-7 #> 5 ieu-a-300 ieu-a-7 Coronary heart disease || id:ieu-a-7 #> exposure method nsnp b #> 1 LDL cholesterol || id:ieu-a-300 MR Egger 78 0.5067936 #> 2 LDL cholesterol || id:ieu-a-300 Weighted median 78 0.4014675 #> 3 LDL cholesterol || id:ieu-a-300 Inverse variance weighted 78 0.4141687 #> 4 LDL cholesterol || id:ieu-a-300 Simple mode 78 0.4774092 #> 5 LDL cholesterol || id:ieu-a-300 Weighted mode 78 0.5328338 #> se pval #> 1 0.07837328 8.725962e-09 #> 2 0.04287663 7.727079e-21 #> 3 0.05096262 4.403664e-16 #> 4 0.08115000 9.847698e-08 #> 5 0.07304508 2.290517e-10
Note that this extraction process can be simplified with:
dat1 <- make_dat("ieu-a-300", "ieu-a-7")
Let’s do the same with the vcf files (and the indexes). Download from here:
wget https://gwas.mrcieu.ac.uk/files/ieu-a-300/ieu-a-300.vcf.gz
wget https://gwas.mrcieu.ac.uk/files/ieu-a-300/ieu-a-300.vcf.gz.tbi
wget https://gwas.mrcieu.ac.uk/files/ieu-a-7/ieu-a-7.vcf.gz
wget https://gwas.mrcieu.ac.uk/files/ieu-a-7/ieu-a-7.vcf.gz.tbi
First get the tophits for LDL cholesterol
gwasvcf::set_bcftools() #> Loading required namespace: genetics.binaRies #> Path not provided, using binaries in the explodecomputer/genetics.binaRies package expd2 <- gwasvcf::query_gwas("ieu-a-300.vcf.gz", chrompos=paste0(expd1$chr.exposure, ":", expd1$pos.exposure))
Convert to TwoSampleMR format:
expd2 <- gwasglue::gwasvcf_to_TwoSampleMR(expd2, type="exposure")
Extract those SNPs from the outcome vcf file and convert to TwoSampleMR format
outd2 <- gwasvcf::query_gwas("ieu-a-7.vcf.gz", chrompos = paste0(expd1$chr.exposure, ":", expd1$pos.exposure)) outd2 <- gwasglue::gwasvcf_to_TwoSampleMR(outd2, "outcome")
Proceed with harmonising and performing MR
dat2 <- TwoSampleMR::harmonise_data(expd2, outd2) #> Harmonising IEU-a-300 (elEq4R) and IEU-a-7 (wfSXNb) #> Removing the following SNPs for being palindromic with intermediate allele frequencies: #> rs2954029, rs3184504, rs964184 TwoSampleMR::mr(dat2) #> Analysing 'elEq4R' on 'wfSXNb' #> id.exposure id.outcome outcome exposure method nsnp #> 1 elEq4R wfSXNb IEU-a-7 IEU-a-300 MR Egger 77 #> 2 elEq4R wfSXNb IEU-a-7 IEU-a-300 Weighted median 77 #> 3 elEq4R wfSXNb IEU-a-7 IEU-a-300 Inverse variance weighted 77 #> 4 elEq4R wfSXNb IEU-a-7 IEU-a-300 Simple mode 77 #> 5 elEq4R wfSXNb IEU-a-7 IEU-a-300 Weighted mode 77 #> b se pval #> 1 0.4731258 0.07572869 2.299636e-08 #> 2 0.3976896 0.04767446 7.318419e-17 #> 3 0.4142950 0.04880527 2.088973e-17 #> 4 0.4476460 0.08088536 4.263685e-07 #> 5 0.5299800 0.07522516 7.215281e-10
If we want to extract top hits based on a threshold and clump locally. First download the LD reference dataset:
Now extract the top hits based on a p-value threshold
gwasvcf::set_bcftools() #> Path not provided, using binaries in the explodecomputer/genetics.binaRies package expd3 <- gwasvcf::query_gwas("ieu-a-300.vcf.gz", pval=5e-8) expd3 #> class: CollapsedVCF #> dim: 3051 1 #> rowRanges(vcf): #> GRanges with 5 metadata columns: paramRangeID, REF, ALT, QUAL, FILTER #> info(vcf): #> DataFrame with 3 columns: AF, AC, AN #> info(header(vcf)): #> Number Type Description #> AF A Float Allele Frequency #> AC A Integer Allele count in genotypes #> AN 1 Integer Total number of alleles in called genotypes #> geno(vcf): #> List of length 9: ES, SE, LP, AF, SS, EZ, SI, NC, ID #> geno(header(vcf)): #> Number Type Description #> ES A Float Effect size estimate relative to the alternative allele #> SE A Float Standard error of effect size estimate #> LP A Float -log10 p-value for effect estimate #> AF A Float Alternate allele frequency in the association study #> SS A Float Sample size used to estimate genetic effect #> EZ A Float Z-score provided if it was used to derive the EFFECT and... #> SI A Float Accuracy score of summary data imputation #> NC A Float Number of cases used to estimate genetic effect #> ID 1 String Study variant identifier
Convert to TwoSampleMR format:
expd3 <- gwasglue::gwasvcf_to_TwoSampleMR(expd3, type="exposure")
Get a list of SNPs to retain after clumping and subset the data
retain_snps <- expd3 %>% dplyr::select(rsid=SNP, pval=pval.exposure) %>% ieugwasr::ld_clump(., plink_bin=genetics.binaRies::get_plink_binary(), bfile="data_maf0.01_rs_ref") %>% {.$rsid} #> Clumping vbZ6sJ, 3051 variants, using EUR population reference #> Removing 2973 of 3051 variants due to LD with other variants or absence from LD reference panel expd3 <- subset(expd3, SNP %in% retain_snps)
This only works if you extract on rsids at the moment, and is quite slow. But here it is:
gwasvcf::set_plink() #> Path not provided, using binaries in the explodecomputer/genetics.binaRies package outd2 <- gwasvcf::query_gwas("ieu-a-7.vcf.gz", rsid = expd3$SNP, proxies="yes", bfile="data_maf0.01_rs_ref") #> Initial search... #> Extracted 77 out of 78 rsids #> Searching for proxies for 1 rsids #> Determining searchspace... #> Proxy lookup... #> Finding proxies... #> Taking input= as a system command ('gunzip -c /var/folders/8t/4mzsfqzd5773rsc11w4q5fhw0000gp/T//RtmpmG4h9W/file172101101fa74.targets.ld.gz') and a variable has been used in the expression passed to `input=`. Please use fread(cmd=...). There is a security concern if you are creating an app, and the app could have a malicious user, and the app is not running in a secure environment; e.g. the app is running as root. Please read item 5 in the NEWS file for v1.11.6 for more information and for the option to suppress this message. #> Found 426 proxies #> Extrating proxies... #> Identified proxies for 1 of 1 rsids #> Aligning... outd2 <- gwasglue::gwasvcf_to_TwoSampleMR(outd2, "outcome")
A number of other MR methods are available. The current framework for using them is to:
Examples of formats that you can convert to within TwoSampleMR:
All data in OpenGWAS is stored on bc4 in the form of GWAS VCF files. You can create harmonised datasets easily on bc4 with these files.
Determine the locations of the GWAS VCF files and a number of other reference datasets and binaries:
Now simply run:
dat <- make_TwoSampleMR_dat("ieu-a-300", "ieu-a-7")
This can be run in parallel for large combinations of exposures and outcomes, e.g.:
dat <- make_TwoSampleMR_dat( id1=c("ieu-a-300", "ieu-a-302", "ieu-a-299"), id2=c("ieu-a-7", "ieu-a-2"), nthreads=6 )
This will lookup all instruments in the exposures (id1) in both exposures and outcomes, and harmonise all exposure-outcome pairs, parallelised across 6 threads.
Note: please make sure to run these analyses in batch mode by submitting to the slurm scheduler, not interactively on the head nodes!


DokkanWeb
Home
(current)
Create Account
Load Account from transfer code
Load Account:
Submit
Stage
Area
Complete Quests
Complete Event
Clash
Dragon Balls
Omega Farm
Info
Team
Gift
Transfer
capacity
Name


{% extends theme %} {% block content %}
Multiplayer online game (MMORPG), developed by the Russian company Webzen, has become one of the most popular massively multiplayer role-playing games in the world. The vast game world, great group quests and realized ...
Multiplayer online game (MMORPG), developed by the Russian company Webzen, has become one of the most popular massively multiplayer role-playing games in the world. The vast game world, great group quests and realized ...
Multiplayer online game (MMORPG), developed by the Russian company Webzen, has become one of the most popular massively multiplayer role-playing games in the world. The vast game world, great group quests and realized ...
Multiplayer online game (MMORPG), developed by the Russian company Webzen, has become one of the most popular massively multiplayer role-playing games in the world. The vast game world, great group quests and realized ...
Multiplayer online game (MMORPG), developed by the Russian company Webzen, has become one of the most popular massively multiplayer role-playing games in the world. The vast game world, great group quests and realized ...
Multiplayer online game (MMORPG), developed by the Russian company Webzen, has become one of the most popular massively multiplayer role-playing games in the world. The vast game world, great group quests and realized ...


This section explains operators with which you can transform items that are emitted by an Observable.
map( )
— transform the items emitted by an Observable by applying a function to each of themflatMap( )
— transform the items emitted by an Observable into Observables, then flatten this into a single ObservablemergeMap( )
and mergeMapIterable( )
— create Observables (or Iterables) corresponding to each emission from a source Observable and merge the results into a single Observablescan( )
— apply a function to each item emitted by an Observable, sequentially, and emit each successive valuegroupBy( )
and groupByUntil( )
— divide an Observable into a set of Observables that emit groups of items from the original Observable, organized by keypivot( )
— combine multiple sets of grouped observables so that they are arranged primarily by group rather than by setbuffer( )
— periodically gather items from an Observable into bundles and emit these bundles rather than emitting the items one at a time window( )
— periodically subdivide items from an Observable into Observable windows and emit these windows rather than emitting the items one at a time cast( )
— cast all items from the source Observable into a particular type before reemitting them
The map( )
method applies a function of your choosing to every item emitted by an Observable, and returns this transformation as a new Observable. For example, the following code maps a function that squares the incoming value onto the values in numbers
:
numbers = Observable.from([1, 2, 3, 4, 5]);
numbers.map({it * it}).subscribe(
{ println(it); }, // onNext
{ println("Error: " + it.getMessage()); }, // onError
{ println("Sequence complete"); } // onCompleted
);
1
4
9
16
25
Sequence complete
map(func)
map
Select
The flatMap( )
method creates a new Observable by applying a function that you supply to each item emitted by the original Observable, where that function is itself an Observable that emits items, and then merges the results of that function applied to every item emitted by the original Observable, emitting these merged results.
This method is useful, for example, when you have an Observable that emits a series of items that themselves have Observable members or are in other ways transformable into Observables, so that you can create a new Observable that emits the complete collection of items emitted by the sub-Observables of these items.
// this closure is an Observable that emits three numbers
numbers = Observable.from([1, 2, 3]);
// this closure is an Observable that emits two numbers based on what number it is passed
multiples = { n -> Observable.from([ n*2, n*3 ]) };
numbers.flatMap(multiples).subscribe(
{ println(it); }, // onNext
{ println("Error: " + it.getMessage()); }, // onError
{ println("Sequence complete"); } // onCompleted
);
2
3
4
6
6
9
Sequence complete
If any of the individual Observables mapped to the items from the source Observable in flatMap( )
aborts by invoking onError
, the flatMap( )
call itself will immediately abort and invoke onError
.
flatMap
selectMany
SelectMany
mergeMap( )
at its most basic is an alias for flatMap( )
, but it also has some variants that flatMap( )
lacks. For example, one version (the one illustrated in the marble diagram above) creates (and merges) a new Observable for each item and notification from the source Observable.
Another version combines items from the source Observable with the items emitted by an Observable triggered by those source items, and emits these combinations:
The mergeMapIterable
variants pair up source items and generated Iterables rather than source items and generated Observables, but otherwise work in much the same way.
mergeMap(observableFactory)
mergeMap(onNextObservableFactory, onErrorObservableFactory, onCompletedObservableFactory)
mergeMap(collectionSelector, resultSelector)
mergeMapIterable(collectionSelector)
and mergeMapIterable(collectionSelector, resultSelector)
The scan( )
method returns an Observable that applies a function of your choosing to the first item emitted by a source Observable, then feeds the result of that function along with the second item emitted by the source Observable into the same function, then feeds the result of that function along with the third item into the same function, and so on until all items have been emitted by the source Observable. It emits the result of each of these iterations from the returned Observable. This sort of function is sometimes called an “accumulator.”
For example, the following code takes an Observable that emits a consecutive sequence of n integers starting with 1 and converts it into an Observable that emits the first n triangular numbers:
numbers = Observable.from([1, 2, 3, 4, 5]);
numbers.scan({ a, b -> a+b }).subscribe(
{ println(it); }, // onNext
{ println("Error: " + it.getMessage()); }, // onError
{ println("Sequence complete"); } // onCompleted
);
1
3
6
10
15
Sequence complete
There is also a version of scan( )
to which you can pass a seed item in addition to an accumulator function:
my_observable.scan(initial_seed, accumulator_closure)
Note: if you pass a seed item to scan( )
, it will emit the seed itself as its first item.
Note also that passing a null
seed is not the same as not passing a seed. The behavior will be different. If you pass a seed of null
, you will be seeding your scan with null
, and scan( )
will emit null
as its first item.
scan(accumulator)
and scan(initialValue, accumulator)
scan
Scan
The groupBy( )
method creates or extracts a key from all of the items emitted by a source Observable. For each unique key created in this way, groupBy( )
creates an Observable of the subclass GroupedObservable
that emits all of the items emitted by the source Observable that match that key. groupBy( )
then emits each of these GroupedObservable
items. Each Observable of this subclass has a method, getKey( )
with which you can retrieve the key that defined the GroupedObservable
.
The following sample code uses groupBy( )
to transform a list of numbers into two lists, grouped by whether or not the numbers are even:
```groovy
def numbers = Observable.from([1, 2, 3, 4, 5, 6, 7, 8, 9]);
def groupFunc = { return(0 == (it % 2)); };
numbers.groupBy(groupFunc).flatMap({ it.reduce([it.getKey()], {a, b -> a << b}) }).subscribe(
{ println(it); }, // onNext
{ println("Error: " + it.getMessage()); }, // onError
{ println("Sequence complete"); } // onCompleted
);
[false, 1, 3, 5, 7, 9]
[true, 2, 4, 6, 8]
Sequence complete
```
There is also a groupByUntil( )
operator. It adds another parameter: an Observable that emits duration markers. When a duration marker is emitted by this Observable, any grouped Observables that have been opened are closed, and groupByUntil( )
will create new grouped Observables for any subsequent emissions by the source Observable.
Another variety of groupByUntil( )
limits the number of groups that can be active at any particular time. If an item is emitted by the source Observable that would cause the number of groups to exceed this maximum, before the new group is emitted, one of the existing groups is closed (that is, the Observable it represents terminates by calling its Subscribers' onCompleted
methods and then expires).
Note that when groupBy( )
or groupByUntil( )
splits up the source Observable into an Observable that emits GroupedObservables, each of these GroupedObservables begins to buffer the items that it will emit upon subscription. For this reason, if you ignore any of these GroupedObservables (you neither subscribe to it or apply an operator to it that subscribes to it), this buffer will present a potential memory leak. For this reason, rather than ignoring a GroupedObservable that you have no interest in observing, you should instead apply an operator like take(0)
to it as a way of signalling to it that it may discard its buffer.
groupBy(keySelector)
groupByUntil(keySelector, durationSelector)
groupByUntil(keySelector, valueSelector, durationSelector)
groupBy
groupByUntil
GroupBy
GroupByUntil
If you combine multiple sets of grouped observables, such as those created by groupBy( )
and groupByUntil( )
, then even if those grouped observables have been grouped by a similar differentiation function, the resulting grouping will be primarily based on which set the observable came from, not on which group the observable belonged to.
An example may make this clearer. Imagine you use groupBy( )
to group the emissions of an Observable (Observable1) that emits integers into two grouped observables, one emitting the even integers and the other emitting the odd integers. You then repeat this process on a second Observable (Observable2) that emits another set of integers. You hope then to combine the sets of grouped observables emitted by each of these into a single grouped Observable by means of a operator like from( Observable1, Observable2 )
.
The result will be a grouped observable that emits two groups: the grouped observable resulting from transforming Observable1, and the grouped observable resulting from transforming Observable2. Each of those grouped observables emit observables that in turn emit the odds and evens from the source observables. You can use pivot( )
to change this around: by applying pivot( )
to this grouped observable it will transform into one that emits two different groups: the odds group and the evens group, with each of these groups emitting a separate observable corresponding to which source observable its set of integers came from. Here is an illustration:
pivot(observable)
The buffer( )
method periodically gathers items emitted by a source Observable
into bundles, and emits these bundles as its own emissions.
Note that if the source Observable
issues an onError
notification, buffer( )
will pass on this notification immediately without first emitting the buffer it is in the process of assembling, even if that buffer contains items that were emitted by the source Observable
before it issued the error notification.
There are a number of ways with which you can regulate how buffer( )
gathers items from the source Observable
into bundles:
buffer(bufferOpenings, closingSelector)
This version of
buffer( )
monitors anObservable
, bufferOpenings, that emitsBufferOpening
objects. Each time it observes such an emitted object, it creates a new bundle to begin collecting items emitted by the sourceObservable
and it passes the bufferOpeningsObservable
into the closingSelector function. That function returns anObservable
.buffer( )
monitors thatObservable
and when it detects an emitted object, it closes its bundle and emits it as its own emission.
buffer(count)
This version of
buffer( )
emits a new bundle of items for every count items emitted by the sourceObservable
.
def numbers = Observable.from([1, 2, 3, 4, 5, 6, 7, 8]);
numbers.buffer(3).subscribe(
{ println(it); }, // onNext
{ println("Error: " + it.getMessage()); }, // onError
{ println("Sequence complete"); } // onCompleted
);
[1, 2, 3]
[4, 5, 6]
[7, 8]
buffer(count, skip)
buffer( )
create a new bundle of items for every skip item(s) emitted by the source Observable
, each containing count elements. If skip is less than count this means that the bundles will overlap and contain duplicate items. For example, compare the following two uses of buffer( )
on the same sequence:def numbers = Observable.from([1, 2, 3, 4, 5, 6, 7, 8]);
numbers.buffer(2,3).subscribe(
{ println(it); }, // onNext
{ println("Error: " + it.getMessage()); }, // onError
{ println("Sequence complete"); } // onCompleted
);
numbers.buffer(3,2).subscribe(
{ println(it); }, // onNext
{ println("Error: " + it.getMessage()); }, // onError
{ println("Sequence complete"); } // onCompleted
);
[1, 2]
[4, 5]
[7, 8]
Sequence complete
[1, 2, 3]
[3, 4, 5]
[5, 6, 7]
[7, 8]
Sequence complete
buffer(timespan)
and buffer(timespan, scheduler)
This version of
buffer( )
emits a new bundle of items periodically, every timespan amount of time, containing all items emitted by the sourceObservable
since the previous bundle emission.
buffer(timespan, count)
and buffer(timespan, count, scheduler)
This version of
buffer( )
emits a new bundle of items for every count items emitted by the sourceObservable
, or, if timespan has elapsed since its last bundle emission, it emits a bundle of however many items the sourceObservable
has emitted in that span, even if this is less than count.
buffer(timespan, timeshift)
and buffer(timespan, timeshift, scheduler)
This version of
buffer( )
creates a new bundle of items every timeshift, and fills this bundle with every item emitted by the sourceObservable
from that time until timespan time has passed since the bundle's creation, before emitting the bundle as its own emission. If timespan is longer than timeshift, the emitted bundles will represent time periods that overlap and so they may contain duplicate items.
buffer(closingSelector)
buffer(count)
and buffer(count, skip)
buffer(timespan, timeshift, unit)
and buffer(timespan, timeshift, unit, scheduler)
buffer(timespan, unit)
and buffer(timespan, unit, scheduler)
buffer(timespan, unit, count)
and buffer(timespan, unit, count, scheduler)
buffer(bufferOpenings, closingSelector)
buffer
, bufferWithCount
, bufferWithTime
, and bufferWithTimeOrCount
Buffer
Window is similar to buffer( )
, but rather than emitting packets of items from the original Observable
, it emits Observable
s, each one of which emits a subset of items from the original Observable
and then terminates with an onCompleted( )
call.
Like buffer( )
, window( )
has many varieties, each with its own way of subdividing the original Observable
into the resulting Observable
emissions, each one of which contains a "window" onto the original emitted items. In the terminology of the window( )
method, when a window "opens," this means that a new Observable
is emitted and that Observable
will begin emitting items emitted by the source Observable
. When a window "closes," this means that the emitted Observable
stops emitting items from the source Observable
and calls its Subscribers' onCompleted( )
method and terminates.
window(source, closingSelector)
This version of
window( )
opens its first window immediately. It closes the currently open window and immediately opens a new one each time it observes an object emitted by theObservable
that is returned from closingSelector. In this way, this version ofwindow( )
emits a series of non-overlapping windows whose collectiveonNext( )
emissions correspond one-to-one with those of the sourceObservable
.
window(source, windowOpenings, closingSelector)
This version of
window( )
opens a window whenever it observes the windowOpeningsObservable
emit anOpening
object and at the same time calls closingSelector to generate a closingObservable
associated with that window. When that closingObservable
emits an object,window( )
closes that window. Since the closing of currently open windows and the opening of new windows are activities that are regulated by independentObservable
s, this version ofwindow( )
may create windows that overlap (duplicating items from the sourceObservable
) or that leave gaps (discarding items from the sourceObservable
).
window(source, count)
This version of
window( )
opens its first window immediately. It closes the currently open window and immediately opens a new one whenever the current window has emitted count items. It will also close the currently open window if it receives anonCompleted( )
oronError( )
call from the sourceObservable
. This version ofwindow( )
emits a series of non-overlapping windows whose collectiveonNext( )
emissions correspond one-to-one with those of the sourceObservable
.
window(source, count, skip)
This version of
window( )
opens its first window immediately. It opens a new window beginning with every skip item from the sourceObservable
(e.g. if skip is 3, then it opens a new window starting with every third item). It closes each window when that window has emitted count items or if it receives anonCompleted( )
oronError( )
call from the sourceObservable
. If skip = count then this behaves the same aswindow(source, count)
; if skip < count this will emit windows that overlap by count - skip items; if skip > count this will emit windows that drop skip - count items from the sourceObservable
between every window.
window(source, timespan, unit)
and window(source, timespan, unit, scheduler)
This version of
window( )
opens its first window immediately. It closes the currently open window and opens another one every timespan period of time (measured in unit, and optionally on a particular scheduler). It will also close the currently open window if it receives anonCompleted( )
oronError( )
call from the sourceObservable
. This version ofwindow( )
emits a series of non-overlapping windows whose collectiveonNext( )
emissions correspond one-to-one with those of the sourceObservable
.
window(source, timespan, unit, count)
and window(source, timespan, unit, count, scheduler)
This version of
window( )
opens its first window immediately. It closes the currently open window and opens another one every timespan period of time (measured in unit, and optionally on a particular scheduler) or whenever the currently open window has emitted count items. It will also close the currently open window if it receives anonCompleted( )
oronError( )
call from the sourceObservable
. This version ofwindow( )
emits a series of non-overlapping windows whose collectiveonNext( )
emissions correspond one-to-one with those of the sourceObservable
.
window(source, timespan, timeshift, unit)
and window(source, timespan, timeshift, unit, scheduler)
This version of
window( )
opens its first window immediately, and thereafter opens a new window every timeshift period of time (measured in unit, and optionally on a particular scheduler). It closes a currently open window after timespan period of time has passed since that window was opened. It will also close any currently open window if it receives anonCompleted( )
oronError( )
call from the sourceObservable
. Depending on how you set timespan and timeshift the windows that result from this operation may overlap or have gaps.
window(closingSelector)
window(count)
and window(count, skip)
window(timespan, timeshift, unit)
and window(timespan, timeshift, unit, scheduler)
window(timespan, unit)
and window(timespan, unit, scheduler)
window(timespan, unit, count)
and window(timespan, unit, count, scheduler)
window(windowOpenings, closingSelector)
window
, windowWithCount
, windowWithTime
, and windowWithTimeOrCount
Window
cast(class)
Cast


Name your Tamagotchi!
Submit
Food
Happiness
Health
Exhaustion
Gems: 0
Life Stage: Baby
Age: 0
Strength: 0
Weight: 1.0 kg
Feed Me!
Play!
Take a Pill! (5 gems)
Give Gameboy! (10 gems)
Harvest Gems!
Heal for 25 HP (15 gems)
Gain 1 Strength (10 gems)
Wrestling Weight Classes
25kg (25 gems, Easy)
50kg (30 gems, Medium)
100kg (50 gems, Hard)


public abstract class PrivacyRiskCalculator
extends java.lang.Object
addSupportedType
to define what
information types are supported. This call may be made while building the
internal data structure containing risk scores per type.| Constructor and Description |
|---|
PrivacyRiskCalculator() |
| Modifier and Type | Method and Description |
|---|---|
protected void |
addSupportedType(java.lang.String type)
Adds an information type to the list of supported information types.
|
abstract PrivacyRiskScore |
getMaxScore(PrivacyRiskTarget target)
Returns the maximum score for the given
PrivacyRiskTarget object. |
java.util.TreeSet<java.lang.String> |
getSupportedTypes()
Returns the list of information types supported by this calculator.
|
protected void |
removeSupportedType(java.lang.String type)
Removes an information type from the list of supported types.
|
public abstract PrivacyRiskScore getMaxScore(PrivacyRiskTarget target)
PrivacyRiskTarget
object.
The target contains a description of information types that should be
scored. Each information type provided should be capable of receiving a
score, and this method returns the maximum score among all information
types.target
- describes the information types to scoreprotected void addSupportedType(java.lang.String type)
type
- the type to add to this calculatorprotected void removeSupportedType(java.lang.String type)
type
- the type to add to this calculatorpublic java.util.TreeSet<java.lang.String> getSupportedTypes()


RGB Color Game with jQuery
New Game
Guess the following color based on its RGB index. Click on square to check
here goes rgb


tcex.tcex module¶
TcEx Framework
-
class
tcex.tcex.
TcEx
[source]¶ Bases:
object
Provides basic functionality for all types of TxEx Apps.
-
_association_types
()[source]¶ Retrieve Custom Indicator Associations types from the ThreatConnect API.
Method for handling token authorization to ThreatConnect API.
This method will automatically renew the ThreatConnect token if it has expired.
Returns: - An dictionary containing the header values for authorization to
- ThreatConnect.
Return type: (dictionary)
-
_load_secure_params
()[source]¶ Load secure params from the API.
# API Response:
1 2 3 4 5 6 7 8
{ "inputs": { "tc_playbook_db_type": "Redis", "fail_on_error": true, "api_default_org": "TCI" } }
Returns: Parameters (“inputs”) from the TC API. Return type: dict
-
_logger
()[source]¶ Create TcEx app logger instance.
The logger is accessible via the
tc.log.<level>
call.Logging examples
1 2 3 4
tcex.log.debug('logging debug') tcex.log.info('logging info') tcex.log.warning('logging warning') tcex.log.error('logging error')
Parameters: (bool, default (stream_only) – False): If True only the Stream handler will be enabled. Returns: An instance of logging Return type: logger
-
_resources
(custom_indicators=False)[source]¶ Initialize the resource module.
This method will make a request to the ThreatConnect API to dynamically build classes to support custom Indicators. All other resources are available via this class.
Note
Resource Classes can be accessed using
tcex.resources.<Class>
or using tcex.resource(‘<resource name>’).
-
_unknown_args
(args)[source]¶ Log argparser unknown arguments.
Parameters: args (list) – List of unknown arguments
-
args
¶ The parsed args from argparser
Note
Accessing args should only be done directly in the App.
Returns: ArgParser parsed arguments Return type: (namespace)
A method to handle the different methods of authenticating to the ThreatConnect API.
Token Based Authorization:
{'Authorization': authorization}
HMAC Based Authorization:
{ 'Authorization': authorization, 'Timestamp': <unix timestamp> } http://docs.python-requests.org/en/master/api/#requests.Session.prepare_request.
Parameters: request_prepped (object) – A instance of Python Request module requests. PreparedRequest. Returns: - An dictionary containing the header values for authorization to
- ThreatConnect.
Return type: (dictionary)
Method for handling HMAC authorization to ThreatConnect API.
Parameters: request_prepped (object) – A instance of Python Request prepped requests. PreparedRequest. Returns: - An dictionary containing the header values for authorization to
- ThreatConnect.
Return type: (dictionary)
-
batch
(owner, action=None, attribute_write_type=None, halt_on_error=False)[source]¶ Return instance of Batch
-
bulk_enabled
(owner=None, api_path=None, authorization=None)[source]¶ [Deprecated] Check if bulk indicators is enabled for owner.
Warning
This method is deprecated and will be removed in TcEx version 0.9.0.
Using the TC API validate that bulk indicator download is enabled and has successfully run for the provided owner.
Parameters: - owner (Optional [string]) – Owner name to check.
- api_path (Optional [string]) – The url to the ThreatConnect API.
- authorization (Optional [string]) – The authorization header value.
Returns: True if bulk indicator download is enabled and has run
Return type: (boolean)
-
data_filter
(data)[source]¶ Return an instance of the Data Filter Class.
A simple helper module to filter results from ThreatConnect API or other data source. For example if results need to be filtered by an unsupported field the module allows you to pass the data array/list in and specify one or more filters to get just the results required.
Parameters: data (list) – The list of dictionary structure to filter. Returns: An instance of DataFilter Class Return type: (object)
-
default_args
¶ Parse args and return default args.
-
epoch_seconds
(delta=None)[source]¶ [Deprecated] Get epoch seconds for now or using a time delta.
Warning
This method is deprecated and will be removed in TcEx version 0.9.0. Use the tcex.utils date methods instead.
1 2 3 4
{'days': 1} {'weeks': 3} {'months': 4} {'days': 1, 'weeks': 3, 'months': 4}
Note
More information can be found at https://dateutil.readthedocs.io/en/stable/relativedelta.html
Parameters: delta (Optional [integer]) – The exit code value for the app. Returns: A integer representing epoch seconds. Return type: (int)
-
error_codes
¶ ThreatConnect error codes.
-
exit
(code=None, msg=None)[source]¶ Application exit method with proper exit code
The method will run the Python standard sys.exit() with the exit code previously defined via
exit_code()
or provided during the call of this method.Parameters: - code (Optional [integer]) – The exit code value for the app.
- msg (Optional [string]) – A message to log and add to message tc output.
-
exit_code
¶ Return the current exit code.
-
static
expand_indicators
(indicator)[source]¶ Process indicators expanding file hashes/custom indicators into multiple entries.
Parameters: indicator (string) – ” : ” delimited string Returns: a list of indicators split on ” : “. Return type: (list)
-
group_types
¶ Return all defined ThreatConnect Group types.
Returns: A list of ThreatConnect Group types. Return type: (list)
-
handle_error
(code, message_values=None, raise_error=True)[source]¶ Raise RuntimeError
Parameters: - code (integer) – The error code from API or SDK.
- message (string) – The error message from API or SDK.
-
indicator_associations_types_data
¶ Return ThreatConnect associations type data.
Retrieve the data from the API if it hasn’t already been retrieved.
Returns: A dictionary of ThreatConnect associations types. Return type: (dictionary)
-
indicator_types
¶ Return ThreatConnect Indicator types.
Retrieve the data from the API if it hasn’t already been retrieved.
Returns: A list of ThreatConnect Indicator types. Return type: (list)
-
indicator_types_data
¶ Return ThreatConnect indicator types data.
Retrieve the data from the API if it hasn’t already been retrieved.
Returns: A dictionary of ThreatConnect Indicator data. Return type: (dict)
-
inject_params
(params)[source]¶ Inject params into sys.argv from secureParams API, AOT, or user provided.
-
install_json
¶ Return contents of install.json configuration file, loading from disk if required.
-
install_json_params
¶ Parse params from install.json into a dict by name.
-
job
()[source]¶ [Deprecated] Return instance of Job module
Warning
The job module is deprecated and will be removed in TcEx version 0.9.0. Use tcex.batch instead.
-
jobs
¶ [Deprecated] Include the jobs Module.
Warning
The job module is deprecated and will be removed in TcEx version 0.9.0. Use tcex.batch instead.
-
message_tc
(message, max_length=255)[source]¶ Write data to message_tc file in TcEX specified directory.
This method is used to set and exit message in the ThreatConnect Platform. ThreatConnect only supports files of max_message_length. Any data exceeding this limit will be truncated by this method.
Parameters: message (string) – The message to add to message_tc file
-
metric
(name, description, data_type, interval, keyed=False)[source]¶ Get instance of the Metrics module.
Parameters: - name (string) – The name for the metric.
- description (string) – The description of the metric.
- data_type (string) – The type of metric: Sum, Count, Min, Max, First, Last, and Average.
- interval (string) – The metric interval: Hourly, Daily, Weekly, Monthly, and Yearly.
- keyed (boolean) – Indicates whether the data will have a keyed value.
Returns: An instance of the Metrics Class.
Return type: (object)
-
notification
()[source]¶ Get instance of the Notification module.
Returns: An instance of the Notification Class. Return type: (object)
-
playbook
¶ Include the Playbook Module.
Note
Playbook methods can be accessed using
tcex.playbook.<method>
.
-
proxies
¶ Formats proxy configuration into required format for Python Requests module.
Generates a dictionary for use with the Python Requests module format when proxy is required for remote connections.
Example Response
{"http": "http://user:pass@<IP_ADDRESS>:3128/"}
Returns: Dictionary of proxy settings Return type: (dictionary)
-
request
(session=None)[source]¶ Return an instance of the Request Class.
A wrapper on the Python Request Module specifically for interacting with the ThreatConnect API. However, this can also be used for connecting to other API endpoints.
Returns: An instance of Request Class Return type: (object)
-
request_external
()[source]¶ Return an instance of the Request Class with Proxy Set
See
request
Returns: An instance of Request Class Return type: (object)
-
request_tc
()[source]¶ [Deprecated] Return an instance of the Request Class with Proxy and Authorization Set
Warning
This method is deprecated and will be removed in TcEx version 0.9.0. Use tcex.session instead.
See
request
Returns: An instance of Request Class Return type: (object)
-
resource
(resource_type)[source]¶ Get instance of Resource Class with dynamic type.
Parameters: resource_type – The resource type name (e.g Adversary, User Agent, etc). Returns: Instance of Resource Object child class. Return type: (object)
-
results_tc
(key, value)[source]¶ Write data to results_tc file in TcEX specified directory.
The TcEx platform support persistent values between executions of the App. This method will store the values for TC to read and put into the Database.
Parameters: - key (string) – The data key to be stored.
- value (string) – The data value to be stored.
-
results_tc_args
()[source]¶ Read data from results_tc file from previous run of app.
This method is only required when not running from the with the TcEX platform and is only intended for testing apps locally.
Returns: A dictionary of values written to results_tc. Return type: (dictionary)
-
s
(data, errors='strict')[source]¶ Decode value using correct Python 2/3 method.
This method is intended to replace the
to_string()
method with better logic to handle poorly encoded unicode data in Python2 and still work in Python3.Parameters: - data (any) – Data to ve validated and (de)encoded
- errors (string) – What method to use when dealing with errors.
Returns: Return decoded data
Return type: (string)
-
static
safe_group_name
(group_name, group_max_length=100, ellipsis=True)[source]¶ Truncate group name to match limit breaking on space and optionally add an ellipsis.
Note
Currently the ThreatConnect group name limit is 100 characters.
Parameters: - group_name (string) – The raw group name to be truncated.
- group_max_length (int) – The max length of the group name.
- ellipsis (boolean) – If true the truncated name will have ‘…’ appended.
Returns: The truncated group name with optional ellipsis.
Return type: (string)
-
safe_indicator
(indicator, errors='strict')[source]¶ Indicator encode value for safe HTTP request.
Parameters: - indicator (string) – Indicator to URL Encode
- errors (string) – The error handler type.
Returns: The urlencoded string
Return type: (string)
-
static
safe_rt
(resource_type, lower=False)[source]¶ Format the Resource Type.
Takes Custom Indicator types with a space character and return a safe string.
(e.g. User Agent is converted to User_Agent or user_agent.)
Parameters: - resource_type (string) – The resource type to format.
- lower (boolean) – Return type in all lower case
Returns: The formatted resource type.
Return type: (string)
-
safetag
(tag, errors='strict')[source]¶ URL Encode and truncate tag to match limit (128 characters) of ThreatConnect API.
Parameters: tag (string) – The tag to be truncated Returns: The truncated tag Return type: (string)
-
safeurl
(url, errors='strict')[source]¶ URL encode value for safe HTTP request.
Parameters: url (string) – The string to URL Encode. Returns: The urlencoded string. Return type: (string)
-
session
¶ Return an instance of Requests Session configured for the ThreatConnect API.
-
to_string
(data, errors='strict')[source]¶ [Deprecated] Decode value using correct Python 2/3 method
Warning
This method is deprecated and will be removed in TcEx version 0.9.0.
Parameters: - data (any) – Data to ve validated and re-encoded
- errors (string) – What method to use when dealing with errors.
Returns: Return decoded data
Return type: (string)
-
utils
¶ Include the Utils module.
Note
Utils methods can be accessed using
tcex.utils.<method>
.
-


Ukraine's First Lady to lead school catering reform
As part of the plan, schools will be classified according to their financial level.
Olena Zelenska, Ukraine's First Lady, intends to focus her efforts primarily on reforming the school catering system, noting the poor quality of school meals and "terrible service".
In an interview with TSN.Tyzhden, she explained her intentions: "First, that's because I'm also a mother."
Having learned from the kids about certain issues, where, they say, cockroaches run over the plates, or some expired food is served, Olena Zelenska decided to find ways to improve school catering quality.
The First Lady admitted that she dreams of government financing of such services.
"We'd like to make classification of schools which the government will be helping in different ways. There are schools where there's absolutely nothing available. That is, there'll be more funding," said Olena Zelenska.
In addition, she notes that Ukrainian students actually support a low carb diet.
In this regard, Zelenska seeks to try on some foreign experience: "In some countries, children are given a glass of milk and made to drink it. And what if we have 'An Apple for a Kid' program? We have apples rotting in Western Ukraine as there's nowhere to sell them. There's a lot of them. Will this be okay with you?"
Students "vote" for free vitamins. They also offer to cultivate better nutrition habits in adults, because kids nowadays are already conscious about what they eat.
"Children understand everything, they want change. But, unfortunately, adults don't seem to think why cutlets with porridge are bad for everyday consumption. It may be alright on Monday, but on Tuesday, why won't we add some salad?" Zelenska notes.
Besides the reform, which the team have been preparing for six months, Olena Zelenska has other plans regarding children's healthcare and cultural diplomacy.
"I want to do something for the sake of gender equality and against ageism – I'm very interested in destroying barriers and allowing people's access to all services," says Zelenska.
The First Lady says all these areas require short-term and long-term projects.


--- layout: default ---
My ChatGPT assisted bio:
Dr. Moran is a seasoned professional with a passion for innovation and a track record of success in developing and deploying AI/ML for large, complex organisations. As a leader of teams developing AI/ML technologies, he has made several contributions to the field, including:
Currently he leads a team at JP Morgan Chase & Co. that is bringing innovative new anomaly detection capabilities to the firm.
Dr. Moran's expertise has been recognized by JP Morgan, where he was named the top inventor of the year in 2022. He has also extensively published patents and scientific papers.
Prior to joining JP Morgan, Dr. Moran served as a Senior Research Scientist at Huawei Technologies R&D and was a member of the Edinburgh University NLP group. His Ph.D in AI/ML was earned at the University of Edinburgh.
ECCV 2020 conference certificate (high quality reviews)
Awesome Papers on Learning to Hash: a living literature review of the field
Senatus AI: Software Development Re-invented
A device and method for image processing. An image processing device for transforming an image. Sean Moran et al (2021).
Image Processor. An image processing module configured to implement a multi-part trained artificial intelligence model. Sean Moran et al (2020).
Noise Estimation. Processing data derived from the image by means of a first trained model for detecting stochastic noise so as to form a first noise estimate;. Sean Moran et al (2020).
Image Processor. An image processor comprising a plurality of processing modules configured to operate in series to refine a raw image captured by a camera. Sean Moran et al (2020).
New!
An Unsupervised Method for Estimating Class Separability of Datasets with Application to LLMs Fine-Tuning
Najah Ghalyan, Kostis Gourgoulias, Yash Satsangi, Sean Moran, Maxime Labonne,
Joseph Sabelja. In Arxiv, 2023.
[ bibtex ]
New!
Spam-T5: Benchmarking Large Language Models for Few-Shot Email Spam Detection
Maxime Labonne, Sean Moran. In International Symposium on
Large Language Models for Financial Services (FinLLM 2023)@IJCAI, 2023.
[ bibtex ][ code ]
New!
A Benchmark Generative Probabilistic Model for Weak Supervised Learning
Georgios Papadopoulos, Fran Silavong, Sean Moran. In ECML PKDD, 2023.
[ bibtex ]
New! Lightweight Parameter Pruning for Energy-Efficient Deep Learning: A Binarized Gating Module Approach
Xiaoying Zhi, Varun Babbar, Pheobe Sun, Fran Silavong, Ruibo Shi, Sean Moran. In Arxiv, 2022.
[ bibtex ]
New! API-Miner: an API-to-API Specification Recommendation Engine
Sae Young Moon, Gregor Kerr, Fran Silavong, Sean Moran. In Arxiv, 2022.
[ bibtex ]
Towards Data Efficient and Robust Speech Representation Model Distillation
Pheobe Sun, Ruibo Shi, Ahmad Emami, Sean Moran. In NeurIPS ENLSP Workshop, 2022.
[ bibtex ]
Code Librarian: A Software Package Recommendation Engine
Lili Tao, Alexandru-Petre Cazan, Senad Ibraimoski and Sean Moran. In ICSE SEIP, 2023.
[ bibtex ]
Topical: Learning Repository Embeddings from Source Code using Attention
Agathe Lherondelle, Varun Babbar, Yash Satsangi, Fran Silavong, Shaltiel Eloul, Sean Moran. In Arxiv, 2022.
[ bibtex ]
Ledgit: A Service to Diagnose Illicit Addresses on Blockchain using Multi-Modal Unsupervised Learning
Xiaoying Zhi, Yash Satsangi, Sean Moran, Shaltiel Eloul. In CIKM, 2022.
[ poster ][ bibtex ]
Utility Preserving Biometric Information Anonymization
Bill Moriarty, Chun-Fu Chen, Shaohan Hu, Sean Moran, Marco Pistoia, Vincenzo. Piuri, Pierangela Samarati, In ESORICS, 2022.
[ bibtex ]
CV4Code: Sourcecode Understanding via Visual
Code Representations
Ruibo Shi, Lili Tao, Rohan Saphal, Fran Silavong, and Sean Moran. In ACCV, 2022.
[ poster ][ bibtex ] [ code ]
Enhancing Privacy against Inversion Attacks in Federated Learning by using
Mixing Gradients Strategies
Shaltiel Eloul, Fran Silavong, Sanket Kamthe, Antonios Georgiadis, Sean Moran. In Arxiv, 2022.
[ bibtex ]
Senatus: A Fast and Accurate Code-To-Code Recommendation Engine
Fran Silavong, Sean Moran, Antonios Georgiadis, Rohan Saphal, Robert Otter. In Mining Software Repositories (MSR) Conference, 2022.
[ bibtex ]
ST-FL: style transfer preprocessing in federated learning for COVID-19 segmentation.
Antonios Georgiadis, Varun Babbar, Fran Silavong, Sean Moran, Robert Otter. In SPIE Medical Imaging, 2022.
[ bibtex ] [ poster ]
Improving Streaming Cryptocurrency Transaction Classification via Biased Sampling and Graph Feedback.
Shaltiel Eloul, Sean Moran, Jacob Mendel. In ACSAC, 2021.
[ bibtex ]
Low light video Enhancement using Synthetic Data Produced with an Intermediate Domain Mapping.
Danai Triantafyllidou,Sean Moran, Steven McDonagh, Sarah Parisot, Gregory Slabaugh. In ECCV, 2020.
[ bibtex ] [ code ] [ supplementary ] [ 10 minute video ] [ 1 minute video ]
DeepLPF: Deep Local Parametric Filters For Image Enhancement.
Sean Moran, Pierre Marza, Steven McDonagh, Sarah Parisot, Gregory Slabaugh. In CVPR, 2020.
[ bibtex ] [ code ] [ supplementary ] [ poster ] [ slides ] [ 1 minute video ]
CURL: Neural Curve Layers for Global Image Enhancement.
Sean Moran, Steven McDonagh, Gregory Slabaugh. In ICPR, 2020.
[ bibtex ] [ talk (ICPR) ] [ talk (IADS) ] [ poster ] [ code ] [ video ] [ supplementary ]
NODE: Extreme Low Light Raw Image Denoising using a Noise Decomposition Network.
Hao Guan, Liu Liu, Sean Moran, Fenglong Song, Gregory Slabaugh. In Arxiv, 2019.
[ bibtex ]
A Novel Genomics-Based Platform for the Creation of Environmental-Responsive Gene Promoters.
Juan Manuel Iglesias, Ross M. Fraser, Sean Moran, Patricia del Rio, Katie Baker, Sinclair Cooper, Graham Whyteside, Nicolle Kippen, Polyxeni Katsoupi, Rinku Rajan, Jorge Yanez, Michael L. Roberts. In Molecular Therapy 2018.
[ Abstract ]
Learning to Hash for Computer Vision and Image Retrieval
Sean Moran. In Arxiv 2019.
Learning to Project and Binarise for Hashing Based Approximate Nearest Neighbour Search.
Sean Moran. In SIGIR, 2016.
[ bibtex ] [ poster ]
Enhancing First Story Detection using Word Embeddings.
Sean Moran, Richard McCreadie, Craig MacDonald, Iadh Ounis. In SIGIR, 2016.
[ bibtex ]
Learning to Hash for Large-Scale Image Retrieval.
Sean Moran (PhD thesis, 2015)
[ bibtex ]
Regularised Cross-Modal Hashing.
Sean Moran, Victor Lavrenko. In SIGIR, 2015.
[ bibtex ] [ poster ] [ code ] [ datasets ]
A Note on Automatic Kernel Carpentry for Atomistic Support of Continuum Stress
Manfred Ulz, Sean Moran. In Arxiv, 2015.
[ bibtex ]
Graph Regularised Hashing.
Sean Moran, Victor Lavrenko. In ECIR, 2015.
[ bibtex ] [ talk ] [ poster ] [ code ] [ datasets ]
A Sparse Kernel Relevance Model for Automatic Image Annotation.
Sean Moran, Victor Lavrenko. In IJMIR 2014 (Best Papers in Image Retrieval).
[ bibtex ] [ code ] [ datasets ]
Sparse Kernel Learning for Image Annotation.
Sean Moran, Victor Lavrenko. In ICMR 2014 (Oral) (Best Student Paper Winner).
[ bibtex ] [ talk ] [ code ] [ datasets ]
Real-Time Detection, Tracking and Monitoring of Discovered Events in Social Media.
Sean Moran et al. In ACL 2014 (Demo).
[ bibtex ]
Optimal Kernel Shape and Bandwidth for Atomistic Support of Continuum Stress.
Manfred Ulz, Sean Moran. In MSMSE 2013.
[ bibtex ]
Variable Bit Quantisation for LSH.
Sean Moran, Victor Lavrenko, Miles Osborne. In ACL 2013.
[ bibtex ] [ talk ][ code ] [ datasets ]
Neighbourhood Preserving Quantisation for LSH.
Sean Moran, Victor Lavrenko, Miles Osborne. In SIGIR 2013.
[ bibtex ] [ poster ] [ code ] [ datasets ]
A Gaussian mixture modelling approach to the data-driven estimation of atomistic support for continuum stress.
Manfred Ulz, Sean Moran. In MSMSE 2012.
[ bibtex ]
Optimal Tag Sets for Automatic Image Annotation.
Sean Moran, Victor Lavrenko. In BMVC 2011.
[ bibtex ] [ abstract ] [ talk ]
Linking Video Segments to Relevant Wikipedia Content
Victor Larevnko, Johanna Moore, Sean Moran (2010).
Automatic Image Tagging.
Sean Moran (MSc Disseration, 2009).
Video Inpainting (Overview)
Sean Moran (2009).
Using the Grid for Satellite Imagery with UNOSAT.
Sean Moran, Patricia Mendez Lorenzo. Internal UNOSAT-CERN report, 2005
Robust Fusion of Colour Appearance Models for Object Tracking.
Chris Town, Sean Moran. In BMVC 2004.
[ bibtex ]


PhoneGap
Connecting to Device
Device is Ready
loading...
loading...
loading...
loading...
loading...
loading...
loading...
loading...
loading...


Epicycle Drawing Tool
Degree: 0
<
>
Options
Display Points
Speed Draw
Center Camera on Tip
1.00x
0.10x
0.01x
Speed Multiplier
1x
10x
100x
Zoom Multiplier
Clear Points


Tmp
A simple temporary file and directory creator for node.js.
About
This is a widely used library to create temporary files and directories in a node.js environment.
Tmp offers both an asynchronous and a synchronous API. For all API calls, all the parameters are optional.
Tmp uses crypto for determining random file names, or, when using templates, a six letter random identifier. And just in case that you do not have that much entropy left on your system, Tmp will fall back to pseudo random numbers.
You can set whether you want to remove the temporary file on process exit or not, and the destination directory can also be set.
How to install
npm install tmp
Usage
Asynchronous file creation
Simple temporary file creation, the file will be closed and unlinked on process exit.
var tmp = require('tmp');
tmp.file(function _tempFileCreated(err, path, fd, cleanupCallback) {
if (err) throw err;
console.log("File: ", path);
console.log("Filedescriptor: ", fd);
// If we don't need the file anymore we could manually call the cleanupCallback
// But that is not necessary if we didn't pass the keep option because the library
// will clean after itself.
cleanupCallback();
});
Synchronous file creation
A synchronous version of the above.
var tmp = require('tmp');
var tmpobj = tmp.fileSync();
console.log("File: ", tmpobj.name);
console.log("Filedescriptor: ", tmpobj.fd);
// If we don't need the file anymore we could manually call the removeCallback
// But that is not necessary if we didn't pass the keep option because the library
// will clean after itself.
tmpobj.removeCallback();
Note that this might throw an exception if either the maximum limit of retries for creating a temporary name fails, or, in case that you do not have the permission to write to the directory where the temporary file should be created in.
Asynchronous directory creation
Simple temporary directory creation, it will be removed on process exit.
If the directory still contains items on process exit, then it won't be removed.
var tmp = require('tmp');
tmp.dir(function _tempDirCreated(err, path, cleanupCallback) {
if (err) throw err;
console.log("Dir: ", path);
// Manual cleanup
cleanupCallback();
});
If you want to cleanup the directory even when there are entries in it, then
you can pass the unsafeCleanup
option when creating it.
Synchronous directory creation
A synchronous version of the above.
var tmp = require('tmp');
var tmpobj = tmp.dirSync();
console.log("Dir: ", tmpobj.name);
// Manual cleanup
tmpobj.removeCallback();
Note that this might throw an exception if either the maximum limit of retries for creating a temporary name fails, or, in case that you do not have the permission to write to the directory where the temporary directory should be created in.
Asynchronous filename generation
It is possible with this library to generate a unique filename in the specified directory.
var tmp = require('tmp');
tmp.tmpName(function _tempNameGenerated(err, path) {
if (err) throw err;
console.log("Created temporary filename: ", path);
});
Synchronous filename generation
A synchronous version of the above.
var tmp = require('tmp');
var name = tmp.tmpNameSync();
console.log("Created temporary filename: ", name);
Advanced usage
Asynchronous file creation
Creates a file with mode 0644
, prefix will be prefix-
and postfix will be .txt
.
var tmp = require('tmp');
tmp.file({ mode: 0644, prefix: 'prefix-', postfix: '.txt' }, function _tempFileCreated(err, path, fd) {
if (err) throw err;
console.log("File: ", path);
console.log("Filedescriptor: ", fd);
});
Synchronous file creation
A synchronous version of the above.
var tmp = require('tmp');
var tmpobj = tmp.fileSync({ mode: 0644, prefix: 'prefix-', postfix: '.txt' });
console.log("File: ", tmpobj.name);
console.log("Filedescriptor: ", tmpobj.fd);
Controlling the Descriptor
As a side effect of creating a unique file tmp
gets a file descriptor that is
returned to the user as the fd
parameter. The descriptor may be used by the
application and is closed when the removeCallback
is invoked.
In some use cases the application does not need the descriptor, needs to close it without removing the file, or needs to remove the file without closing the descriptor. Two options control how the descriptor is managed:
discardDescriptor
- iftrue
causestmp
to close the descriptor after the file is created. In this case thefd
parameter is undefined.detachDescriptor
- iftrue
causestmp
to return the descriptor in thefd
parameter, but it is the application's responsibility to close it when it is no longer needed.
var tmp = require('tmp');
tmp.file({ discardDescriptor: true }, function _tempFileCreated(err, path, fd, cleanupCallback) {
if (err) throw err;
// fd will be undefined, allowing application to use fs.createReadStream(path)
// without holding an unused descriptor open.
});
var tmp = require('tmp');
tmp.file({ detachDescriptor: true }, function _tempFileCreated(err, path, fd, cleanupCallback) {
if (err) throw err;
cleanupCallback();
// Application can store data through fd here; the space used will automatically
// be reclaimed by the operating system when the descriptor is closed or program
// terminates.
});
Asynchronous directory creation
Creates a directory with mode 0755
, prefix will be myTmpDir_
.
var tmp = require('tmp');
tmp.dir({ mode: 0750, prefix: 'myTmpDir_' }, function _tempDirCreated(err, path) {
if (err) throw err;
console.log("Dir: ", path);
});
Synchronous directory creation
Again, a synchronous version of the above.
var tmp = require('tmp');
var tmpobj = tmp.dirSync({ mode: 0750, prefix: 'myTmpDir_' });
console.log("Dir: ", tmpobj.name);
mkstemp like, asynchronously
Creates a new temporary directory with mode 0700
and filename like /tmp/tmp-nk2J1u
.
var tmp = require('tmp');
tmp.dir({ template: '/tmp/tmp-XXXXXX' }, function _tempDirCreated(err, path) {
if (err) throw err;
console.log("Dir: ", path);
});
mkstemp like, synchronously
This will behave similarly to the asynchronous version.
var tmp = require('tmp');
var tmpobj = tmp.dirSync({ template: '/tmp/tmp-XXXXXX' });
console.log("Dir: ", tmpobj.name);
Asynchronous filename generation
The tmpName()
function accepts the prefix
, postfix
, dir
, etc. parameters also:
var tmp = require('tmp');
tmp.tmpName({ template: '/tmp/tmp-XXXXXX' }, function _tempNameGenerated(err, path) {
if (err) throw err;
console.log("Created temporary filename: ", path);
});
Synchronous filename generation
The tmpNameSync()
function works similarly to tmpName()
.
var tmp = require('tmp');
var tmpname = tmp.tmpNameSync({ template: '/tmp/tmp-XXXXXX' });
console.log("Created temporary filename: ", tmpname);
Graceful cleanup
One may want to cleanup the temporary files even when an uncaught exception
occurs. To enforce this, you can call the setGracefulCleanup()
method:
var tmp = require('tmp');
tmp.setGracefulCleanup();
Options
All options are optional :)
mode
: the file mode to create with, it fallbacks to0600
on file creation and0700
on directory creationprefix
: the optional prefix, fallbacks totmp-
if not providedpostfix
: the optional postfix, fallbacks to.tmp
on file creationtemplate
:mkstemp
like filename template, no defaultdir
: the optional temporary directory, fallbacks to system default (guesses from environment)tries
: how many times should the function try to get a unique filename before giving up, default3
keep
: signals that the temporary file or directory should not be deleted on exit, default isfalse
, means delete- Please keep in mind that it is recommended in this case to call the provided
cleanupCallback
function manually.
- Please keep in mind that it is recommended in this case to call the provided
unsafeCleanup
: recursively removes the created temporary directory, even when it's not empty. default isfalse


Ned,
You recently wrote a post on @steemitblog called “Steem Governance is multi-party.” First, let me start by saying thank you for engaging. I think it’s great for the community when you’re out here discussing things on the platform. However, in this case it’s hard to get on board with what you’re doing. I don’t completely agree with your direction and I’m not thrilled by the process by which you’re doing it.
Your basic pitch as I understand is that witnesses need to produce code review standards by which they will accept hardforks. That’s a fair ask, but you aren’t involving us as a community so much as telling us what we need to do. I feel like this would be better handled as a discussion and possibly public forum than simply telling us what our roles are or how our roles fit into your scheme. Code review is really just one part of a Witness job, and certainly not the whole thing. You make it seem like the whole thing.
In your scheme (the post image) witnesses don’t get to propose code? Is that not our function? What about design scope of new code to add? Should we have input into that? You’ve painted a very narrow box of what a witness does. I’m not dying to hop into that box as I think we provide more and have to provide more based on decisions Steemit made.
Discomforting start
The process you’re putting forward feels frustrating as I perceive this current push for witness hardfork adoption standards as a knee jerk reaction born out of the hard landing of HF20.
Just prior to HF20 Steemit asked all witnesses to adopt the hardfork in this post.
“After completing the audit, we are highly confident in this release, and we have recommended that the witnesses upgrade their nodes in preparation for the planned switchover tomorrow.”
Then when the implementation didn’t go well you stated in a comment:
“I began mentioning it much more strongly prior to the hardfork when some Witnesses began admitting they hadn’t read the release notes and some top 20 Witnesses only began testing two days prior to the proposed HF. Ask Lukestokes or Reggaemuffin who began prompting Witnesses for their published standards and when.
Going forward speaking loudly to the definitions of the contiuents of Steem governance and their roles, especially going into SMTs and other innovation, is absolutely critical. Without stoic Gatekeeping from our Witnesses, the governance is weak. Without Gatekeepers holding devs accountable to Gatekeeper’s standards, or more importantly, without standards, deliverables are under tested. Without Stakeholders of users and businesses holding Gatekeepers accountable, Gates remain low. We need to raise the Stakeholders voice and raise the Gates and raise the demands for optimal approach to development, which should show itself in aggregate of Witnesses’ standards. Personally as a stakeholder I want from this governance a robust combination of conservative process with consistent drive toward innovative development. There are certainly marked improvements to make here in the short term.”
At the time this statement felt a lot like “the hardfork didn’t go as planned because the witnesses didn’t do their work.” I agree with a lot of what you’re saying here, but the timing especially makes it feel like you’re blaming witnesses for the initial failures of HF20. This feels especially bizarre given the post the day before saying essentially “please trust us even though there was a bug. We need to move forward anyway.”
Was it a failure of witness standards?
It’s hard to stand up and shout “Yes, witness standards will fix all of this!!!” Limited activity on the chain was identified, a fix was made, and it still didn’t work. To me that’s just part of adjusting a living blockchain. We’re fixing a battleship while at warp. Shit’s gonna break and all fixes won’t work exactly as planned in the actual production environment. That said within 5 days we were backup and running with a much improved system. I’m skepitcal now that it’s actually possible to get it right on the first approach every time, but I have unshakable faith we’ll get it right after a little bit of iteration.
Ironically, the witness standards that you want, currently best exemplified by Tim’s Post, would have required we don’t push forward with HF20 which you were directly asking us to push forward. That is until it had been up and running and more stable on the test net first.
Which do you want? Launch on that exact date or holding back development of critical infrastructure until testing is better prepared as per witness standards? Those were mutually exclusive and you seem to be asking for both.
Testnet Challenges
Since the hardfork I’ve been logging into the testnet ever other day to check a very simple action. I refresh the page and try to vote on a post. Nothing happens. If I make a comment and then vote it works. It doesn’t appear that the testnet is working for the lowest cost and most common activity on the chain. I think the testnet, training around it, and culture regarding it needs a lot of improvement before we can look to it to save us from rough implementations of hardforks.
Roles
I’m actually really excited to have a discussion about what is the role of a witness. I’d also like to clarify what is the role of Steemit. While we’re at it we should try to work out what is the role of content creators, content consumers, and dapp creators. It’s a very important question and one that should allow us to better help one another if we coordinate and agree in principle.
What should we expect stakeholders do?
I don’t think this will go well if we tell you what your role is or you tell us what our role is. I don’t work for you. You don’t work for me. We’re here to serve this community. This has to be a voluntary arrangement where we all get to feel like our approach, process, and execution adds value to the Steem ecosystem. Your current approach feels like you’re dictating to me what my job is. I’m not comfortable with that.
I gleam from your public statement
“The Witnesses are the gatekeepers of the code. It is ultimately their decision whether code that is created by developers should be adopted and implemented in Steem. This is the role Witnesses are elected to serve…”
In this context it seems as though you’re saying my job is to be a code monkey. Review line by line the code and determine if it will work. My problem is the last line “This is the role Witnesses are elected to serve.” As phrased it feels like it narrows the role of Witness to just that where as in reality the scope of what the majority of the top 20 do is much larger.
My interpretation is further informed by this statement:
“We would expect that the standards governing the Witness’ own process for verifying code, and verifying that code process standards are met, would include information and documentation about each Witnesses’ code testing apparatus, or that employed by whomever performs their code review. We expect further that Witnesses who leverage their own apparatus for code review would be much more valuable to Steem than Witnesses who do not.”
Again, this is in line with we’re here to help you with code testing. I think the role of the witness starts even before that with designing what tweaks this chain needs to grow and succeed. We’re here to have a discussion with stakeholders to make sure their needs are met. Code review is certainly part of the process, but honestly it’s like step 6-7 and you seem to say it’s priority uno.
Steemit’s role?
Steemit seems to have structured themselves such that their role is specifically core blockchain code development. Sales, marketing, customer support, user experience, and other typical business operation don’t seem to be priorities. By your decision on company scope you’re putting other typical functions back on witnesses and the community as problems to solve. You’re both asking us to do more while also saying our role is just code reviewers.
If Steemit is here to deal with the silicon based machines you are then by default putting it on witnesses to interact with the carbon based life forms.
Despite some of my critisims here I actually really love the vision of Steem as a blockchain for Dapps. I took that to heart and started Steem Monsters with much of that in mind with one of my literal purposes being to try to lead by example and show what’s possible within that vision. I’m highly supportive of the vision, but I think some of the details and the process by which Steemit, Witnesses, and Stakeholders engage one another needs work.
When Steemit became a blockchain development company and narrowed it’s definition to that it informed how much time Witnesses have to devout to other aspects of running a decentralized autonomous organization. It’s not as simple as review code.
We have to alot time to manage servers especially during hardforks, review code while the system is in deep shit, manage the people or projects that helped us gain attention, help promote this place, help keep members engaged, help redesign the interface and provide additional interfaces. The list of how witnesses fill in is pretty extensive.
As a group we have a lot of roles to fill, so I question your assumption that every single person in this group has to be the code reviewer. There’s literally too much work to be done to be 20x redundant. In the four higher education technology/software companies I’ve worked for ranging from 5B/year to 1M/year in revenue devs have accounted for 10-20% of the staff. It’s not 100%.
 They can be great. They can also halt the chain. Being able to code doesn’t imply they are an ethical fit for the role. Simply doing code review seems less important than making sure the intent of the code is a good for Steem in the first place. Just because one can code doesn’t mean the code they develop will alleviate problems on the network. Code review feels on par with helping spread the Steem Ecosystem (sales/marketing) or helping current users have success (client success). It’s one of many functions this chain needs to grow, but again I don’t agree with the assertion that all witnesses need it.
Even if I did agree how many do that now? One? Two? The genius of Steem is that you don’t need a PhD in computer science to be a successful dapp developer here. Yes we need code review, but it’s not the only thing.
I’m ok having code review on the list. The idea that it’s “OUR ROLE” as if we’re here to simply make sure your code works feels incorrect and frankly insulting.
My number 1 hardfork review concern- public hearings
So, let me address your request of me. Namely what’s my code review process.
I think the most important part of accepting code is public review. I think Steemit leadership and devs should be in public answering questions about what the code is, how it works, what the intent is, and detailing the nuance.
Code is Law. Passing laws in a democracy requires a public hearing.
I want Steemit to have a public forum just like any other democratic process about the law they are proposing. Public hearings are critical to governance, and it’s something you and your company have avoided since I’ve been here.
Even in our distopian modern Democracy it would be unheard of for a lawmaker to propose and pass a law with literally zero public debate.
So, now what? My main ask is something Steemit has declined multiple times from me for about a year. How can you ask me to provide standards when the most basic request I have is ignored for over a year. How can we have a good review if we can’t understand the real intentions behind the choices made when coding?
I suppose I could be obstructionist, but I’m not sure that adds value… I want to support this project and Steemit, but I feel like you guys are avoiding a central piece of governance.
So, how we find a middle ground?
My requests
- Please don’t define the witness role. Invite me and other witnesses into a conversation about roles, and let’s do that as a community together. Once we have roles determined then let’s have a discussion if roles aren’t being fulfilled. Telling us our portion of governance is weak and failing without engaging us in a discussion of what our portion is feels more like lashing out than fixing problems.
- Sometimes your messaging seems to indicate mutually exclusive options. Please be mindful of that.
- You seem extremely introverted, and as a consequence so is the culture of your company. Please make a push to include public hearings and public discussions live on recorded voice and or video conversations a part of the standard operating plan for hardforks and code changes.
My next step
When I worked BASF, the world’s largest chemical company, I worked in a sustainable marketing division. While there I created a decision making guideline that I’ve used ever since. I’ll make a Witness version of this public in the coming week, and talk about how Code Review is an important part of a larger role of the Witness and how we as a team can meet our collective goal of witnesses of sustainably growing the Steem Ecosystems for all stakeholders.
Gratitude
Ned, this post is critical of your current approach, but very strongly appreciative of what you do and I’m stoked to see you engage publicly in the discussion. For that I give you high praise and look forward to working with you to establish some guidelines around roles of various stakeholders and figuring out how we can collaborate to push Steem forward.
This is my home. I love it here, and I’m happy to spend my days trying to help it grow. I’m looking forward to collaborating on it’s continuous improvement.
Sincerely,
Aggroed
AKA Dr. Blair Reich
Top 20 Witness
Founder of the Peace, Abundance, and Liberty Netowrk
Founder and Executive Director of the Minnow Support Project
Founder of MSP-Waves
Founder and CEO of Steem Monsters
This page is synchronized from the post: ‘To Ned, re:roles’


class: center, middle, inverse, title-slide # Visual Analytics - Design Contest ## Dataset: nasaweather ### Bala Kuppusamy, Minglan Ye, Jiamin Lei (Storm Chasers) ### 2019/03/25 --- name: domain-problem class: left, top # Domain Problem - Tropical cyclone paths & atmospheric measurements in the Atlantic Ocean, Caribbean Sea and Gulf of Mexico from 1995 to 2000. -- - Research Question & Domain Problem -- - Observe past hurricane patterns for year-over-year comparison and identify safe shipping routes based on time of the year. -- - As a shipping routes planner, user needs to track & forecast storm patterns during hurricane seasons to identify safe shipping routes. -- - User needs to analyze the correlation between atmospheric temperature, pressure & storm patterns, if any. --  --- name: data-operation class: left, top # Data / Operation Abstraction ```r head(nasaweather::storms, 3) ``` ``` ## # A tibble: 3 x 11 ## name year month day hour lat long pressure wind type seasday ## <chr> <int> <int> <int> <int> <dbl> <dbl> <int> <int> <chr> <int> ## 1 Allis~ 1995 6 3 0 17.4 -84.3 1005 30 Tropic~ 3 ## 2 Allis~ 1995 6 3 6 18.3 -84.9 1004 30 Tropic~ 3 ## 3 Allis~ 1995 6 3 12 19.3 -85.7 1003 35 Tropic~ 3 ``` -- - Data types - Geo-spatial, temporal, numerical & categorical -- - Identify storm season details for each year, & range of dates -- - Identify storm details - name, max severity, max wind speed, whether it was active on any particular day -- - Atmospheric temperature converted from Kelvin to Celcius -- - Filter atmospheric data for the focussed geographical zone, & get monthly averages of temperature & air pressure. --- name: interaction # Encoding / Interaction Design - Application to be responsive to user inputs and visually plot spatial information over map. -- - View overall storm patterns for the selected year and time period. Visually identify active storms at any point in time. -- - Track progress of storms on a daily basis & identify storm location & category. -- - Pinpoint individual storms in the map & gather details about them. -- - Visually compare year-over-year changes in storm wind speed & air pressure pattern. -- - Compare monthly atmospheric temperatures across years to understand correlation between temperature & storm patterns. --- name: dashboard # Visual Dashboard #### Libraries used - ggplot2, ggthemes, ggridges, dplyr, lubridate, sf, natural-earth map data -- - leaflet, plotly, datatable, formattable -- - shiny, shiny dashboard, shinythemes, xaringan, xaringan themes --  <= User reaction we hope to avoid!! :)  --
 https://balavigneswaran-kuppusamy.shinyapps.io/nasa/ --- name: next-steps #Next Steps / Future Work -- - Use predictive algorithms to understand the correlation between different atmospheric variables and predict storm paths for future storms. -- - Use additional data analysis techniques to explore the data and gain insights. -- - Use better visualization options to create more responsive & faster visualizations. --- name: thanks count: false class: center, middle # Thank You!


Runs PHPStan to find code problems.
The inspection requires PHPStan to be properly installed and set up in the IDE under
Settings | PHP | Quality Tools | PHPStan
.
To learn more about installing PHPStan, see:
https://phpstan.org/user-guide/getting-started


--- layout: post esbma_id: 1183 title: Law #1: The Law of Leadership date: 2004-06-01 14:52:05 keywords: law ---
(This entry is part of a series I am writing on The 22 Immutable Laws of Marketing.)
The Law of Leadership affirms the importance of being number one in a category. People usually know who the number one player is, but often cannot even name the number two. Tylenol is obviously the number one brand of acetaminophen. Who is number two?
Ries and Trout also claim that the first player to appear in a category usually ends up being the number one player. There are plenty of good examples of this. Chrysler brought us the first minivan and still leads the category. However, I think the authors overstate the importance of being first, especially in our field. There are just too many exceptions.
Anyway, the main point remains: There is a huge benefit to being number one in some category, even if you have to invent a whole new category. :-)


The Game A Film Review By Michael Redman Copyright 1997 Michael Redman
*** (Out of ****)
The challenge during this film is figuring out who are the players and exactly what is the game. Ever felt that someone out there is messing with your life and pulling the strings behind the scenes? Here there really is a "someone" behind the curtain who's controlling the seemingly accidental.
Nicholas Van Orton (Michael Douglas) is a successful but emotionally dead businessman who suddenly finds himself having a very weird day. Things happen out of his control, his life falls apart, he hooks up with a beautiful woman who leads him astray while pretending to be someone she isn't, people are out to get him, nothing is what it seems and everywhere he goes he sees strangers who are plotting against him.
And the amazing thing is that he paid for this! I know people leading this type of life and they get to do it for free.
Van Orton has taken over his father's business. He spends his day moving money around and his night pouring over business reports and watching financial news. His wife left him because he wasn't emotionally available. He lives alone in an enormous house alone with only a housekeeper for companionship and she leaves just as he's getting home. He's so detached from humanity that when someone wishes him "Happy Birthday", it's his secretary who responds "Thank you."
 It's his 48th: the same age his father was when young Nick watched him leap from the top of the house to his death. He works his father's business, lives in his father's house and now he's at the fateful age. Stoic Nicholas is becoming even more morose.
His younger brother Conrad (Sean Penn) shows up to liven up his life.  He's bought a session of "The Game" and urges Nicholas to play.
After undergoing a grueling several hour session of psychological and physical tests, he's in the game. The problem is that he doesn't know how it's played or even what it is. The only thing he's told is that it's like a vacation that comes to him.
Much like some computer games, it turns out that the objective of the game is to discover the objective of the game. Going about his everyday humdrum life, he finds objects -- keys, a handle -- that come in handy later. Minor incidents that seem random take on a new significance.
It's intriguing at first to Von Orton and then it all goes horribly wrong. Dangerous car wrecks, betrayals and deadly danger convince him that the game is just a scam to pull off a major crime with him as the victim.
The film reminds me of several others: the complacent businessman is awakened to real life by dangers. Michael Douglas' man in a suit in the midst of adventure is different than Harrison Ford's. Douglas' character that he's played in a few films is beaten to within an inch of his life and only hangs on through his tenacity.
This is definitely Douglas' film. He's on-screen almost the entire time and a lesser actor would be unable to pull it off. It's a credit to his skill that the audience is entranced during the entire film.
Director David Fincher is a mystery himself. His previous films were the two very different wonderfully crafted "Seven" and the wretchedly disappointing "Alien 3". This film only shows some resemblance to either of those. The long movie (aren't they all now days?) never drags and that's saying a lot.
Is this film realistic? Naw. There's no way that the "Mission Impossible" plans could be pulled off with the preciseness that they are. But it doesn't matter. Toss aside your disbelief and go along for the ride. It's worth it.
If there is a problem with the movie, and there is, it's that there is very little doubt how it will end. If you were allowed to think about it, what is going on is obvious. Luckily there isn't much time to think and the downfall of the film is only an afterthought.
I'm not sure I would recommend that people who perceive plots and conspiracies behind every door see the film. This just might convince them that they are right. And they're not. Or maybe I'm just lulling them into a false sense of security.
(Michael Redman has written this column for over 22 years. At least that's what he wants you to believe. Email your favorite paranoias to<EMAIL_ADDRESS>[This appeared in the 9/18/97 "Bloomington Voice", Bloomington, Indiana. Michael Redman can be contacted at<EMAIL_ADDRESS>]
--<EMAIL_ADDRESS>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


At Techbud Solutions here we offer a variety of services and these include majorly investments because thats what makes us Techbud Solutions. We started our group in 2016 when we were only 3 teens who were really hunting for money to change our lives. We started at trading with a capital of 300dollars each as we wea focusing on the Stock markets by then since it required the least amount of money by the time we had just started the Group.
We have been with a faithful group of members in that were with us since the beginnning of the company and have been grinding so hard to make a fortune also. In 2018 we recuite othe three members that were very good at real estate investments. These three members wea realted and all of them had the same dreams of becoming millionaires an dreams of owning real estate agencies.
But we didnt stop here since all of us had very big dreams that made us work even more and more harder in order to achieve success.
So in 2020 we started up the techbud academy that teaches people about all the investments that we have.


Man found dead in Fife hotel as cops seal off building
Officers rushed to Drummond’s Hotel in Balbirnie Street at around 10am today after the sudden death of the male.
by Lynn LoveA man has been found dead in a hotel in Fife .
Police were called to Drummond’s Hotel in Balbirnie Street at around 10am today after the discovery.
Detectives and forensics have been present outside the hotel for most of the day.
A cordon was put in place whilst an investigation was carried out.
Police have now confirmed they are treating the man's death as unexplained.
Inspector Rachael Burns of Glenrothes Police Station said: “Officers were called to an address on Balbirnie Street, Markinch on Wednesday, 20 November following the sudden death of a man.
“The death is being treated as unexplained and enquiries are ongoing.”


Assmebly: RequestXmlTest |
Class Index |
| Sample.RequestXmlTest |
Class Sample.RequestXmlTest |
Class Index |
Public Methods |
| Main(System.String[]) |
StreamReader
and then asks
XmlRpcRequestDeserializer.Parse
to deserialize it into an XmlRpcRequest
. The
resultant request is now displayed.
| WriteEntry(System.String,Nwc.XmlRpc.LogLevel) |
LoggerDelegate
compliant method that does logging to Console.
This method filters out the LogLevel.Information
chatter.


https://googleprojectzero.blogspot.com/2018/04/windows-exploitation-tricks-exploiting.html
https://googleprojectzero.blogspot.com/2015/08/windows-10hh-symbolic-link-mitigations.html
https://krbtgt.pw/dacl-permissions-overwrite-privilege-escalation-cve-2019-0841/
[SymbolicLink-Testing-Tools](https://github.com/googleprojectzero/symboliclink-testing-tools) | This is a small suite of tools to test various symbolic link types of Windows
CVE-2019-0841 (patched) | using hard-links to gain full control over (almost) any file


It is 'that' time of year again, when we emerge from the maelstrom that was the end of 2019. This article has been in the works for a fair while but we wanted to wait, see and respond to the developments of AMD, Intel and NVIDIA, the events in Q3/Q4 have led to significant revisions over the course of the last 6 to 8 or so weeks.


--- layout: default ---
If you would like to check the status of a series we work on. Head over to the Project Status page.
If you'd rather like to find out how you can support the group or our contact address head over to the Support page.
If you're looking for the Death Life links page then click here.
If you're looking for our email it can be found on the Support page.


t
y
k
k
i
/
e
t
c
h
i
e
A Web Developer based in Chicago, who specializes in interactive design. Focusing on creation & clean interfaces, I am currently Available for freelance & consultation work.


|
ArUco Unity
1.2.0
OpenCV's ArUco Marker Detection module adapted for Unity 5.
|
Describes a ChArUco board. More...
Inherits ArucoUnity.Objects.ArucoBoard.
Public Member Functions | |
| override Cv.Mat | Draw () |
| Returns the image of the ArUco object. In editor it should returns null and no exception if the object is incorrectly configured. More... | |
| override string | GenerateName () |
| Returns a generated name depending on the value of the properties. More... | |
Static Public Member Functions | |
| static int | GetArucoHashCode (int squaresNumberX, int squaresNumberY, float markerSideLength, float squareSideLength) |
| Computes the hash code of a ChAruco board. More... | |
Protected Member Functions | |
| override void | AdjustGameObjectScale () |
| Adjusts the scale to MarkerSideLength length. More... | |
| override void | UpdateArucoHashCode () |
| Updates the ArUco hash code of the object. More... | |
| override void | UpdateBoard () |
| Updates the Board properties. More... | |
| Protected Member Functions inherited from ArucoUnity.Objects.ArucoBoard | |
| override void | Awake () |
| Calls UpdateBoard. More... | |
| override void | UpdateProperties () |
| Calls ArucoObject.OnPropertyUpdated and calls UpdateBoard. More... | |
| Protected Member Functions inherited from ArucoUnity.Objects.ArucoObject | |
| virtual void | OnValidate () |
| Calls OnPropertyUpdated() in editor mode. More... | |
| void | OnPropertyUpdating () |
| Calls the event PropertyUpdating. More... | |
| void | OnPropertyUpdated () |
| Calls UpdateProperties and the PropertyUpdated event. More... | |
| int | GetInPixels (float propertyValue) |
| Returns a value as an int, with a conversion from meters to pixels if the property value is less than 10. More... | |
Properties | |
| int | SquaresNumberX [get, set] |
| Gets or sets the number of squares in the X direction. More... | |
| int | SquaresNumberY [get, set] |
| Gets or sets the number of squares in the Y direction. More... | |
| float | SquareSideLength [get, set] |
| Gets or sets the side length of each square. In pixels for Creators. In meters for Trackers and Calibrators. More... | |
| Std.VectorPoint2f | DetectedCorners [get, set] |
| Gets or sets the list of the detected marker by the tracker the last frame. More... | |
| Std.VectorInt | DetectedIds [get, set] |
| Gets or sets the list of the ids of the detected marker by the tracker the last frame. More... | |
| bool | ValidTransform [get, set] |
| Gets or sets if the transform of the board has been correctly estimated by the tracker the last frame. More... | |
| Properties inherited from ArucoUnity.Objects.ArucoBoard | |
| int | MarginsLength [get, set] |
| Gets or sets the length of the margins around the board in pixels, used by the Creators (default: 0). More... | |
| Vector2 | ImageSize [get, protected set] |
| Gets or sets the image size for drawing the board. More... | |
| Aruco.Board | Board [get, protected set] |
| Gets or sets the associated board from the ArucoUnity plugin library. More... | |
| float | AxisLength [get, protected set] |
| Gets or sets the length of the axis lines when drawn on the board. More... | |
| Cv.Vec3d | Rvec [get, set] |
| Gets or sets the estimated rotation vector of the board when tracked. More... | |
| Cv.Vec3d | Tvec [get, set] |
| Gets or sets the estimated translation vector of the board when tracked. More... | |
| Properties inherited from ArucoUnity.Objects.ArucoObject | |
| int | ArucoHashCode [get, protected set] |
| Aruco.Dictionary | Dictionary [get, set] |
| Gets or sets the dictionary to use. More... | |
| float | MarkerSideLength [get, set] |
| Gets or sets the side length of each marker. In pixels for Creators. In meters for Trackers and Calibrators. More... | |
| uint | MarkerBorderBits [get, set] |
| Gets or sets the number of bits in marker borders (default: 1). Used by Creators. More... | |
| bool | DisplayInEditor [get, set] |
Additional Inherited Members | |
| Protected Attributes inherited from ArucoUnity.Objects.ArucoObject | |
| const float | metersToPixels300ppp = 100f * 300f / 2.54f |
| Events inherited from ArucoUnity.Objects.ArucoObject | |
| Action< ArucoObject > | PropertyUpdating = delegate { } |
| Executed before a property is going to be updated. More... | |
| Action< ArucoObject > | PropertyUpdated = delegate { } |
| Executed after a property has been updated. More... | |
Describes a ChArUco board.
|
inlineprotectedvirtual |
Adjusts the scale to MarkerSideLength length.
Implements ArucoUnity.Objects.ArucoObject.
|
inlinevirtual |
Returns the image of the ArUco object. In editor it should returns null and no exception if the object is incorrectly configured.
Implements ArucoUnity.Objects.ArucoObject.
|
inlinevirtual |
Returns a generated name depending on the value of the properties.
Implements ArucoUnity.Objects.ArucoObject.
|
inlinestatic |
Computes the hash code of a ChAruco board.
| squaresNumberX | The number of squares in the X direction. |
| squaresNumberY | The number of squares in the Y direction. |
| markerSideLength | The side length of each marker. |
| squareSideLength | The side length of each square. |
|
inlineprotectedvirtual |
Updates the ArUco hash code of the object.
Implements ArucoUnity.Objects.ArucoObject.
|
inlineprotectedvirtual |
Updates the Board properties.
Implements ArucoUnity.Objects.ArucoBoard.
|
getset |
Gets or sets the list of the detected marker by the tracker the last frame.
|
getset |
Gets or sets the list of the ids of the detected marker by the tracker the last frame.
|
getset |
Gets or sets the side length of each square. In pixels for Creators. In meters for Trackers and Calibrators.
|
getset |
Gets or sets the number of squares in the X direction.
|
getset |
Gets or sets the number of squares in the Y direction.
|
getset |
Gets or sets if the transform of the board has been correctly estimated by the tracker the last frame.


Default behavior: When this FocusTrap mounts (and activates), the first element in its tab order receives focus.
When this FocusTrap mounts (and activates), focus jumps to a specific, manually specified element.
Also, the Escape key does not deactivate this trap: you have to click the button to deactivate.
Inspect this element and you'll see that is not the default plan div,
but rather a section tag with an id, a class, inline styles, and an
arbitrary data-
attribute.
Also, this FocusTrap activates and deactivates while staying mounted.
ALSO, when you click outside this FocusTrap, the trap deactivates and your click carries through.
Default behavior with a twist: When this FocusTrap activates, the first element in its tab order receives focus, but because of positive tabindex attributes the tab order is not the same as the source order.
Also, when you deactivate this FocusTrap, the focus will not be returned to the button that activated it.
The trap contains an input with the autofocus attribute.