4.3. Clustering¶
Clustering of unlabeled data can be performed with the module sklearn.cluster.
Each clustering algorithm comes in two variants: a class, that implements the fit method to learn the clusters on train data, and a function, that, given train data, returns an array of integer labels corresponding to the different clusters. For the class, the labels over the training data can be found in the labels_ attribute.
Input data
One important thing to note is that the algorithms implemented in this module take different kinds of matrix as input. On one hand, MeanShift and KMeans take data matrices of shape [n_samples, n_features]. These can be obtained from the classes in the sklearn.feature_extraction module. On the other hand, AffinityPropagation and SpectralClustering take similarity matrices of shape [n_samples, n_samples]. These can be obtained from the functions in the sklearn.metrics.pairwise module. In other words, MeanShift and KMeans work with points in a vector space, whereas AffinityPropagation and SpectralClustering can work with arbitrary objects, as long as a similarity measure exists for such objects.
4.3.1. K-means¶
The KMeans algorithm clusters data by trying to separate samples in n groups of equal variance, minimizing a criterion known as the ‘inertia’ of the groups. This algorithm requires the number of cluster to be specified. It scales well to large number of samples, however its results may be dependent on an initialisation. As a result, the computation is often done several times, with different initialisation of the centroids.
K-means is often referred to as Lloyd’s algorithm. After initialization, k-means consists of looping between two major steps. First the Voronoi diagram of the points is calculated using the current centroids. Each segment in the Voronoi diagram becomes a separate cluster. Secondly, the centroids are updated to the mean of each segment. The algorithm then repeats this until a stopping criteria is fulfilled. Usually, as in this implementation, the algorithm stops when the relative increment in the results between iterations is less than the given tolerance value.
K-means can be used for vector quantization. This is achieved using the transform method of a trained model of KMeans.
Examples:
- A demo of K-Means clustering on the handwritten digits data: Clustering handwritten digits
<IP_ADDRESS>. Mini Batch K-Means¶
The MiniBatchKMeans is a variant of the K-Means algorithm using mini-batches, random subset of the dataset, to compute the centroids.
Althought the MiniBatchKMeans converge faster than the KMeans version, the quality of the results, measured by the inertia, the sum of the distance of each points to the nearest centroid, is not as good as the KMeans algorithm.
Examples:
- A demo of the K Means clustering algorithm: Comparison of KMeans and MiniBatchKMeans
- Clustering text documents using MiniBatchKmeans: Document clustering using sparse MiniBatchKMeans
References:
- “Web Scale K-Means clustering” D. Sculley, Proceedings of the 19th international conference on World wide web (2010)
4.3.2. Affinity propagation¶
AffinityPropagation clusters data by diffusion in the similarity matrix. This algorithm automatically sets its numbers of cluster. It will have difficulties scaling to thousands of samples.
Examples:
- Demo of affinity propagation clustering algorithm: Affinity Propagation on a synthetic 2D datasets with 3 classes.
- Finding structure in the stock market Affinity Propagation on Financial time series to find groups of companies
4.3.3. Mean Shift¶
MeanShift clusters data by estimating blobs in a smooth density of points matrix. This algorithm automatically sets its numbers of cluster. It will have difficulties scaling to thousands of samples.
Examples:
- A demo of the mean-shift clustering algorithm: Mean Shift clustering on a synthetic 2D datasets with 3 classes.
4.3.4. Spectral clustering¶
SpectralClustering does a low-dimension embedding of the affinity matrix between samples, followed by a KMeans in the low dimensional space. It is especially efficient if the affinity matrix is sparse and the pyamg module is installed. SpectralClustering requires the number of clusters to be specified. It works well for a small number of clusters but is not advised when using many clusters.
For two clusters, it solves a convex relaxation of the normalised cuts problem on the similarity graph: cutting the graph in two so that the weight of the edges cut is small compared to the weights in of edges inside each cluster. This criteria is especially interesting when working on images: graph vertices are pixels, and edges of the similarity graph are a function of the gradient of the image.
Examples:
- Spectral clustering for image segmentation: Segmenting objects from a noisy background using spectral clustering.
- Segmenting the picture of Lena in regions: Spectral clustering to split the image of lena in regions.
References:
- “A Tutorial on Spectral Clustering” Ulrike von Luxburg, 2007
- “Normalized cuts and image segmentation” Jianbo Shi, Jitendra Malik, 2000
- “A Random Walks View of Spectral Segmentation” Marina Meila, Jianbo Shi, 2001
- “On Spectral Clustering: Analysis and an algorithm” Andrew Y. Ng, Michael I. Jordan, Yair Weiss, 2001
4.3.5. Hierarchical clustering¶
Hierarchical clustering is a general family of clustering algorithms that build nested clusters by merging them successively. This hierarchy of clusters represented as a tree (or dendrogram). The root of the tree is the unique cluster that gathers all the samples, the leaves being the clusters with only one sample. See the Wikipedia page for more details.
The Ward object performs a hierarchical clustering based on the Ward algorithm, that is a variance-minimizing approach. At each step, it minimizes the sum of squared differences within all clusters (inertia criterion).
This algorithm can scale to large number of samples when it is used jointly with an connectivity matrix, but can be computationally expensive when no connectivity constraints are added between samples: it considers at each step all the possible merges.
<IP_ADDRESS>. Adding connectivity constraints¶
An interesting aspect of the Ward object is that connectivity constraints can be added to this algorithm (only adjacent clusters can be merged together), through an connectivity matrix that defines for each sample the neighboring samples following a given structure of the data. For instance, in the swiss-roll example below, the connectivity constraints forbid the merging of points that are not adjacent on the swiss roll, and thus avoid forming clusters that extend across overlapping folds of the roll.
The connectivity constraints are imposed via an connectivity matrix: a scipy sparse matrix that has elements only at the intersection of a row and a column with indices of the dataset that should be connected. This matrix can be constructed from apriori information, for instance if you whish to cluster web pages, but only merging pages with a link pointing from one to another. It can also be learned from the data, for instance using sklearn.neighbors.kneighbors_graph to restrict merging to nearest neighbors as in the swiss roll example, or using sklearn.feature_extraction.image.grid_to_graph to enable only merging of neighboring pixels on an image, as in the Lena example.
Examples:
- A demo of structured Ward hierarchical clustering on Lena image: Ward clustering to split the image of lena in regions.
- Hierarchical clustering: structured vs unstructured ward: Example of Ward algorithm on a swiss-roll, comparison of structured approaches versus unstructured approaches.
- Feature agglomeration vs. univariate selection: Example of dimensionality reduction with feature agglomeration based on Ward hierarchical clustering.
4.3.6. DBSCAN¶
The DBSCAN algorithm clusters data by finding core points which have many neighbours within a given radius. After a core point is found, the cluster is expanded by adding its neighbours to the current cluster and recusively checking if any are core points. Formally, a point is considered a core point if it has more than min_points points which are of a similarity greater than the given threshold eps. This is shown in the figure below, where the color indicates cluster membership and large circles indicate core points found by the algorithm. Moreover, the algorithm can detect outliers, indicated by black points below.
Examples:
- Demo of DBSCAN clustering algorithm: Clustering synthetic data with DBSCAN
References:
- “A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases with Noise” Ester, M., H. P. Kriegel, J. Sander, and X. Xu, In Proceedings of the 2nd International Conference on Knowledge Discovery and Data Mining, Portland, OR, AAAI Press, pp. 226–231. 1996
4.3.7. Clustering performance evaluation¶
Evaluating the performance of a clustering algorithm is not as trivial as counting the number of errors or the precision and recall of a supervised classification algorithm. In particular any evaluation metric should not take the absolute values of the cluster labels into account but rather if this clustering define separations of the data similar to some ground truth set of classes or satisfying some assumption such that members belong to the same class are more similar that members of different classes according to some similarity metric.
<IP_ADDRESS>. Inertia¶
<IP_ADDRESS>.1. Presentation and usage¶
TODO: factorize inertia computation out of kmeans and then write me!
<IP_ADDRESS>.2. Advantages¶
- No need for the ground truth knowledge of the “real” classes.
<IP_ADDRESS>.3. Drawbacks¶
- Inertia makes the assumption that clusters are convex and isotropic which is not always the case especially of the clusters are manifolds with weird shapes: for instance inertia is a useless metrics to evaluate clustering algorithm that tries to identify nested circles on a 2D plane.
- Inertia is not a normalized metrics: we just know that lower values are better and bounded by zero. One potential solution would be to adjust inertia for random clustering (assuming the number of ground truth classes is known).
<IP_ADDRESS>. Ajusted Rand index¶
<IP_ADDRESS>.1. Presentation and usage¶
Given the knowledge of the ground truth class assignments labels_true and our clustering algorithm assignments of the same samples labels_pred, the adjusted Rand index is a function that measures the similarity of the two assignements, ignoring permutations and with chance normalization:
>>> from sklearn import metrics
>>> labels_true = [0, 0, 0, 1, 1, 1]
>>> labels_pred = [0, 0, 1, 1, 2, 2]
>>> metrics.adjusted_rand_score(labels_true, labels_pred)
0.24...
One can permute 0 and 1 in the predicted labels and rename 2 by 3 and get the same score:
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.adjusted_rand_score(labels_true, labels_pred)
0.24...
Furthermore, adjusted_rand_score is symmetric: swapping the argument does not change the score. It can thus be used as a consensus measure:
>>> metrics.adjusted_rand_score(labels_pred, labels_true)
0.24...
Perfect labeling is scored 1.0:
>>> labels_pred = labels_true[:]
>>> metrics.adjusted_rand_score(labels_true, labels_pred)
1.0
Bad (e.g. independent labelings) have negative or close to 0.0 scores:
>>> labels_true = [0, 1, 2, 0, 3, 4, 5, 1]
>>> labels_pred = [1, 1, 0, 0, 2, 2, 2, 2]
>>> metrics.adjusted_rand_score(labels_true, labels_pred)
-0.12...
<IP_ADDRESS>.2. Advantages¶
- Random (uniform) label assignements have a ARI score close to 0.0 for any value of n_clusters and n_samples (which is not the case for raw Rand index or the V-measure for instance).
- Bounded range [-1, 1]: negative values are bad (independent labelings), similar clusterings have a positve ARI, 1.0 is the perfect match score.
- No assumption is made on the cluster structure: can be used to compare clustering algorithms such as k-means which assumes isotropic blob shapes with results of spectral clustering algorithms which can find cluster with “folded” shapes.
<IP_ADDRESS>.3. Drawbacks¶
Contrary to inertia, ARI requires the knowlege of the ground truth classes while almost never available in practice or requires manual assignment by human annotators (as in the supervised learning setting).
However ARI can also be useful in purely unsupervised setting as a building block for a Consensus Index that can be used for clustering model selection (TODO).
Examples:
- Adjustment for chance in clustering performance evaluation: Analysis of the impact of the dataset size on the value of clustering measures for random assignements.
<IP_ADDRESS>.4. Mathematical formulation¶
If C is a ground truth class assignement and K the clustering, let us define and as:
- , the number of pairs of elements that are in the same set in C and in the same set in K
- , the number of pairs of elements that are in different sets in C and in different sets in K
The raw (unadjusted) Rand index is then given by:
Where is the total number of possible pairs in the dataset (without ordering).
However the RI score does not guarantee that random label assignements will get a value close to zero (esp. if the number of clusters is in the same order of magnitude as the number of samples).
To counter this effect we can discount the expected RI of random labelings by defining the adjusted Rand index as follows:
References
- Comparing Partitions L. Hubert and P. Arabie, Journal of Classification 1985
- Wikipedia entry for the adjusted Rand index
<IP_ADDRESS>. Homogeneity, completeness and V-measure¶
<IP_ADDRESS>.1. Presentation and usage¶
Given the knowledge of the ground truth class assignments of the samples, it is possible to define some intuitive metric using conditional entropy analysis.
In particular Rosenberg and Hirschberg (2007) define the following two desirable objectives for any cluster assignment:
- homogeneity: each cluster contains only members of a single class.
- completeness: all members of a given class are assigned to the same cluster.
We can turn those concept as scores homogeneity_score and completeness_score. Both are bounded below by 0.0 and above by 1.0 (higher is better):
>>> from sklearn import metrics
>>> labels_true = [0, 0, 0, 1, 1, 1]
>>> labels_pred = [0, 0, 1, 1, 2, 2]
>>> metrics.homogeneity_score(labels_true, labels_pred)
0.66...
>>> metrics.completeness_score(labels_true, labels_pred)
0.42...
Their harmonic mean called V-measure is computed by v_measure_score:
>>> metrics.v_measure_score(labels_true, labels_pred)
0.51...
All three metrics can be computed at once using homogeneity_completeness_v_measure as follows:
>>> metrics.homogeneity_completeness_v_measure(labels_true, labels_pred)
...
(0.66..., 0.42..., 0.51...)
The following clustering assignment is slighlty better, since it is homogeneous but not complete:
>>> labels_pred = [0, 0, 0, 1, 2, 2]
>>> metrics.homogeneity_completeness_v_measure(labels_true, labels_pred)
...
(1.0, 0.68..., 0.81...)
Note
v_measure_score is symmetric: it can be used to evaluate the agreement of two independent assignements on the same dataset.
This is not the case for completeness_score and homogeneity_score: both are bound by the relationship:
homogeneity_score(a, b) == completeness_score(b, a)
<IP_ADDRESS>.2. Advantages¶
- Bounded scores: 0.0 is as bad as it can be, 1.0 is a perfect score
- Intuitive interpretation: clustering with bad V-measure can be qualitatively analyzed in terms of homogeneity and completeness to better feel what ‘kind’ of mistakes is done by the assigmenent.
- No assumption is made on the cluster structure: can be used to compare clustering algorithms such as k-means which assumes isotropic blob shapes with results of spectral clustering algorithms which can find cluster with “folded” shapes.
<IP_ADDRESS>.3. Drawbacks¶
The previously introduced metrics are not normalized w.r.t. random labeling: this means that depending on the number of samples, clusters and ground truth classes, a completely random labeling will not always yield the same values for homogeneity, completeness and hence v-measure. In particular random labeling won’t yield zero scores especially when the number of clusters is large.
This problem can safely be ignored when the number of samples is more than a thousand and the number of clusters is less than 10. For smaller sample sizes or larger number of clusters it is safer to use an adjusted index such as the Adjusted Rand Index (ARI).
- These metrics require the knowlege of the ground truth classes while almost never available in practice or requires manual assignment by human annotators (as in the supervised learning setting).
Examples:
- Adjustment for chance in clustering performance evaluation: Analysis of the impact of the dataset size on the value of clustering measures for random assignements.
<IP_ADDRESS>.4. Mathematical formulation¶
Homogeneity and completeness scores are formally given by:
where is the conditional entropy of the classes given the cluster assignments and is given by:
and is the entropy of the classes and is given by:
with the total number of samples, and the number of samples respectively belonging to class and cluster , and finally the number of samples from class assigned to cluster .
The conditional entropy of clusters given class and the entropy of clusters are defined in a symmetric manner.
Rosenberg and Hirschberg further define V-measure as the harmonic mean of homogeneity and completeness:
References
- V-Measure: A conditional entropy-based external cluster evaluation measure Andrew Rosenberg and Julia Hirschberg, 2007


NDFileMagick inherits from NDPluginFile. This plugin saves data in any of the formats supported by the GraphicsMagick package. GraphicsMagick supports dozens of file formats, including TIFF, JPEG, PNG, PDF, and many others. GraphicsMagick automatically selects the output file format based on the extension of the file (.jpg=JPEG, .tif=TIFF, etc. The GraphicsMagick plugin should be able to write files in any format in the list of GraphicsMagick supported file formats that has a "W" or "RW" in the Mode column.
The GraphicsMagick library can either come from ADSupport or from a package installation. The maximum bit-depth of images in GraphicsMagick is configured at compile time using a parameter called QuantumDepth. The GraphicsMagick library in ADSupport is built with QuantumDepth=32, so it can handle 8, 16, and 32-bit images. Package installations may only support 8 or 16-bit images. This plugin supports color modes Mono and RGB1. NDFileMagick is limited to a single array per file, but capture and stream mode are supported by writing multiple files.
The GraphicsMagick plugin supports the Int32 parameter NDFileMagickCompressType to control the compression mode of the file. NDFileMagick.template defines 2 records to support this: $(P)$(R)CompressType (longout) and $(P)$(R)CompressType_RBV (longin). The following are the supported compression types:
No formats support all of these compression types. Many support only one, or have an implicit compression mode and so ignore the CompressType parameter.
The GraphicsMagick plugin supports two additional Int32 parameters. NDFileMagickQuality is used to control the image quality in some formats, for example JPEG. It can have values from 0 to 100%. NDFileMagickBitDepth controls the bit depth in some file formats. The choices are 1, 8, 16, and 32.
The following table lists the formats that I have tested to work on Linux, and comments on compression and quality they appear to support.
| File format | Notes |
|---|---|
| JPEG | Compression is implicit, CompressType has no effect. Quality is supported. |
| BMP | Compression and quality are not supported. |
| EPS | Compression and quality are not supported. |
| FITS | Color, compression and quality are not supported. |
| GIF | Selecting any CompresType except None results in a compressed image. Quality is not supported. |
| HTML | Produces .shtml, .html, and .gif files. |
| JBIG, JB2 | BZIP, RLE, and ZIP compression are supported. |
| BZIP, FAX, GROUP4, JPEG, LZW, RLE, and ZIP compression are supported. | |
| PNG | Compression is implicit, CompressType has no effect. |
| TIFF | JPEG, LZW and ZIP compression supported. ImageJ cannot open JPEG compressed images. ZIP compressed images open in ImageJ but data are incorrect. |
The NDFileMagick plugin is created with the NDFileMagickConfigure command, either from C/C++ or from the EPICS IOC shell.
NDFileMagickConfigure(const char *portName, int queueSize, int blockingCallbacks, const char *NDArrayPort, int NDArrayAddr, size_t maxMemory, int priority, int stackSize)
For details on the meaning of the parameters to this function refer to the detailed documentation on the NDFileMagickConfigure function in the NDFileMagick.cpp documentation and in the documentation for the constructor for the NDFileMagick class.


|
My Project
|
Set the current frame buffer. This will modify all subsequent draw commands in this list. More...
#include <frame_buffer_command.hpp>
Public Member Functions | |
| frame_buffer_command () | |
| ~frame_buffer_command () | |
| frame_buffer_command (const frame_buffer_command &rhs) | |
| frame_buffer_command & | operator= (const frame_buffer_command &rhs) |
| frame_buffer_command (frame_buffer_command &&rhs) noexcept | |
| frame_buffer_command & | operator= (frame_buffer_command &&rhs) noexcept |
| void | accept (graphics_visitor &visitor) override |
| Accept a graphics_visitor object. Invoke this command using the graphics_visitor. More... | |
| frame_buffer_command & | set_frame_buffer (frame_buffer_handle buffer) |
| Set the current frame buffer. More... | |
| Public Member Functions inherited from moka::graphics_command | |
| virtual | ~graphics_command ()=default |
Public Attributes | |
| frame_buffer_handle | buffer |
Set the current frame buffer. This will modify all subsequent draw commands in this list.
| moka::frame_buffer_command::frame_buffer_command | ( | ) |
| moka::frame_buffer_command::~frame_buffer_command | ( | ) |
| moka::frame_buffer_command::frame_buffer_command | ( | const frame_buffer_command & | rhs | ) |
|
noexcept |
|
overridevirtual |
Accept a graphics_visitor object. Invoke this command using the graphics_visitor.
| visitor | A graphics_visitor object. |
Implements moka::graphics_command.
| frame_buffer_command& moka::frame_buffer_command::operator= | ( | const frame_buffer_command & | rhs | ) |
|
noexcept |
| frame_buffer_command& moka::frame_buffer_command::set_frame_buffer | ( | frame_buffer_handle | buffer | ) |
Set the current frame buffer.
| buffer | Set the current frame buffer. |
| frame_buffer_handle moka::frame_buffer_command::buffer |
The current frame buffer you want to use.


FRIC menu
Event
Systems
Tasks
Subtasks
Findings
Archive
Configuration
Setup
Help
Event tree menu
(current)
Context view
(current)
Search
Add System
Title
Description
Location
Router
Switch
Room
Test Plan
Confidentiality:
Low
Medium
High
Information
Integrity:
Low
Medium
High
Information
Availability:
Low
Medium
High
Information
Submit
Cancel
Systems Overview
System
No. of Tasks
No. of Findings
Progress
Systems Detailed View
System Information
System Name:
System Description:
System Location:
System Router:
System Switch:
System Room:
Test Plan:
System Categorization
Confidentiality:
Low
Medium
High
Information
Integrity:
Low
Medium
High
Information
Availability:
Low
Medium
High
Information
Archive
Save
Cancel


Please download the Chrome Extension called Openload video only, it stops ads from playing before the video.
Watch The Fast and The Furious for free!
Watch Now!
Watch 2 Fast 2 Furious for free!
Watch The Fast and The Furious: Tokyo Drift for free!
Watch Fast and Furious 4 for free!
Watch Fast Five for free!
Watch Fast and Furious 6 for free!
Watch Furious 7 for free!
Watch The Fate of the Furious for free!


Roadside bomb kills 3 paramilitary troops in Pakistan
by The Associated PressQUETTA, Pakistan — A Pakistani provincial government minister says a roadside bomb has killed three paramilitary troops and wounded five in the country’s southwest overnight.
Zia Lango, home minister for Baluchistan province, says a remote-controlled bomb was placed in a motorcycle parked in the town of Kuchlak, a suburb of the provincial capital Quetta.
He told reporters early Saturday that the blast targeted a paramilitary Frontier Corps vehicle.
No one immediately claimed responsibility for Friday’s attack.
Baluchistan has long been the scene of a low-level insurgency by armed groups demanding more autonomy and a greater share in the region’s gas and mineral resources. Islamist militants also operate in the region.
On Oct. 30, a suicide bomber rammed his motorcycle into a police vehicle, killing one policeman in the town of Loralai in Balochistan.
The Associated Press


Scroll down and see the sticky element stick to the top of your screen.
{% capture example_code %}Duct tape or duck tape is cloth- or scrim-backed pressure-sensitive tape often coated with polyethylene. There are a variety of constructions using different backings and adhesives. One variation is gaffer tape designed to be cleanly removed, while duct tape is not. Another variation is heat-resistant duct tape useful for sealing heating/ventilation/air-conditioning (HVAC) ducts, produced because standard duct tape fails quickly when used on heating ducts. Duct tape is generally gray or black but also available in other colors.
During World War II, Revolite, then a division of Johnson & Johnson, developed an adhesive tape made from a rubber-based adhesive applied to a durable duck cloth backing. This tape resisted water and was used as sealing tape on ammunition cases during World War II.
I am a bottom element
Demo
Code
{% highlight html %} {{ example_code }} {% endhighlight %}


module Make:
S
.| Parameters: |
|
type ustring
Path.OfRope
it is Rope.t
and in Path.OfString
module it is string
.type uchar
ustring
type.module OperatorLift:{
..}
ustring
type.
type t=
list ustring
Examples: ["a";"b";"c"]
is c/b/a (relative path); ["d";"e";""]
stays for /e/d (absolute path).
All examples here and below are given for ustring
=string
case for clarity. To have the code working with other string types, one should prepend the !!
operator (BatPathGen.PathType.OperatorLift.(!!)
) to all string literals.
There are two infix operators provided to allow to write expressions in natural order. For example, to build a path using BatPathGen.PathType.Operators.(/:)
one can write:
base_dir/:"bar"
instead of "bar"::base_dir
However it may be sometimes inevitable to write components in reverse, for example:
let whose_readme = function "README"::app::"doc"::"share"::_ -> Some app | _ -> None
Windows: Windows absolute paths start with "\\" or with drive letter. Use following representation:
Path.root/:"."/:"pipe" = ["pipe";".";""]
for "\\.\pipe"["C:"]/:"foo" = ["foo";"C:"]
for "C:\foo"BatPathGen.PathType.default_validator
).let is_relative : t => bool
let is_absolute : t => bool
let root : t
[""]
). It is minimal absolute path. Below it is called 'empty'. However it yields "/" or "\\" when converted to a string.
Windows: This path (root and nothing more) is meaningless, but for simplicity it is considered valid here. To create absolute path starting with drive letter, construct the list explicitly (as in ["C:"]/:"foo"
).
A path consisting of drive letter only is also called 'empty' here.
let append : t => ustring => t
BatPathGen.PathType.Operators.(/:)
let concat : t => t => t
BatPathGen.PathType.Operators.(//@)
module Operators:{
..}
module Infix:{
..}
exception Malformed_path
let normalize_filepath : t => t
normalize ([".."]/:"foo"/:"."/:"bar"/:"sub1"/:".."/:"sub2") = [".."]/:"foo"/:"bar"/:"sub1"/:".."/:"sub2"
When a directory structure contains links, it can be not pefectly pure tree. Then meaing of the ".." symbol depends on the real nature of parent of what is denoted by the name that preceded the ".." symbol. This symbol cannot be resolved for a graph traversal case when dealing with abstract paths only.
Windows: If single dot is next to root, it is preserved.
let normalize_in_graph : t => t
normalize_filepath
.let normalize_in_tree : t => t
normalize ([".."]/:"foo"/:"."/:"bar"/:"sub1"/:".."/:"sub2") = [".."]/:"foo"/:"bar"/:"sub2"
This normalization is useful when dealing with paths that describe locations in a tree and the ".." symbol always points to the only parent of what precedes this symbol.
Windows: If single dot is next to root, it is preserved.
Raises Malformed_path
when absolute path is given that contains double dots that would be applied to the root.
let normalize : t => t
normalize_in_tree
let parent : t => t
parent (foo/:bar) = foo
Invalid_argument
if empty path (relative []
or absolute [""]
) is givenlet belongs : t => t => bool
belongs base sub
is true
when sub
descends from base
, i.e. base
is a prefix of sub
. If base
=sub
the function returns true
. It is otherwise false
.
Both arguments must be absolute paths or both relative.
If both arguments have a root portion with drive letter and these letters are different, belongs base sub
returns false.
Raises Invalid_argument
if exactly one of given arguments is absolute path
let relative_to_any : t => t => t
relative_to_any base sub
returns relative path rel
such that
normalize (base/:rel) = normalize sub
, i.e. common base is stripped and ".." are added if necessary.
Both arguments must be absolute paths or both relative.
This function normalizes base
and sub
before calculation of the relative path.
Windows: If base
and sub
are absolute, they must have the same root element: have the same drive letter or both starting with BatPathGen.PathType.root
(i.e. ""
is the last element of the list).
Exceptionally it is possible to get an absolute path as a result if drive letter is in sub
but not as a root element (e .g. base = root/:"bar"
and sub = root/:bar//@(["C:"]/:"foo"
).
Raises
Invalid_argument
if exactly one of given arguments is an absolute pathMalformed_path
if normalization fails (see BatPathGen.PathType.normalize
)relative_to_parent
may be sometimes more suitableexception Not_parent
let relative_to_parent : t => t => t
relative_to_parent parent sub
returns relative path rel
such that
(normalize parent)/:rel = normalize sub
. It is checked if sub
is really a descendant of parent
.
Both arguments must be absolute paths or both relative.
This function normalizes base
and sub
before calculation of the relative path.
Windows: Exceptionally it is possible to get an absolute path as a result if drive letter is in sub
but not as a root element (e .g. base = root/:"bar"
and sub = root/:bar//@(["C:"]/:"foo")
).
Raises
Not_parent
if sub
is not descendant of parent
Invalid_argument
if exactly one of given arguments is absolute pathMalformed_path
if normalization fails (see BatPathGen.PathType.normalize
)exception Illegal_char
BatPathGen.PathType.of_string
, BatPathGen.PathType.append
and BatPathGen.PathType.Operators.(/:)
when used validator finds illegal character.type validator=
ustring => bool
If a name should be rejected for some other reason, user defined validator may raise an exception.
let default_validator : Pervasives.ref validator
Windows: Invalid characters are *?:\/<> and all with code <32. Exception: the function BatPathGen.PathType.of_string
doesn't use validator against drive letter with colon.
let to_ustring : t => ustring
ustring
type. Empty relative path is converted to "." (single dot).
Windows: backslash is used as a separator and double backslash for root. If the path is only a drive letter (empty absolute path) trailing backslash is added (e.g. to_string ["C:"] = "C:\"
).
See also to_string
is likely to bo more useful
"
let to_string : t => string
to_ustring
function.let of_string : ustring => t
Path.default_validator
is applied to each resulting name.
Windows: both slashes '\' and '/' are accepted as separators. Paths of the 'semi-relative' form "C:foo\bar" are not recognized. For example "C:" string is parsed as ["C:"]
which has different meaning (see BatPathGen.PathType.to_string
).
Raises Illegal_char
when a character not allowed in paths is found.
let s : t => string
let p : ustring => t
[]
, [""]
or ["C:"]
.let name : t => ustring
name (foo/:bar) = bar
Invalid_argument
if empty path (relative []
or absolute [""]
) is givenlet map_name : (ustring => ustring) =>
t => t
map_name fu path
returns path
with the name replaced by fu (
BatPathGen.PathType.name
path)
.
Example: map_name (fun nn -> nn ^ ".backup") (["foo"]/:"bar") = ["foo"]/:"bar.backup"
BatPathGen.PathType.default_validator
is applied to new name.
Raises Illegal_char
(raised by validator if any bad character is found)
let ext : t => option ustring
ext ["aa.bb"] = Some "bb"
ext ["aa."] = Some ""
ext ["aa"] = None
ext [".hidden"] = Some "hidden"
(!)
Extension begins where the rightmost dot in the name is found. If the name ends with a dot, the extension is empty and Some ""
is returned. If there is no extension (no dot) the function returns None
.
Raises Invalid_argument
if empty path (relative []
or absolute [""]
) is given
let map_ext : (option ustring => option ustring) =>
t => t
map_ext fu path
returns path
but with the name with extension given by fu (
BatPathGen.PathType.ext
path)
. If fu
returns Some _
, the original extension may be replaced (when Some ext
is passed to fu
) or new added (when fu
gets None
). In case fu
returns None
, the extension is removed (if exists).Illegal_char
(raised by validator if any bad character is found)Invalid_argument
if empty path (relative []
or absolute [""]
) is givenlet name_core : t => ustring
Invalid_argument
if empty path (relative []
or absolute [""]
) is giventype components=
(t, ustring,
option ustring)
path
can be represented by the following triple:
(Path.parent path, Path.name_core path, Path.ext path)
let split : t => components
Resulting name_core
string can be empty. For example,
Path.split (Path.root/:"home"/:"user"/:".bashrc")
equals (Path.root/:"home"/:"user", "", Some "bashrc")
.
Raises Invalid_argument
if empty path (relative []
or absolute [""]
) is given
let join : components => t
Illegal_char
(raised by validator on any bad character)let map : (components => components) =>
t => t
Illegal_char
(raised by validator on any bad character)Invalid_argument
if empty path (relative []
or absolute [""]
) is givenlet drive_letter : t => option uchar
Windows: drive_letter abs
returns None
if abs
is simple absolute path (i.e. begins with a separator), otherwise the root element of abs
consists of a letter ch
with a colon - in this case Some ch
is returned.
Other systems: Returns None
on all absolute paths.
Raises Invalid_argument
if relative path is given


{% extends "base.html" %} {% block content %}
Certainly hope at least some of these were together as a team.


|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.drip.analytics.core.Serializer org.drip.calc.output.BondOutput
public class BondOutput
The class implements the place holder for a comprehensive suite of analytical bond measures. Contains bid/ask sides for price, yield, G spread, Z spread, I spread, spread to treasury benchmark, par asset swap spread, work out dates, work out factors, and credit basis
| Field Summary | |
|---|---|
double |
_dblAskAssetSwapSpread
Ask side asset swap spread |
double |
_dblAskCreditBasis
Ask side Credit Basis |
double |
_dblAskExerciseFactor
Ask side exercise factor |
double |
_dblAskGSpread
Ask side G Spread |
double |
_dblAskISpread
Ask side I Spread |
double |
_dblAskPrice
Ask side Price |
double |
_dblAskTSYSpread
Ask side Treasury Spread |
double |
_dblAskWorkoutDate
Ask side work-out date |
double |
_dblAskYield
Ask side Yield |
double |
_dblAskZSpread
Ask side Z Spread |
double |
_dblBidAssetSwapSpread
Bid side asset swap spread |
double |
_dblBidCreditBasis
Bid side Credit Basis |
double |
_dblBidExerciseFactor
Bid side exercise factor |
double |
_dblBidGSpread
Bid side G Spread |
double |
_dblBidISpread
Bid side I Spread |
double |
_dblBidPrice
Bid side Price |
double |
_dblBidTSYSpread
Bid side Treasury Spread |
double |
_dblBidWorkoutDate
Bid side work-out date |
double |
_dblBidYield
Bid side Yield |
double |
_dblBidZSpread
Bid side Z Spread |
double |
_dblCalcTime
Calculation Time |
| Fields inherited from class org.drip.analytics.core.Serializer |
|---|
NULL_SER_STRING, VERSION |
| Constructor Summary | |
|---|---|
BondOutput()
Creates an empty BondOutput |
|
BondOutput(byte[] ab)
BondOutput de-serialization from input byte array |
|
BondOutput(java.lang.String strBO)
Constructs the BondOutput object from the serialized string |
| Method Summary | |
|---|---|
static void |
main(java.lang.String[] astrArgs)
|
byte[] |
serialize()
Serialize into a byte array. |
java.lang.String |
toString()
|
| Methods inherited from class org.drip.analytics.core.Serializer |
|---|
getCollectionKeyValueDelimiter, getCollectionMultiLevelKeyDelimiter, getCollectionRecordDelimiter, getFieldDelimiter, getObjectTrailer |
| Methods inherited from class java.lang.Object |
|---|
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
public double _dblCalcTime
public double _dblBidPrice
public double _dblAskPrice
public double _dblBidYield
public double _dblAskYield
public double _dblBidZSpread
public double _dblAskZSpread
public double _dblBidGSpread
public double _dblAskGSpread
public double _dblBidISpread
public double _dblAskISpread
public double _dblBidTSYSpread
public double _dblAskTSYSpread
public double _dblBidCreditBasis
public double _dblAskCreditBasis
public double _dblBidWorkoutDate
public double _dblAskWorkoutDate
public double _dblBidExerciseFactor
public double _dblAskExerciseFactor
public double _dblBidAssetSwapSpread
public double _dblAskAssetSwapSpread
| Constructor Detail |
|---|
public BondOutput()
public BondOutput(java.lang.String strBO) throws java.lang.Exception
strBO
- The serialized string
java.lang.Exception
- Thrown if cannot construct the BondOutputpublic BondOutput(byte[] ab) throws java.lang.Exception
ab
- Byte Array
java.lang.Exception
- Thrown if BondOutput cannot be properly de-serialized| Method Detail |
|---|
public java.lang.String toString()
toString
in class java.lang.Object
public byte[] serialize()
Serializer
serialize
in class Serializer
public static void main(java.lang.String[] astrArgs) throws java.lang.Exception
java.lang.Exception
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


Beta This is a test version of the layout of this page. Take the survey to help us improve it
Official Statistics
These success rates are a measure of the quality of programmes run by providers in a particular academic year.
The Skills Funding Agency has also released the following data and documents supporting the 2012 to 2013 success rates reports.
The LARA Hierarchy file of leaning aims found in the 2012 to 2013 classroom learning reports.
LARA only holds the details of aims and frameworks that can be used in the 2011 to 2012 and 2012 to 2013 Individualised Learning Records. As success rates are produced for three years (2010 to 2011, 2011 to 2012 and 2012 to 2013) aims from the earliest year may not be present in the LARA Hierarchy file.
An extract of the SQL Code used to produce the 2012 to 2013 success rates datasets.
Guidance to the use and meaning of the 2012 to 2013 minimum standards reports for apprenticeships, classroom based learning and workplace learning.
To meet the Skills Funding Agency’s commitment to open data the tables are available in CSV format .


[§8-16.2] Mohandas Karamchand Gandhi Day. October 2 of each year shall be known and designated as "Mohandas Karamchand Gandhi Day"; provided that this day is not and shall not be construed to be a state holiday. [L 2015, c 5, §2]


For more information visit the Cloudy web site, www.nublado.org
The standard test cases that are computed every night in Lexington are the set of files with names ending in ".in". Each contains the commands needed to compute a particular model. When they are computed they produce output files with the same name but ending in ".out". Additional files are created too - these mostly results of all the assert commands, ending in ".asr", and overviews of the model results ".ovr".
The file doc_tsuite.htm gives a list of all test cases, the commands contained in each, and a description of its purpose. This file is automatically created by doc_tsuite.pl
The purpose of each test case is given in the documentation that follows the input commands. Cloudy stops reading input commands if the end of file or a blank line is encountered. Each *.in file begins with the commands, followed by the blank line to tell the code to stop reading, then followed by a description of the purpose of the test. This description is totally ignored - the command parser stops when it encounters the first empty line.
The first part of the name of many test scripts indicate its purpose. For instance, all PDR models start with "pdr_" and all quasar BLR models start with "blr_". The file class.txt contains a complete list of the classes of the tests.
The input scripts follow a particular order of commands although this is not necessary. The file template_scripts.txt describes the various groups of commands and gives the overall format for an input script. New scripts should follow this format.
Cloudy is designed to be autonomous and self-aware. The code uses extensive self-checking to insure that the results are valid. This philosophy is described in Ferland 2001, ASP Conference Series, Vol 247, Spectroscopic Challenges of Photoionized Plasmas, G Ferland & D Savin, editors (astro-ph/0210161).
Asserts provide the ability to automatically validate complex results. There are two types of asserts here - the first are a set of commands that are included in the input files and tell the code what answer to expect, and the second are C++ language macros that are part of the source and confirm the internal decisions made by the code.
All of the files in the test suite include assert commands. The assert command is described in the Miscellaneous Commands section of Hazy I, and provides the infrastructure needed for complete automatic testing of the code. This command tells the code what answer to expect. If the computed results do not agree then the code prints a standard comment and exits with an error condition. These assert commands have nothing to do with the simulation itself, and would not be included in an actual calculation. You should ignore them, or even delete all of them (a Perl script, tests_remove_asserts.pl, is provided is provided as part of the test suite to do this).
The source code also includes many C++ assert macros that are designed to validate the code's internal decisions. The assert macro only exists if the NDEBUG macro is not set when the code is compiled. (If the NDEBUG macro is set then assert macros within the source are ignored by the compiler.) The test cases should be run at least once with the assert macro active, that is, do not include a compiler option to define the NDEBUG macro. In most compilers the NDEBUG macro is set when compiler optimization is set to a high level. In practice this means that the entire code should be compiled with only low optimization and the tests computed to validate the platform. Then recompile with higher optimization for production runs, and recompute the test cases.
When executed as a stand-alone program the code expects to read commands from
standard input and write results to standard output. I compute single models by defining a shell script called "run".
It contains the following line
cloudy.exe < $1.in > $1.out
The Cloudy commands needed to compute a model are placed in a text file with a name
like "orion.in
", indicating that it
is the input file to compute a model of Orion. Then the shell command line
run orion
will read the contents of orion.in, compute the model, and write the results out to orion.out.
The test suite includes a series of Perl scripts that compute all test cases and then check for errors. These provide an automatic way to validate the code.
Each Perl script will need to be changed before it can be used since it needs to know the names of directories where files are located, and how to find the Cloudy executable. Each script explains which variables need to be set for the script to run.
Perl comments start with a sharp sign "#" and end with the end of
line.
Perl variable names begin with a dollar sign "$".
A Perl script is executed by typing perl
followed by the name of the script, as in perl runall.pl
The runall.pl script will compute all the models, the files *.in, in the current directory. You need to change the variable $exe to point to the Cloudy executable on your system and the script must be executed from the directory where the tests suite is located.
This script searches for problems in all of the test cases (the *.out files) in the current directory. It first looks for botched asserts and warnings. These indicate very serious problems. A list of any models with these problems is placed in the file serious.txt. Next it whether the string PROBLEM was printed in any of the models, and writes a list of these to the file minor.txt. A few of these can occur in a normal series of models and they do not, by themselves, indicate a serious problem. Finally it looks for all models that did not end..
This script will rerun all models that had botched asserts. This is mostly used while developing the code.
This script was written by Peter van Hoof and will run the test suite using a number of processors. The beginning of the script says how to use it.
This script will rerun all models that crashed - the did not end at all. This is mostly used while developing the code.
This script will rerun some of the models - those listed in runsome.dat.
This backs up some files onto a CDRW and sends email announcing results.
This script creates two files that document the test suite. The file doc_tsuite.html is an html representation of the set of tests, while doc_tsuite.txt is a comma delimited table that can be incorporated into a word processor.
Cloudy should run on all platforms without errors. Botched asserts or outright crashes should never happen. I can't fix it if I don't know it's broken. Please let me know of any problems. My email address is<EMAIL_ADDRESS>Visit http://www.nublado.org for details and latest updates.
Good luck,
Gary J. Ferland
April 20, 2008


The Coin Dragon TNG Wallet Add Value Service as described herein (“this Service”) is solely operated and managed by Coin Dragon Limited (“Coin Dragon” or “we”, and “our” and “us” shall be construed accordingly).
TNG (Asia) Limited (“TNG Wallet”) shall have no liability to you (being user of this Service) or any other person in respect of this Service and you shall have no claim whatsoever against TNG Wallet in respect of this Service.
Coin Dragon adds value of your coins as deposited less a processing fee of 10% on such value, with the net add value amount rounded up to the nearest HKD 0.1, to your TNG Wallet. The processing fee rate is determined and charged by Coin Dragon, not TNG Wallet. Minimum coin deposit value = HKD 1.0.
Coin Dragon charges the processing fee to cover our costs of operations. You have the right to decline this Service by pressing ‘Start Over’ before proceeding to deposit any coins into the kiosk.
Only HKD coins are accepted for thisService. If you deposit any items other than HKD coins, for example, counterfeit coins, foreign coins or foreign objects, into the kiosk, Coin Dragon shall have no responsibility to return these items to you or to procee dwith any add value transaction.
You will be prompted to tap your TNG Wallet onto the screen as indicated for adding value to it once the kiosk has finished counting your coins. The TNG Wallet add value shown is net of the processing fee.
Make sure your TNG Wallet has enough remaining capacity for adding value, otherwise, you may opt for Coin Dragon’s alternative conversion options.
The Coin Dragon team takes user privacy very seriously. Any of your personal information provided by you for this Service is used only for the purpose and intent of delivering you your coins’value according to the coins conversion option(s) you choose. We do not share this information with TNG Wallet or any other third parties or use it for anyother purposes. Our data transmission is used over SSL-encryption connectivity to maximize our data integrity and security.
By using this Service, you are deemed to have read, accepted and agreed to be bound by these terms of use. In the event of any inconsistency between the English version and the Chinese version of these terms of use, the English version shall prevail.


#nhswifi2015
survey of WiFi access for NHS staff
@marcus_baw
Locum General Hacktitioner, North West UK
Director, @openGPSoC & BawMedical
eHealth, Dermatology, Prison, Hospice
Medical Director, @NeovaHealth
Previous Life #1: Emergency Physician
Previous Life #2: Anaesthetist
2013
http://bit.ly/1xG4Dhy
in places where WiFi was present, local clinicians assumed
everybody
had similar levels of WiFi access
conversely, where WiFi was absent, clinicians assumed
nobody
had WiFi
nobody actually had a picture of WiFi access across the whole NHS
2013
John Popham - Patient WiFi
2013 results
"Which of the following best describes Staff access to WiFi at your place of NHS work?"
My organisation has a free WiFi network and I have the password 20.30%
My organisation has a free WiFi network but I do not have the password 20.18%
My place of work has installed its own free WiFi outside of NHS provision 2.63%
WiFi service that is not free (eg Commercial Provider) 3.76%
No WiFi - there are no WiFi networks at all 36.22%
EduRoam academic network 1.38%
The "12%"
12.16% responded 'Other'
A large proportion of these were along the lines of
"There is WiFi for managers and IT staff only"
:-(
Why do clinicians need WiFi anyway?
(aren't you meant to be working?)
knowledge resources at the point of care
anecdotally
better decision making
based on better evidence and latest guidance
better information for patients
most up-to-date information is internet based...
searchable... comparable... reviewed...
carrying a load of books around is increasingly infeasible
"Were there none who were discontented with what they have, the world would never reach anything better"
Florence Nightingale,
Cassandra
, 1860
"The reasonable man adapts himself to the world:
the unreasonable one persists in trying to adapt the world to himself...
Therefore all progress depends on the unreasonable man"
George Bernard Shaw,
Maxims for Revolutionaries
, 1903
Why isn't he talking about mobile access to EHRs, test results, radiology?
it's a whole other can of worms
issues with interfacing with EHRs
vendor-specific complications & obstinacy
Information Governance, security, device lockdown, authentication
let's leave that for another day shall we...
Medical School iPads
Numerous medical schools (Manchester, Leicester, Dartmouth) are providing iPads to all medical students
http://bit.ly/1wU0RBh
2013 survey impact
turns out...
HSCIC & NHS England don't actually have any of this information
but they were interested to hear about it
presented findings to Jonathan Kay, Clinical Informatics Director, NHS England
presented last year at Skunkworks, NHS England
2014
repeated the survey
supported by e-Health Insider
same basic idea, questions tweaked slightly
2014
LimeSurvey-powered (open source self hosted survey engine)
Sept-Oct 2014 about 500 respondents
survey design had to compromise between simplicity and perfection of data
Can you access WiFi in
your place of NHS work?
2013 YES 28.07%
(sum of all 'yeswifi' answers incl non-free etc)
2014 YES 51.24%
'YesWiFi' subgroup
I can connect to WiFi with my own device (BYOD) 61.13%
I can connect to WiFi with a work-provided device 53.04%
WiFi requires login on a web page after device connects to WiFi network 42.91%
I have access to EduRoam, the academic WiFi network 5.67%
WiFi is provided by a commercial service 22.67%
WiFi access is free 77.33%
WiFi access works in most areas of my workplace that I need it to 52.63%
'NoWiFi' subgroup
WiFi access is only for work devices and I haven't been provided with one 52.36%
WiFi isn't required - internet and clinical record access via Desktop PCs is sufficient 10.85%
There are no WiFi networks at all 28.77%
There is a good mobile data signal (ie 3G, 4G) in my place of work 11.79%
Summary
Definite improvement over last year's results
Still only 50% of clinical staff have access though
Still a lot of comments that WiFi is available but only for IT staff/Managers (and in one commment the cleaners - ?hyperbole) but not Clinical staff.
Even where WiFi is present,
30% is non-free
And only 50% reported it was everywhere it is needed
My Messages
WiFi is not a toy, clinicians need it to work smarter and safer
Not providing WiFi for your clinicians is like having no hospital Library
Allow BYOD. You
trust
clinicians to treat patients don't you?
If you want to provide Trust hardware, fine, just don't make this a roadblock
Landing page logins
significantly
reduce usability
2015
Survey is running again!
http://bit.ly/nhswifi2015
Links & Thanks
www.opengpsoc.org
www.handihealth.org
www.nhshackday.org
Reveal.js presentation framework
https://github.com/hakimel/reveal.js


The NAMM Foundation supports grants and scholarships initiatives and music making and music research related projects. Scholarships include the NAMM President's Innovation Award and the William R. Gard Scholarship. Music Making Program Grants are reviewed by invitation annually.


CreateSpline()
语法
Result = CreateSpline(#Spline)概要
Creates a new spline. A spline doesn't exist physically in the 3D world, it is an virtual object which can be used for different purpose, like path-finding, smooth node moving (be sure to check NodeAnimation library for this as well) and more. To calculate the position of an intermediate point, see ComputeSpline().
参数
#Spline The number to identify the new spline. #PB_Any can be used to auto-generate this number.
返回值
Returns zero if the spline can't be created. If #PB_Any is used as '#Spline' parameter, the new spline number is returned.
参阅
FreeSpline(), ComputeSpline()
已支持操作系统
所有


---
layout: post
title: 3/20
date: '2013-03-20T19:49:00.001-06:00'
author: Jacob .
tags:
modified_time: '2013-03-20T21:54:54.284-06:00'
blogger_id: tag:blogger.com,1999:blog-6400085873105072120.post-4002394325634796662
blogger_orig_url: http://www.svlark.com/2013/03/320.html
---
I have really been struggling to keep up my daily accountability to the blog. I'll get back on the horse...
But anyway. Audrey continues to make great progress on TYCTRI100L. She blew through lesson 82 this evening.
We've gotten Mike and Alisa through the Marquesas and into the Tuamotus. He's a really good writer. Really interesting new posts from him recently on thelifegalactic.blogspot.com.
229.3


Put your flickr URLs here (one per line)
Do the thing
Clear the thing
Image preferred size:
(Use 0 for largest available size)
Emit bbcode
Your HTML will be emitted here
Ignore anything below this line


{% extends "base.html" %} {% block head_title %}Terms of Service {{ block.super }}{% endblock %} {% block body_class %}tos{% endblock %} {% block content %}
Our full privacy policy is available on the Lincoln Loop website. A few notes specific to BotBot.me:


| Finite
Geometry Notes
|
The Miracle Octad Generator
(MOG) of R T. Curtis
Shown above is a rearranged version of the
Miracle Octad Generator (MOG) of R. T. Curtis
("A new combinatorial approach to M24,"
Math. Proc. Camb. Phil. Soc., 79 (1976), 25-42.)
"The close relationships between
group theory
and structural combinatorics go back well over a century. Given a
combinatorial
object, it is natural to consider its automorphism group. Conversely,
given a group,
there may be a nice object upon which it acts. If the group is given as
a group of
permutations of some set, it is natural to try to regard the elements
of that set as
the points of some structure which can be at least partially
visualized.
For example, in 1861 Mathieu... discovered five multiply transitive
permutation groups. These were constructed as groups of permutations of
11, 12, 22, 23 or 24 points, by means of detailed calculations. In a little-known
1931 paper of Carmichael [5], they were
first observed to
be automorphism groups of exquisite finite geometries. This fact was
rediscovered soon
afterwards by Witt [11], who provided direct
constructions for
the groups
and then the geometries. It is now more customary to construct first
the
designs, and then the groups...."5. R. D. Carmichael, Tactical configurations of rank two, Amer. J. Math. 53 (1931), 217-240.-- William M. Kantor, book review (pdf), Bulletin of the American Mathematical Society, September 1981 |
Excerpt from Chapter III, "The Affine Group in the Plane"--
"The system of definitions and theorems which expose properties invariant under a given group of transformations may be called, in agreement with the point of view expounded in Klein's Erlangen Programm,* a geometry. Obviously, all the theorems of the geometry corresponding to a given group continue to be theorems in the geometry corresponding to any subgroup of the given group; and the more restricted the group, the more figures will be distinct relatively to it, and the more theorems will appear in the geometry. The extreme case is the group corresponding to the identity, the geometry of which is too large to be of consequence.
For our purposes we restrict attention to groups of projective collineations,** and in order to get a more exact classification of theorems we narrow the Kleinian definition by assigning to the geometry corresponding to a given group only the theory of those properties which, while invariant under this group, are not invariant under any other group of projective collineations containing it. This will render the question definite as to whether a given theorem belongs to a given geometry.
Perhaps the simplest example of a subgroup of the projective group in a plane is the set of all projective collineations which leave a line of the plane invariant. The present chapter is concerned chiefly with the geometry belonging to this group."
* Cf. F. Klein, Vergleichende Betractungen uber neue geometrische Forschungen, Erlangen 1872; also in Mathematische Annalen, Vol. XLIII (1893), p. 63
** From some points of view it would have been desirable to include also all projective groups containing correlations.
The MOG may be regarded as summarizing a geometric structure featuring 759 eight-sets ("octads") in a "space" of 24 points. The set of 759 octads is left invariant by the transformations of the large Mathieu group M24. A subgroup, the octad stabilizer, leaves an octad invariant (as a set, though not pointwise). It so happens that the octad stabilizer, which may be viewed as acting separately on the stabilized octad and on the set of the remaining 16 points of the 24, is isomorphic to the automorphism group of the affine 4-space over the 2-element field. (In fact, the two parts of this group's action illustrate the isomorphism of the alternating group on eight elements with the general linear group acting on the 4-space over the 2-element field; the stabilized octad is left fixed pointwise by the translations of the affine 4-space.) A standard theorem of projective geometry says that we may adjoin to an affine n-space an (n-1)-dimensional projective "hyperplane at infinity" to obtain a projective n-space. The group of the geometry of the affine n-space is the subgroup of the group of the projective n-space leaving the "hyperplane at infinity" invariant (as a set, not pointwise), as in Veblen's discussion above. One might argue that a stabilized octad in the Mathieu geometry plays a role in some way analogous to that of a "hyperplane at infinity."
|
A 1987 article by R. T. Curtis on the geometry of his Miracle Octad Generator (MOG) as it relates to the geometry of the 4x4 square is now available online: Further elementary techniques using the miracle octad generator, by R. T. Curtis. Abstract: "In this paper we describe various techniques, some of which are already used by devotees of the art, which relate certain maximal subgroups of the Mathieu group M24, as seen in the MOG, to matrix groups over finite fields. We hope to bring out the wealth of algebraic structure* underlying the device and to enable the reader to move freely between these matrices and permutations. Perhaps the MOG was mis-named as simply an 'octad generator'; in this paper we intend to show that it is in reality a natural diagram of the binary Golay code." (Received July 20 1987) (Published online by Cambridge University Press 19 Dec 2008.) In the above article, Curtis explains how two-thirds of his 4x6 MOG array may be viewed as the 4x4 model of the four-dimensional affine space over GF(2). (His earlier 1974 paper (below) defining the MOG discussed the 4x4 structure in a purely combinatorial, not geometric, way.) For further details, see Geometry of the 4x4 Square and Curtis's original 1974 article, which is now also available online: A new combinatorial approach to M24, by R. T. Curtis. Abstract: "In this paper, we define M24 from scratch as the subgroup of S24 preserving a Steiner system S(5, 8, 24). The Steiner system is produced and proved to be unique and the group emerges naturally with many of its properties apparent." (Received June 15 1974) -- Mathematical Proceedings of the Cambridge Philosophical Society (1976), 79: 25-42, doi:10.1017/S0305004100052075.(Published online by Cambridge University Press 24 Oct 2008.) |
| Adapted (for HTML) from the
opening
paragraphs of the above paper on Steiner systems by Jonsson-- "[A]... uniqueness proof is offered here based upon a detailed knowledge of the geometric aspects of the elementary abelian group of order 16 together with a knowledge of the geometries associated with certain subgroups of its automorphism group. This construction was motivated by a question posed by D.R. Hughes and by the discussion Edge [5] (see also Conwell [4]) gives of certain isomorphisms between classical groups, namely where A8 is the alternating group on eight symbols, S6 the symmetric group on six symbols, Sp(4,2) and PSp(4,2) the symplectic and projective symplectic groups in four variables over the field GF(2) of two elements, [and] PGL, PSL and SL are the projective linear, projective special linear and special linear groups (see for example [7], Kapitel II). The symplectic group PSp(4,2) is the group of collineations of the three dimensional projective space PG(3,2) over GF(2) which commute with a fixed null polarity tau...." References 4. Conwell, George M.: The three space PG(3,2) and its group. Ann. of Math. (2) 11, 60-76 (1910). 5. Edge, W.L.: The geometry of the linear fractional group LF(4,2). Proc. London Math. Soc. (3) 4, 317-342 (1954). 7. Huppert, B.: Endliche Gruppen I. Berlin-Heidelberg-New York: Springer 1967. |


{% extends "core/base.html" %} {% load i18n %} {% block content %} {% trans "Referral received" %} {% blocktrans %}Your referral was recorded. It will now be dispatched to the relevant department.{% endblocktrans %} {% endblock content %}
{% blocktrans %}Your referral was recorded. It will now be dispatched to the relevant department.{% endblocktrans %}


1.Is there any other fees after joining?
When member suffers an accidental death, all participated member need to contribute the mutual assistance fund evenly. The mutual assistance fund will deduct from the account, and it is important to ensure there is sufficient balance. If the balance is less than 10 GETX, the member will force to exit the project
The project will automatically charging 0.01 GETX per day person as management fee.
2.What is the waiting period?
To ensure the benefits of the majority member,the accidential mutual project had an 30 days waiting period. During this period, participants will not able to receive any mutual assistance fund.
3.If a family member had been suffered misfortune, what is the procedures of application?
If your family member had been suffered accidental death, you could claim the mutual assistance through follow procedures:
(1)Send email<EMAIL_ADDRESS>(2)After review by platform, a third parties agencies will be assigned to investigate the case independently.
(3)Once the case had been confirming, the member information will publicity announce to all other members
(4)[If there is no argument arise by all members, Inschain will transfer the donation to nominate account
4.If there is insufficient balance to deduct mutual assistance fund, what will happen?
If the member had insufficient balance to deduct the evenly sharing mutual assistance fund, all remaining balance would be transferred and the member will force to exit the project. If the member wants to rejoin the projects, they will need to recalculate the waiting period. To ensure your benefits, please made sure there is sufficient balance.


The Lua interpreter was initially ported to the NetBSD kernel during GSoC 2010, allowing users to write kernel extensions using Lua scripts. During GSoC 2015, Guilherme worked on porting the Lua test suite to the NetBSD kernel. He adapted test scripts to eliminate dependencies on floating-point numbers and the operating system itself.
Guilherme also ported and reimplemented part of the Lua standard libraries (e.g., math and io) for satisfying test dependencies. Moreover, he found important bugs on the Lua kernel port (which is the ultimate purpose of testing software ;-)).
Elasticsearch is a distributed and scalable search engine written in Java that, besides its native transport protocol (Java to Java), offers a very complete REST API accessed through JSON. Dhaval built elasticsearch-lua, an initial client for the Lua language following a model similar to other existing clients, such as the clients written in Python and PHP.
Dhaval had freedom to decide how to model the object oriented API and how to build tests during development. With elasticsearch-lua, programmers can now access most Elasticsearch functionalities, such as index, read, update, delete, and search documents.
The elasticsearch-lua client does proper load balancing across all nodes with pluggable and multiple selection strategies, implements a connection pool and offers the reindex feature (not available in Elasticsearch).
Céu is a programming language that targets the development of reactive applications such as video games. It features first-class support for events and parallel compositions for lines of execution. For this project, we wanted to port an open source game of considerable size from C++ to Céu.
Alexander chose the game Pingus (a Lemmings-like game for Linux) with a codebase of around 40k lines of code. An important requirement of our project was to do a "live port" of the game, in which the game remained fully functional while portions of it were ported to Céu and the rest remained in C++.
In this project, Alexander faced two main challenges: applying the Céu idioms to the new code and keeping the old C++ code working across the language boundaries. Even though the code base was too big for a 3-month period, Alexander was able to port around half of the game, including its core (i.e., the game levels).
LuaSOAP is a library to ease the use of SOAP, the Simple Object Access Protocol. It provides a very simple API that converts Lua tables to and from XML documents. It offers two modules to help providing (server) and consuming (client) SOAP services.
Victor developed a module to help the generation of WSDL (Web Services Description Language) documents for the services implemented by the server. This new module traverses the service description (a Lua table, built by the programmer by hand, because Lua doesn't have this kind of information) and produces the WSDL description for it. This new module will be integrated into LuaSOAP next version.
TIER is an experimental language-independent binary encoding format, designed by this project's mentor, similar in purpose to formats like XML, JSON and Google's Protocol Buffers. TIER is designed to optionally support self-describing encodings that include meta-information about the serial structure of the encoded data; this meta-information can be used to support dynamic verifications or automatic decoding.
Lukas improved TIER's design and also wrote the first implementation of a Lua library that provides support for TIER encodings. He also wrote TIER's basic documentation and some tutorials on its usage. The TIER library supports custom mappings of the various TIER serial structures to specific Lua values. On top of this custom mapping support, Lukas also developed some predefined mappings for usual Lua values and a framework to facilitate the creation of mappings for usual Lua structures, such as sequences, maps, sets, etc.
Additionally, Lukas also developed a collection of mappings to automatically translate Lua values into TIER encodings and vice-versa, using different approaches to preserve structure of the original Lua value in the encoded stream.
Sailor is an MVC web framework for Lua. Its distinguishing feature is that it easily lets the programmer write Lua code for running both in the server and in the browser. It was created by Etiene Dalcol, and she submitted a project proposal to us with a series of planned improvements.
During GSoC 2015, she worked on three fronts for improving the framework: the first was a better test suite, the second was better documentation for the project, and the third was a series of improvements for the feature of running Lua code on the browser, with the possibility of having Lua code in the browser request new modules on demand from the server, and breaking the original dependency on also having node.js installed on the server.
All of the GSoC contributions are already committed to the Sailor project repository at Github, and the test suite is already part of Sailor 0.4, the latest public release of the project.


Siren 🚨
Notify users when a new version of your app is available and prompt them to upgrade.
Table of Contents
- About
- Features
- Screenshots
- Installation Instructions
- Example Code
- Granular/Differentiated Version Management
- Delegates (Optional)
- Localization
- Device Compatibility
- Testing Siren
- App Store Review & Submissions
- Phrased Releases
- Words of Caution
- Ports
- Attribution
About
Siren checks a user’s currently installed version of your iOS app against the version that is currently available in the App Store.
If a new version is available, an alert can be presented to the user informing them of the newer version, and giving them the option to update the application. Alternatively, Siren can notify your app programmatically, enabling you to inform the user through alternative means, such as a custom interface.
- Siren is built to work with the Semantic Versioning system.
- Semantic Versioning is a three number versioning system (e.g., 1.0.0)
- Siren also supports two-number versioning (e.g., 1.0) and four-number versioning (e.g., <IP_ADDRESS>)
- Siren is actively maintained by Arthur Sabintsev and Aaron Brager
README Translations
Features
- [x] CocoaPods Support
- [x] Carthage Support
- [x] Swift Package Manager Support
- [x] Localized for 30+ languages (see Localization)
- [x] Pre-Update Device Compatibility Check (see Device Compatibility)
- [x] Three types of alerts (see Screenshots)
- [x] Optional delegate methods (see Delegates (Optional))
- [x] Unit Tests
- [x] Documentation can be found at http://sabintsev.com/Siren.
Screenshots
- The left picture forces the user to update the app.
- The center picture gives the user the option to update the app.
- The right picture gives the user the option to skip the current update.
- These options are controlled by the
Siren.AlertType
enum.
Installation Instructions
| Swift Version | Branch Name | Will Continue to Receive Updates? |
|---|---|---|
| 4.2 | master | Yes |
| 4.1 | swift4.1 | No |
| 3.2 | swift3.2 | No |
| 3.1 | swift3.1 | No |
| 2.3 | swift2.3 | No |
CocoaPods
pod 'Siren' # Swift 4.2
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift4.1' # Swift 4.1
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift3.2' # Swift 3.2
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift3.1' # Swift 3.1
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift2.3' # Swift 2.3
Carthage
github "ArtSabintsev/Siren" // Swift 4.2
github "ArtSabintsev/Siren", "swift4.1" // Swift 4.1
github "ArtSabintsev/Siren", "swift3.2" // Swift 3.2
github "ArtSabintsev/Siren", "swift3.1" // Swift 3.1
github "ArtSabintsev/Siren", "swift2.3" // Swift 2.3
Swift Package Manager
.Package(url: "https://github.com/ArtSabintsev/Siren.git", majorVersion: 3)
Example Code
Below is some commented sample code. Adapt this to meet your app’s needs.
For a full list of optional settings/preferences, please refer to https://github.com/ArtSabintsev/Siren/blob/master/Example/Example/AppDelegate.swift in the Sample Project.
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
/* Siren code should go below window?.makeKeyAndVisible() */
// Siren is a singleton
let siren = Siren.shared
// Optional: Defaults to .option
siren.alertType = <#Siren.AlertType_Enum_Value#>
// Optional: Change the various UIAlertController and UIAlertAction messaging. One or more values can be changes. If only a subset of values are changed, the defaults with which Siren comes with will be used.
siren.alertMessaging = SirenAlertMessaging(updateTitle: NSAttributedString(string: "New Fancy Title"),
updateMessage: NSAttributedString(string: "New message goes here!"),
updateButtonMessage: NSAttributedString(string: "Update Now, Plz!?"),
nextTimeButtonMessage: NSAttributedString(string: "OK, next time it is!"),
skipVersionButtonMessage: NSAttributedString(string: "Please don't push skip, please don't!"))
// Optional: Set this variable if you would only like to show an alert if your app has been available on the store for a few days.
// This default value is set to 1 to avoid this issue: https://github.com/ArtSabintsev/Siren#words-of-caution
// To show the update immediately after Apple has updated their JSON, set this value to 0. Not recommended due to aforementioned reason in https://github.com/ArtSabintsev/Siren#words-of-caution.
siren.showAlertAfterCurrentVersionHasBeenReleasedForDays = 3
// Replace .immediately with .daily or .weekly to specify a maximum daily or weekly frequency for version checks.
// DO NOT CALL THIS METHOD IN didFinishLaunchingWithOptions IF YOU ALSO PLAN TO CALL IT IN applicationDidBecomeActive.
siren.checkVersion(checkType: .immediately)
return true
}
func applicationDidBecomeActive(application: UIApplication) {
/*
Perform daily (.daily) or weekly (.weekly) checks for new version of your app.
Useful if user returns to your app from the background after extended period of time.
Place in applicationDidBecomeActive(_:).
*/
Siren.shared.checkVersion(checkType: .daily)
}
func applicationWillEnterForeground(application: UIApplication) {
/*
Useful if user returns to your app from the background after being sent to the
App Store, but doesn't update their app before coming back to your app.
ONLY USE WITH Siren.AlertType.immediately
*/
Siren.shared.checkVersion(checkType: .immediately)
}
And you’re all set!
Prompting for Updates without Alerts
Some developers may want to display a less obtrusive custom interface, like a banner or small icon. To accomplish this, you can disable alert presentation by doing the following:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
...
siren.delegate = self
siren.alertType = .none
...
}
extension AppDelegate: SirenDelegate {
// Returns a localized message to this delegate method upon performing a successful version check
func sirenDidDetectNewVersionWithoutAlert(message: String, updateType: UpdateType) {
print("\(message)")
}
}
Siren will call the sirenDidDetectNewVersionWithoutAlert(message: String)
delegate method, passing a localized, suggested update string suitable for display. Implement this method to display your own messaging, optionally using message
.
Granular Version Update Management
If you would like to set a different type of alert for revision, patch, minor, and/or major updates, simply add one or all of the following optional lines to your setup before calling the checkVersion()
method:
/* Siren defaults to Siren.AlertType.option for all updates */
siren.shared.revisionUpdateAlertType = <#Siren.AlertType_Enum_Value#>
siren.shared.patchUpdateAlertType = <#Siren.AlertType_Enum_Value#>
siren.shared.minorUpdateAlertType = <#Siren.AlertType_Enum_Value#>
siren.shared.majorUpdateAlertType = <#Siren.AlertType_Enum_Value#>
Optional Delegate and Delegate Methods
Six delegate methods allow you to handle or track the user’s behavior. Each method has a default, empty implementation, effectively making each of these methods optional.
public protocol SirenDelegate: NSObjectProtocol {
/// Siren performed version check and did not display alert.
func sirenDidDetectNewVersionWithoutAlert(message: String, updateType: UpdateType)
/// Siren failed to perform version check.
///
/// - Note:
/// Depending on the reason for failure,
/// a system-level error may be returned.
func sirenDidFailVersionCheck(error: Error)
/// User presented with update dialog.
func sirenDidShowUpdateDialog(alertType: Siren.AlertType)
/// Siren performed a version check and latest version is installed.
func sirenLatestVersionInstalled()
/// Provides the decoded JSON information from a successful version check call.
///
/// - SeeAlso:
/// SirenLookupModel.swift
///
/// - Parameter lookupModel: The `Decodable` model representing the JSON results from the iTunes Lookup API.
func sirenNetworkCallDidReturnWithNewVersionInformation(lookupModel: SirenLookupModel)
/// User did click on button that cancels update dialog.
func sirenUserDidCancel()
/// User did click on button that launched "App Store.app".
func sirenUserDidLaunchAppStore()
/// User did click on button that skips version update.
func sirenUserDidSkipVersion()
}
Localization
Siren is localized for
- Arabic
- Armenian
- Basque
- Chinese (Simplified and Traditional)
- Croatian
- Czech
- Danish
- Dutch
- English
- Estonian
- Finnish
- French
- German
- Greek
- Hebrew
- Hungarian
- Indonesian
- Italian
- Japanese
- Korean
- Latvian
- Lithuanian
- Malay
- Norwegian (Bokmål)
- Persian (Afghanistan, Iran, Persian)
- Polish
- Portuguese (Brazil and Portugal)
- Russian
- Serbian (Cyrillic and Latin)
- Slovenian
- Spanish
- Swedish
- Thai
- Turkish
- Ukrainian
- Urdu
- Vietnamese
You may want the update dialog to always appear in a certain language, ignoring iOS’s language setting (e.g. apps released in a specific country).
You can enable it like so:
Siren.shared.forceLanguageLocalization = Siren.LanguageType.<#Siren.LanguageType_Enum_Value#>
Device Compatibility
If an app update is available, Siren checks to make sure that the version of iOS on the user’s device is compatible with the one that is required by the app update. For example, if a user has iOS 10 installed on their device, but the app update requires iOS 11, an alert will not be shown. This takes care of the false positive case regarding app updating.
Testing Siren
Temporarily change the version string in Xcode (within the .xcodeproj
) to an older version than the one that’s currently available in the App Store. Afterwards, build and run your app, and you should see the alert.
If you currently don’t have an app in the store, change your bundleID to one that is already in the store. In the sample app packaged with this library, we use the App Store Connect app’s bundleID: com.apple.AppStoreConnect
.
For your convenience, you may turn on debugging statements by setting self.debugEnabled = true
before calling the checkVersion()
method.
App Store Submissions
The App Store reviewer will not see the alert. The version in the App Store will always be older than the version being reviewed.
Phased Releases
In 2017, Apple announced the ability to rollout app updates gradually (a.k.a. Phased Releases). Siren will continue to work as it has in the past, presenting an update modal to all users. If you opt-in to a phased rollout for a specific version, you have a few choices:
- You can leave Siren configured as normal. Phased rollout will continue to auto-update apps. Since all users can still manually update your app directly from the App Store, Siren will ignore the phased rollout and will prompt users to update.
- You can set
showAlertAfterCurrentVersionHasBeenReleasedForDays
to7
, and Siren will not prompt any users until the latest version is 7 days old, after phased rollout is complete. - You can remotely disable Siren until the rollout is done using your own API / backend logic.
Words of Caution
Occasionally, the iTunes JSON will update faster than the App Store CDN, meaning the JSON may state that the new version of the app has been released, while no new binary is made available for download via the App Store. It is for this reason that Siren will, by default, wait 1 day (24 hours) after the JSON has been updated to prompt the user to update. To change the default setting, please modify the value of showAlertAfterCurrentVersionHasBeenReleasedForDays
.
Ports
- Objective-C (iOS)
- Harpy
- Siren was ported from Harpy, as Siren and Harpy are maintained by the same developer.
- Java (Android)
- Egghead Games’ Siren library
- The Siren Swift library inspired the Java library.
- React Native (iOS)
- Gant Laborde’s Siren library
- The Siren Swift library inspired the React Native library.


syntax return
Documentation for syntax return
assembled from the following types:
language documentation Control flow
From Control flow
(Control flow) control flow return return
The sub return
will stop execution of a subroutine or method, run all relevant phasers and provide the given return value to the caller. The default return value is Nil
. If a return type constraint is provided it will be checked unless the return value is Nil
. If the type check fails the exception X::TypeCheck::Return is thrown. If it passes a control exception is raised and can be caught with CONTROL.
Any return
in a block is tied to the first Routine
in the outer lexical scope of that block, no matter how deeply nested. Please note that a return
in the root of a package will fail at runtime. A return
in a block that is evaluated lazily (e.g. inside map
) may find the outer lexical routine gone by the time the block is executed. In almost any case last
is the better alternative. Please check the functions documentation for more information on how return values are handled and produced.


Bug #501
Inconsistent font size specifications in css
| Status: | Closed | Start: | 08/16/2011 | |
|---|---|---|---|---|
| Priority: | Normal | Due date: | ||
| Assigned to: | Jef van Schendel | % Done: | 0% |
|
| Category: | Graphic Design / UI | |||
| Target version: | 0.0.5 |
Description
Base.css uses several different ways to specify text sizes. I think it has a nice mix of px, em and percentages going on right now.
This should be fixed. I'm not sure what the "right" way to do this is, so any help is welcome. I'll do some research and decide on what we should do, then make the needed changes.
So yeah, this bug is mostly a memory aid.
History
Updated by Jef van Schendel 10 days ago
- Status changed from New to Closed
This has been fixed. We now use relative sizes (em) everywhere.
I've also cleaned up a few things: removed some unnecssary text size values and added some spacing.


R Λ Z Ξ R
by @RazerYou asked, we delivered—we’re chuffed to bits to bring the RazerStore experience to London! Pop by our RazerStore grand opening on 14 December for a chance to win some Razer goodies, meet our gaming celebrities, or just have a chinwag with us. RSVP here: rzr.to/yqIKG


15 MINUTES RATING: 7/10
For more reviews and movie screensavers, visit http://www.joblo.com/
PLOT: A media-savvy cop joins a young arson investigator on a case featuring two nasty Eastern European immigrants searching for their fifteen minutes of fame.
CRITIQUE: A very original and timely movie which connects on various levels. Now I know that I've said this before but here's yet another great performance by Robert DeNiro, charismatic, funny and as intelligent as ever, an interesting script which takes the "hot" elements of the day and turns them into a digestible story and even a little bit of action and humor. In fact, I probably wouldn't know how to qualify this movie exactly, but one thing that I can say about it is that it'll definitely have you talking. It'll have you talking about its meaning, its truth, its fiction, its message, its reality...pretty much everything that the film tries to address. Unless of course, you think the movie sucks, in which case, I doubt you'll care to look over any of it... :)
You see, this film is basically about busting the balls of all the "good
folks" in the media who cannot seem to look past their ratings to ask
themselves if what they're doing is right. Is what they are doing the right
thing to do?  Should they be
showing live child-births on TV? (for journalistic purposes, of course) And
ultimately, what are we gonna do once things start getting really out of
hand? What are we gonna say to live executions on the air, a hostage
negotiations gone awry or maybe even the telecast of an actual murder. Is
that newsworthy? Perhaps...but does that mean that we need to show it on TV?
Has the media lost all sense of decency, morality and self-control?
This movie softly touches on all of these questions and concerns, and does so in a very convincing and entertaining manner. It reveals all of the hypocrisies by which most of these people live, and also exposes the manipulative ways by which many of them achieve their goals. Sure, there are a few weak spots in the script, with the impulsive "bad guys" always seeming to be one step ahead of their "good guy" counterparts, despite their obvious nonchalance, and a certain amount of farfetchedness in their ultimate goal, but overall, I bought most of it with a mighty big spoon. Another great thing about this movie was its element of surprise. There I was sitting in a theatre and literally not knowing what would happen next. Quite the unusual position to be in, let me tell you. It was refreshing to watch a movie in which originality actually replaced cliches and the characters helped guide you through their world of real emotions. What else can I say about this movie? It's basically got a lot of different elements working within it and most of them worked for me. There are touches of humor, some cool action scenes, a genuine sense of unpredictability, a little romance, an undeniable message and many questions left to be discussed. In fact, how many movies can you name that are actually able to entertain and make you think and engage in conversation at the same time? Not many, eh? Well, for me this movie was one of this year's early nice surprises. You go, Bobby!!
Where's JoBlo coming from? Broadcast News (7/10) - EdTV (7/10) - Fight Club (10/10) - Mad City (4/10) - Ronin (8/10) - The Truman Show (6/10) - Wag the Dog (5/10)
Review Date: February 1, 2001 Director: John Herzfeld Writer: John Herzfeld Producers: John Herzfeld and David Blocker Actors: Robert DeNiro as Eddie Fleming Edward Burns as Jordy Warsaw Kelsey Grammer Genre: Crime Year of Release: 2001 ------------------------------------ JoBlo's Movie Emporium http://www.joblo.com/ ------------------------------------ (c) 2001 Berge Garabedian
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