The View File System (ViewFs) provides a way to manage multiple Hadoop file system namespaces (or namespace volumes). It is particularly useful for clusters having multiple namenodes, and hence multiple namespaces, in HDFS Federation. ViewFs is analogous to client side mount tables in some Unix/Linux systems. ViewFs can be used to create personalized namespace views and also per-cluster common views.
This guide is presented in the context of Hadoop systems that have several clusters, each cluster may be federated into multiple namespaces. It also describes how to use ViewFs in federated HDFS to provide a per-cluster global namespace so that applications can operate in a way similar to the pre-federation world.
In the old world prior to HDFS Federation, a cluster has a single namenode which provides a single file system namespace for that cluster. Suppose there are multiple clusters. The file system namespaces of each cluster are completely independent and disjoint. Furthermore, physical storage is NOT shared across clusters (i.e. the Datanodes are not shared across clusters.)
The core-site.xml of each cluster has a configuration property that sets the default file system to the namenode of that cluster:
<property> <name>fs.default.name</name> <value>hdfs://namenodeOfClusterX:port</value> </property>
Such a configuration property allows one to use slash-relative names to resolve paths relative to the cluster namenode. For example, the path /foo/bar is referring to hdfs://namenodeOfClusterX:port/foo/bar using the above configuration.
This configuration property is set on each gateway on the clusters and also on key services of that cluster such the JobTracker and Oozie.
Hence on Cluster X where the core-site.xml is set as above, the typical pathnames are
/foo/bar
hdfs://namenodeOfClusterX:port/foo/bar
hdfs://namenodeOfClusterY:port/foo/bar
distcp hdfs://namenodeClusterY:port/pathSrc hdfs://namenodeClusterZ:port/pathDest
webhdfs://namenodeClusterX:http_port/foo/bar
http://namenodeClusterX:http_port/webhdfs/v1/foo/bar and http://proxyClusterX:http_port/foo/bar
Suppose there are multiple clusters. Each cluster has one or more namenodes. Each namenode has its own namespace. A namenode belongs to one and only one cluster. The namenodes in the same cluster share the physical storage of that cluster. The namespaces across clusters are independent as before.
Operations decide what is stored on each namenode within a cluster based on the storage needs. For example, they may put all the user data (/user/<username>) in one namenode, all the feed-data (/data) in another namenode, all the projects (/projects) in yet another namenode, etc.
In order to provide transparency with the old world, the ViewFs file system (i.e. client-side mount table) is used to create each cluster an independent cluster namespace view, which is similar to the namespace in the old world. The client-side mount tables like the Unix mount tables and they mount the new namespace volumes using the old naming convention. The following figure shows a mount table mounting four namespace volumes /user, /data, /projects, and /tmp:
ViewFs implements the Hadoop file system interface just like HDFS and the local file system. It is a trivial file system in the sense that it only allows linking to other file systems. Because ViewFs implements the Hadoop file system interface, it works transparently Hadoop tools. For example, all the shell commands work with ViewFs as with HDFS and local file system.
In the configuration of each cluster, the default file system is set to the mount table for that cluster as shown below (compare it with the configuration in Single Namenode Clusters).
<property> <name>fs.defaultFS</name> <value>viewfs://clusterX</value> </property>
The authority following the viewfs:// scheme in the URI is the mount table name. It is recommended that the mount table of a cluster should be named by the cluster name. Then Hadoop system will look for a mount table with the name “clusterX” in the Hadoop configuration files. Operations arrange all gateways and service machines to contain the mount tables for ALL clusters such that, for each cluster, the default file system is set to the ViewFs mount table for that cluster as described above.
The mount points of a mount table are specified in the standard Hadoop configuration files. All the mount table config entries for viewfs are prefixed by fs.viewfs.mounttable.. The mount points that are linking other filesystems are specified using link tags. The recommendation is to have mount points name same as in the linked filesystem target locations. For all namespaces that are not configured in the mount table, we can have them fallback to a default filesystem via linkFallback.
In the below mount table configuration, namespace /data is linked to the filesystem hdfs://nn1-clusterx.example.com:8020/data, /project is linked to the filesystem hdfs://nn2-clusterx.example.com:8020/project. All namespaces that are not configured in the mount table, like /logs are linked to the filesystem hdfs://nn5-clusterx.example.com:8020/home.
<configuration> <property> <name>fs.viewfs.mounttable.ClusterX.link./data</name> <value>hdfs://nn1-clusterx.example.com:8020/data</value> </property> <property> <name>fs.viewfs.mounttable.ClusterX.link./project</name> <value>hdfs://nn2-clusterx.example.com:8020/project</value> </property> <property> <name>fs.viewfs.mounttable.ClusterX.link./user</name> <value>hdfs://nn3-clusterx.example.com:8020/user</value> </property> <property> <name>fs.viewfs.mounttable.ClusterX.link./tmp</name> <value>hdfs://nn4-clusterx.example.com:8020/tmp</value> </property> <property> <name>fs.viewfs.mounttable.ClusterX.linkFallback</name> <value>hdfs://nn5-clusterx.example.com:8020/home</value> </property> </configuration>
Alternatively we can have the mount table’s root merged with the root of another filesystem via linkMergeSlash. In the below mount table configuration, ClusterY’s root is merged with the root filesystem at hdfs://nn1-clustery.example.com:8020.
<configuration> <property> <name>fs.viewfs.mounttable.ClusterY.linkMergeSlash</name> <value>hdfs://nn1-clustery.example.com:8020/</value> </property> </configuration>
Hence on Cluster X, where the core-site.xml is set to make the default fs to use the mount table of that cluster, the typical pathnames are
/foo/bar
viewfs://clusterX/foo/bar
viewfs://clusterY/foo/bar
distcp viewfs://clusterY/pathSrc viewfs://clusterZ/pathDest
viewfs://clusterX-webhdfs/foo/bar
http://namenodeClusterX:http_port/webhdfs/v1/foo/bar and http://proxyClusterX:http_port/foo/bar
When one is within a cluster, it is recommended to use the pathname of type (1) above instead of a fully qualified URI like (2). Further, applications should not use the knowledge of the mount points and use a path like hdfs://namenodeContainingUserDirs:port/joe/foo/bar to refer to a file in a particular namenode. One should use /user/joe/foo/bar instead.
Recall that one cannot rename files or directories across namenodes or clusters in the old world. The same is true in the new world but with an additional twist. For example, in the old world one can perform the commend below.
rename /user/joe/myStuff /data/foo/bar
This will NOT work in the new world if /user and /data are actually stored on different namenodes within a cluster.
HDFS and other distributed filesystems provide data resilience via some sort of redundancy such as block replication or more sophisticated distributed encoding. However, modern setups may be comprised of multiple Hadoop clusters, enterprise filers, hosted on and off premise. Nfly mount points make it possible for a single logical file to be synchronously replicated by multiple filesystems. It’s designed for a relatively small files up to a gigabyte. In general it’s a function of a single core/single network link performance since the logic resides in a single client JVM using ViewFs such as FsShell or a MapReduce task.
Consider the following example to understand the basic configuration of Nfly. Suppose we want to keep the directory ads replicated on three filesystems represented by URIs: uri1, uri2 and uri3.
<property> <name>fs.viewfs.mounttable.global.linkNfly../ads</name> <value>uri1,uri2,uri3</value> </property>
Note 2 consecutive .. in the property name. They arise because of empty settings for advanced tweaking of the mount point which we will show in subsequent sections. The property value is a comma-separated list of URIs.
URIs may point to different clusters in different regions hdfs://datacenter-east/ads, s3a://models-us-west/ads, hdfs://datacenter-west/ads or in the simplest case to different directories under the same filesystem, e.g., file:/tmp/ads1, file:/tmp/ads2, file:/tmp/ads3
All modifications performed under the global path viewfs://global/ads are propagated to all destination URIs if the underlying system is available.
For instance if we create a file via hadoop shell
hadoop fs -touchz viewfs://global/ads/z1
We will find it via local filesystem in the latter configuration
ls -al /tmp/ads*/z1 -rw-r--r-- 1 user wheel 0 Mar 11 12:17 /tmp/ads1/z1 -rw-r--r-- 1 user wheel 0 Mar 11 12:17 /tmp/ads2/z1 -rw-r--r-- 1 user wheel 0 Mar 11 12:17 /tmp/ads3/z1
A read from the global path is processed by the first filesystem that does not result in an exception. The order in which filesystems are accessed depends on whether they are available at this moment or and whether a topological order exists.
Mount points linkNfly can be further configured using parameters passed as a comma-separated list of key=value pairs. Following parameters are currently supported.
minReplication=int determines the minimum number of destinations that have to process a write modification without exceptions, if below nfly write is failed. It is an configuration error to have minReplication higher than the number of target URIs. The default is 2.
If minReplication is lower than the number of target URIs we may have some target URIs without latest writes. It can be compensated by employing more expensive read operations controlled by the following settings
readMostRecent=boolean if set to true causes Nfly client to check the path under all target URIs instead of just the first one based on the topology order. Among all available at the moment the one with the most recent modification time is processed.
repairOnRead=boolean if set to true causes Nfly to copy most recent replica to stale targets such that subsequent reads can be done cheaply again from the closest replica.
Nfly seeks to satisfy reads from the “closest” target URI.
To this end, Nfly extends the notion of Rack Awareness to the authorities of target URIs.
Nfly applies NetworkTopology to resolve authorities of the URIs. Most commonly a script based mapping is used in a heterogeneous setup. We could have a script providing the following topology mapping
| URI | Topology |
|---|---|
| hdfs://datacenter-east/ads | /us-east/onpremise-hdfs |
| s3a://models-us-west/ads | /us-west/aws |
| hdfs://datacenter-west/ads | /us-west/onpremise-hdfs |
If a target URI does not have the authority part as in file:/ Nfly injects client’s local node name.
<property> <name>fs.viewfs.mounttable.global.linkNfly.minReplication=3,readMostRecent=true,repairOnRead=false./ads</name> <value>hdfs://datacenter-east/ads,hdfs://datacenter-west/ads,s3a://models-us-west/ads,file:/tmp/ads</value> </property>
FileSystem fs = FileSystem.get("viewfs://global/", ...); FSDataOutputStream out = fs.create("viewfs://global/ads/f1"); out.write(...); out.close();
The code above would result in the following execution.
create an invisible file _nfly_tmp_f1 under each target URI i.e., hdfs://datacenter-east/ads/_nfly_tmp_f1, hdfs://datacenter-west/ads/_nfly_tmp_f1, etc. This is done by calling create on underlying filesystems and returns a FSDataOutputStream object out that wraps all four output streams.
Thus each subsequent write on out can be forwarded to each wrapped stream.
On out.close all streams are closed, and the files are renamed from _nfly_tmp_f1 to f1. All files receive the same modification time corresponding to the client system time as of beginning of this step.
If at least minReplication destinations have gone through steps 1-3 without failures Nfly considers the transaction logically committed; Otherwise it tries to clean up the temporary files in a best-effort attempt.
Note that because 4 is a best-effort step and the client JVM could crash and never resume its work, it’s a good idea to provision some sort of cron job to purge such _nfly_tmp files.
As I move from non-federated world to the federated world, I will have to keep track of namenodes for different volumes; how do I do that?
No, you won’t. See the examples above – you are either using a relative name and taking advantage of the default file system, or changing your path from hdfs://namenodeCLusterX/foo/bar to viewfs://clusterX/foo/bar.
What happens of Operations move some files from one namenode to another namenode within a cluster?
Operations may move files from one namenode to another in order to deal with storage capacity issues. They will do this in a way to avoid applications from breaking. Let’s take some examples.
Example 1: /user and /data were on one namenode and later they need to be on separate namenodes to deal with capacity issues. Indeed, operations would have created separate mount points for /user and /data. Prior to the change the mounts for /user and /data would have pointed to the same namenode, say namenodeContainingUserAndData. Operations will update the mount tables so that the mount points are changed to namenodeContaingUser and namenodeContainingData, respectively.
Example 2: All projects were fitted on one namenode and but later they need two or more namenodes. ViewFs allows mounts like /project/foo and /project/bar. This allows mount tables to be updated to point to the corresponding namenode.
Is the mount table in each core-site.xml or in a separate file of its own?
The plan is to keep the mount tables in separate files and have the core-site.xml xincluding it. While one can keep these files on each machine locally, it is better to use HTTP to access it from a central location.
Should the configuration have the mount table definitions for only one cluster or all clusters?
The configuration should have the mount definitions for all clusters since one needs to have access to data in other clusters such as with distcp.
When is the mount table actually read given that Operations may change a mount table over time?
The mount table is read when the job is submitted to the cluster. The XInclude in core-site.xml is expanded at job submission time. This means that if the mount table are changed then the jobs need to be resubmitted. Due to this reason, we want to implement merge-mount which will greatly reduce the need to change mount tables. Further, we would like to read the mount tables via another mechanism that is initialized at job start time in the future.
Will JobTracker (or Yarn’s Resource Manager) itself use the ViewFs?
No, it does not need to. Neither does the NodeManager.
Does ViewFs allow only mounts at the top level?
No; it is more general. For example, one can mount /user/joe and /user/jane. In this case, an internal read-only directory is created for /user in the mount table. All operations on /user are valid except that /user is read-only.
An application works across the clusters and needs to persistently store file paths. Which paths should it store?
You should store viewfs://cluster/path type path names, the same as it uses when running applications. This insulates you from movement of data within namenodes inside a cluster as long as operations do the moves in a transparent fashion. It does not insulate you if data gets moved from one cluster to another; the older (pre-federation) world did not protect you form such data movements across clusters anyway.
What about delegation tokens?
Delegation tokens for the cluster to which you are submitting the job (including all mounted volumes for that cluster’s mount table), and for input and output paths to your map-reduce job (including all volumes mounted via mount tables for the specified input and output paths) are all handled automatically. In addition, there is a way to add additional delegation tokens to the base cluster configuration for special circumstances.
Please refer to the View File System Overload Scheme Guide
The view file system mount points were a Key-Value based mapping system. It is not friendly for user cases which mapping config could be abstracted to rules. E.g. Users want to provide a GCS bucket per user and there might be thousands of users in total. The old key-value based approach won’t work well for several reasons:
The mount table is used by FileSystem clients. There’s a cost to spread the config to all clients and we should avoid it if possible. The View File System Overload Scheme Guide could help the distribution by central mount table management. But the mount table still have to be updated on every change. The change could be greatly avoided if provide a rule-based mount table.
The client have to understand all the KVs in the mount table. This is not ideal when the mountable grows to thousands of items. E.g. thousands of file systems might be initialized even users only need one. And the config itself will become bloated at scale.
In the key-value based mount table, view file system treats every mount point as a partition. There’s several file system APIs which will lead to operation on all partitions. E.g. there’s an HDFS cluster with multiple mount. Users want to run “hadoop fs -put file viewfs://hdfs.namenode.apache.org/tmp/” cmd to copy data from local disk to our HDFS cluster. The cmd will trigger ViewFileSystem to call setVerifyChecksum() method which will initialize the file system for every mount point. For a regex rule based mount table entry, we couldn’t know what’s corresponding path until parsing. So the regex based mount table entry will be ignored on such cases. The file system (ChRootedFileSystem) will be created upon accessing. But the underlying file system will be cached by inner cache of ViewFileSystem.
<property> <name>fs.viewfs.rename.strategy</name> <value>SAME_FILESYSTEM_ACROSS_MOUNTPOINT</value> </property>
Here’s an example of base regex mount point config. ${username} is the named capture group in Java Regex.
<property> <name>fs.viewfs.mounttable.hadoop-nn.linkRegx./^(?<username>\\w+)</name> <value>gs://${username}.hadoop.apache.org/</value> </property>
Parsing example.
viewfs://hadoop-nn/user1/dir1 => gs://user1.hadoop.apache.org/dir1 viewfs://hadoop-nn/user2 => gs://user2.hadoop.apache.org/
The src/key’s format are
fs.viewfs.mounttable.${VIEWNAME}.linkRegx.${REGEX_STR}
Interceptor is one mechanism introduced to modify source or target in the resolution process. It’s optional and could be used to satisfy user cases such as replace specific character or replace some word. Interceptor will only work for regex mount point. RegexMountPointResolvedDstPathReplaceInterceptor is the only build-in interceptor now.
Here’s an example regex mount point entry with RegexMountPointResolvedDstPathReplaceInterceptor set.
<property> <name>fs.viewfs.mounttable.hadoop-nn.linkRegx.replaceresolveddstpath:_:-#./^(?<username>\\w+)</name> <value>gs://${username}.hadoop.apache.org/</value> </property>
The replaceresolveddstpath:_:- is an interceptor setting. “replaceresolveddstpath” is the interceptor type, “_” is the string to replace and “-” is the string after replace.
Parsing example.
viewfs://hadoop-nn/user_ad/dir1 => gs://user-ad.hadoop.apache.org/dir1 viewfs://hadoop-nn/user_ad_click => gs://user-ad-click.hadoop.apache.org/
The src/key’s format are
fs.viewfs.mounttable.${VIEWNAME}.linkRegx.${REGEX_STR} fs.viewfs.mounttable.${VIEWNAME}.linkRegx.${interceptorSettings}#.${srcRegex}
Generally, users do not have to define mount tables or the core-site.xml to use the mount table. This is done by operations and the correct configuration is set on the right gateway machines as is done for core-site.xml today.
The mount tables can be described in core-site.xml but it is better to use indirection in core-site.xml to reference a separate configuration file, say mountTable.xml. Add the following configuration element to core-site.xml for referencing mountTable.xml:
<configuration xmlns:xi="http://www.w3.org/2001/XInclude"> <xi:include href="mountTable.xml" /> </configuration>
In the file mountTable.xml, there is a definition of the mount table “ClusterX” for the hypothetical cluster that is a federation of the three namespace volumes managed by the three namenodes
Here /home and /tmp are in the namespace managed by namenode nn1-clusterx.example.com:8020, and projects /foo and /bar are hosted on the other namenodes of the federated cluster. The home directory base path is set to /home so that each user can access its home directory using the getHomeDirectory() method defined in FileSystem/FileContext.
<configuration> <property> <name>fs.viewfs.mounttable.ClusterX.homedir</name> <value>/home</value> </property> <property> <name>fs.viewfs.mounttable.ClusterX.link./home</name> <value>hdfs://nn1-clusterx.example.com:8020/home</value> </property> <property> <name>fs.viewfs.mounttable.ClusterX.link./tmp</name> <value>hdfs://nn1-clusterx.example.com:8020/tmp</value> </property> <property> <name>fs.viewfs.mounttable.ClusterX.link./projects/foo</name> <value>hdfs://nn2-clusterx.example.com:8020/projects/foo</value> </property> <property> <name>fs.viewfs.mounttable.ClusterX.link./projects/bar</name> <value>hdfs://nn3-clusterx.example.com:8020/projects/bar</value> </property> </configuration>


Ranking of countries based on Caribbean vulnerability scores. Weighted average for (a) historical (2006–2011), (b)-(c) A2 scenario for 2030s and 2050s relative to 2001–2015 and (d)-(e) B2 scenario for 2030s and 2050s relative to 2001–2015. Demographic and socioeconomic sub-indices are held constant.


BY EDWIN JAHIEL
LOVE IN THE AFTERNOON (USA, 1957) ***1/2. Directed, produced,written (with I.A.L.Diamond) by Billy Wilder. Based on the novel Ariane by Claude Anet. Photography, William Mellor. Editing, Leonide Azar. Production design, Alexander Trauner. Music, Franz Waxman. Costumes, Hubert de Givenchy. Cast: Gary Cooper (Frank Flannagan), Audrey Hepburn (Ariane Chavasse), Maurice Chevalier (Claude Chavasse, Van Doude (Michel), John McGiver (Mr. X), Lise Bourdin (Mrs. X) Bonifas (Commissioner of Police), Audrey Wilder ( a brunette), Gyula Kokas, Michel Kokas, George Cocos. Victor Gazzoli (the 4 Gypsies, musicians), Olga Valery (Lady with Dog), Leila Croft and Valerie Croft (Swedish Twins), et al.
Comedy-romance stars Gary Cooper (1901-1961), Audrey Hepburn (1929-1993), Maurice Chevalier (1888-1972), with John McGiver in a funny supporting role, and the Diga Valery Gypsy musicians reinforcing the comedy. This gem by Billy Wilder is on my short list of the most underrated movies, and is one of the least mentioned Wilder films. Of course, it is not without fervent admirers.
American playboy millionaire Cooper, in Paris, has an affair (one of dozens) with the wife of bumbling Britisher McGiver. The latter employs private eye Chevalier, a specialist in getting evidence on unfaithful spouses. Chevalier's daughter, music conservatory student Hepburn, learns of this, goes to the famous Hotel Ritz to warn Cooper that McGiver (awkardly gun-toting) is about to catch the couple in flagrante delicto.
A May-December romance develops. Even though Cooper looks his age and may well have been already ill at the time, and even though Hepburn, then 28-ish, looks radiantly like 19 or 20, the rapport between the two works extremely well. The loving father-daughter Chevalier-Hepburn relationship is utterly charming too.
The script is by Wilder and his then-new collaborator I.A. L. Diamond. This team went on to more superb work together, including the 1959 "Some Like It Hot." "Love in the Afternoon " is an original movie, in ways sometimes apparent -- even obvious -- but also sometimes too delicate and anti-cliche for unsophisticated viewers -- and the cinema public has been sadly and gradually losing its sophistication since that movie was made.
Cooper's unusual, un-rakish ladykiller, for example, is deemed improbable by some people, yet it adds something new to the traditional depiction of Don Juans. "Love in the Afternoon" has wit, humor, slapstick, sentiment that never cloys, gags and naughtiness a la Ernst Lubitsch with whom Wilder had worked and whose major inheritor he became, though with original creations rather than imitations.
The movie was beautifully and realistically filmed in France: Paris, the Ritz Hotel, the Studios de Boulogne, the Opera, the Chateau de Vitry, etc. The score includes (repeatedly!)the famous slow waltz "Fascination" by Filippo D. Marchetti (copyright 1901) used in a most amusing and imaginative way.
Though an American production, LITA employed many fine French artists, technicians and performers. Vienna-born Wilder who had his first career in German-language films, emigrated to Hollywood (as many Jewish artists did) when Hitler came to absolute power. Before coming to the USA however, he spent a couple of years in Paris--where he directed his first film --and understood very well the French and their wit, both very close to Wilder's own.
The score (other than Fascination) was by one of the great Hollywood composers, German-born Franz Waxman, who fled anti-semitism and reached Hollywood about the same time as Wilder, ca. 1934.
What used to be called "art direction" and now has become "production design" is by Alexander Trauner, the best stage designer in France and one of best in the world. He makes a small, sub-cameo appearance in the movie.
Hubert de Givenchy (or at least his "Maison," i.e. his firm) provided the dresses. Givenchy was one of the reigning fashion designers in the world, known for his chic, discreet elegance (and later, his perfumes). It's worth looking at the dresses closely and noticing that even in the case of "schoolgirl" Hepburn, a middle-class, middle-income young lady, what she wears, while looking appropriate, is subtly the product of Haute Couture.
A film not to miss. (Edwin Jahiel)
APPENDIX: A table in which the age of Audrey Hepburn is compared with that of her leading men. (months of birth not considered --only years) [Audrey Hepburn, born 1929 . Films where she was much younger than her leading men.]
ROMAN HOLIDAY 1953, Peck born 1916 ,then 40 / AH then 24 --age diff 16 yrs SABRINA 1954, Bogart b. 1899, then 55 / AH then 25 -- age diff 30 yrs WAR AND PEACE 1956, Henry Fonda, b. 1905, then 51 / AH then 27-- age diff 34 yrs FUNNY FACE 1957, Fred Astaire, b. 1899, then 58 / AH by then 28 ---age diff 30 yrs LOVE IN THE AFTERNOON 1957,Gary Cooper, b. 1901, then 56 / AH by then 28 --age diff 28 yrs THE UNFORGIVEN 1960, Burt Lancaster b.1913, then 47 / AH then 31 ---age diff 16 yrs CHARADE 1963, Cary Grant,b. 1904, then 59 / AH then 34 / --age diff 25 years MY FAIR LADY 1964, Rex Harrison, b. 1908, then 56 / AH then 35 --age diff 21 yrs PARIS-WHEN IT SIZZLES 1964, Wm Holden b. 1918, then 46 / AH then 35 -- age diff 11 yrs WAIT UNTIL DARK 1967, Efrem Zimbalist Jr. born 1923, then 44 / AH then 38--age diff 6 yrs
[Audrey Hepburn, born 1929.Films where she was just about 1 year younger than her leading men.]
BREAKFAST AT TIFFANY'S, 1961, George Peppard b. 1928, then 33 / AH then 32, 1 yr younger THE CHILDREN'S HOUR, 1962, James Garner b. 1928, then 34 /AH then 31, 1 yr younger BREAKFAST AT TIFFANY'S, 1961, George Peppard b. 1928, then 33 / AH then 32, 1 yr younger THE CHILDREN'S HOUR, 1962, James Garner b. 1928, then 34 /AH then 31, 1 yr younger BREAKFAST AT TIFFANY'S, 1961, George Peppard b. 1928, then 33 / AH then 32, 1 yr younger THE CHILDREN'S HOUR, 1962, James Garner b. 1928, then 34 /AH then 31, 1 yr younger
[Audrey Hepburn, born 1929. Films where she was OLDER than her leading men.]
ROBIN AND MARIAN, 1976, Sean Connery b. 1930 then 46 /A Hepburn by then 47, 1 year older GREEN MANSIONS, 1959, Tony Perkins b. 1932, then 27/ AH then 30, 3 yrs older HOW TO STEAL A MILLION, 1966, Peter O'Toole b. 1932, then 34/ AH then 37, 3 yrs older TWO FOR THE ROAD, 1967, Albert Finney b. 1936, then 31/ AH then 38, 7 yrs older ********
(Copyright Edwin Jahiel, 1999)
" Le mauvais gout mene au crime" (Stendhal)
Edwin Jahiel's movie reviews are at http://www.prairienet.org/ejahiel
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


Use this data sink to store data in an existing Hadoop cluster that is external to DigitalEdge, is not managed by DigitalEdge, and is compatible with Cloudera CDH3uX releases. You must specify the communication connection to your organization's Hadoop cluster with these parameters. If a firewall is between DigitalEdge and the external Hadoop data sink, you must open ports for DigitalEdge access.
| ExternalHDFSDataSink | |
|---|---|
| Parameter | Explanation |
| block-size |
Specifies the Default: 134217728 |
|
namenode-hostname |
The IP address or valid, resolvable host name of the server that is running the NameNode daemon in your Hadoop cluster Default: namenode.domain Recommendation: keep the default value to use the internal Hadoop cluster |
|
namenode-port |
The port number that the NameNode daemon is running on in your Hadoop cluster Default: 8020 Recommendation: keep the default value to use the internal Hadoop cluster |
| replication-factor |
Controls the default replication factor on files written to HDFS by this data sink |
| target-folder |
The directory where the data sink will write records prior to insertion into Hadoop; must be writable by the user running this data sink in DigitalEdge; can change the default root and/or folder name for your site configuration Default: /tmp/external_hdfs_data_sink |


We offer services to schools, associations, and any other type of institution interested in creating awareness about the excessive use of plastic and in finding solutions together, implementing techniques of responsible consumption and techniques of solid waste management.
We present the problem of plastics in a talk adapted for different audiences; for example, for elementary school, for high school or for community centers. We open a dialog to think over and identify habits that we could improve, and we co-create solutions with the public that can be implemented at the individual level. Duration: 1 hour•Ages: From 8 years We teach how to cut and crochet plastic bags. We expose models of finished products and propose feasible projects in the short term. We open a dialog to think over and identify habits that could be improved, and we co-create solutions with the public that can be implemented at the individual level. Proposed for people of both genres with different crocheting abilities. Duration: 2 hours•Ages: From 12 years•Quota: up to 20 people We teach how to cut and crochet plastic bags to achieve a finished product (e.g. owl mobiles, bird mobiles, baskets). We open a dialog to think over and identify habits that could be improved, and we co-create solutions with the public that can be implemented at the individual level. Proposed for people of both genres with intermediate crocheting abilities. Duration: 4 hours•Ages: From 12 years•Quota: up to 10-20 people We conduct three meetings of 2 hours each, separated by a minimum of one week, where we teach how to cut and crochet plastic bags to finish a tote bag. We follow the crocheted products and recommend improvements to achieve a tidy product. We open a dialog to think over and identify habits that we could improve, and we co-create solutions with the public that can be implemented at the individual level. Proposed for people of both genres with different crocheting abilities. Duration: 6 hours•Ages: From 12 years•Quota: up to 25 people Ask for our services or our advice sending an e-mail to:CONFERENCE AND DEBATE
PLASTIC CROCHET WORKSHOPS AND DEBATE
1. Initial
2. Advanced
3. Intensive


CARAVAGGIO (director/writer: Derek Jarman; screenwriter: from an original idea by Nicholas Ward Jackson; cinematographer: Gabriel Beristain; editor: George Akers; cast: Nigel Terry (Caravaggio), Sean Bean (Rannuccio Thomasoni), Tilda Swinton (Lena), Nigel Davenport (Marchese Giustiniani), Michael Gough (Cardinal Del Monte), Robbie Coltrane (Scipione Borghese), Jack Birkett (Pope); Runtime: 93; British Film Institute; 1986-UK)
Reviewed by Dennis Schwartz
An iconoclastic biopic about the adventurous 17th century late-Renaissance painter Michelangelo Merisa da Caravaggio, who was born in 1573 and died in 1610. The Baroque artist is superbly played by Nigel Terry and the story is brilliantly adapted to the screen by English director Derek Jarman. It is very sensually done, emphasizing the artist's gargantuan appetites for bisexual and, especially, homosexual affairs with his models, the various scandals he was involved in--including murder, his tricky dealings with the church, and the director's playful anachronisms, purposefully including in his film the modern street sounds as background. Successfully filmed on a very restricted budget, which only proves, if you know how to shoot a film, you can do it on shoestring budget and still come up with an outstanding film.
Derek Jarman's brief film career (this was his major film debut) came to an unfortunate end in 1994, when he died of AIDS. His original way of shooting a biopic (highly personal but still factual), whereby Caravaggio's most famous works are recreated with actors who are filmed in a style true to Caravaggio's chiaroscuro paintings (the artist's gift to the art world), makes for a one of a kind film. Jarman creates an inspiring visual atmosphere for Nigel Terry's brooding artist portrayal, of the artist on his death bed. We learn about him through his voiceover and the disjointed time frame of his flashbacks, that tells of his short life, which comes back to him in spurts of energy and in a hauntingly disquieting manner. This art house film, a classic in gay cinema reaching out to a mainstream audience, the director's most accessible film, was winner of the Silver Bear at the 1986 Berlin Film Festival.
The film opens with Caravaggio bemoaning his fate on his death bed at Porto Ercole and his mind drifting in and out with memories of the 40 years he was always on the run, by making the declarative statement that "Man's character is his fate." My favorite quote of his, "Through doubt comes insight," has a ring of inspiration for what egged him on to lead an unconventional life. In the flashbacks, we see that from his very youthful beginnings as a struggling artist, his passions were always ripe and his lively sexual encounters were partial to the homoerotic ones. His artistic talents were exploited by the Cardinal, which led to their strange relationship and for him to be made the genius painter for the church, painting their holy figures and saints...with the prostitutes, thieves, gay men and those from the lower classes he used as models. To add further references to his vile character, he kept a deaf/mute child as a slave and lived in such a lavish style that he squandered all his money.
That this film should make us concerned about this intemperate artist, which is not an easy task to do, is accomplished despite telling us as little about him as possible, but letting us instead examine him and his paintings in exacting detail by using close-ups and by making his death watch a solemn scene, befitting a giant of a man passing before mere mortals.
His most important relationship shown, was with the muscular Ranuccio Thomasoni who first boxed with him and then posed as the assassin in his 'martyrdom' oils. The other embroiling relationship was with Lena, Ranuccio's mistress and the artist's exotic model for Magdalene and the Virgin, whose pregnancy becomes a tragic moment for her. They formed a ménage à trois and that bawdy relationship becomes the heart of the film.
The film captures the turbulent nature of the artist, accurately showing his inventive art technique (the basis for current movie lighting techniques), and it relates how the low birth artist still had so much anger in him even as he grew in status and how he always painted in such a feverish pitch, always the passionate artist. The film also lets us see how he can so easily kill someone he loved because he believed he was doing something that was just. As a result this is a dark but imaginative look at the artist, one that has weight to it and works very well, which should be more pleasing to art lovers than the general public.
REVIEWED ON 12/11/2000 GRADE: B+
Dennis Schwartz: "Ozus' World Movie Reviews"
http://www.sover.net/~ozus
<EMAIL_ADDRESS>© ALL RIGHTS RESERVED DENNIS SCHWARTZ
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


{% extends "foreign/foreign_base.html" %} {% load staticfiles %} {% block pagetopics %} Proposed Arms {% endblock %} {% block ogsharetxt %} "Where is the US exporting weapons? Dig into the latest federal arms proposals here. A transparency project from the Sunlight Foundation http://{{ OG_DOMAIN }}{{ request.path }}" {% endblock %} {% block fbsharetxt %} "Where is the US exporting weapons? Dig into the latest federal arms proposals here. A transparency project from the Sunlight Foundation http://{{ OG_DOMAIN }}{{ request.path }}" {% endblock %} {% block twitter %} "Where is the US exporting weapons? Dig into the latest federal arms proposals here: #foreigninfluence http://{{ OG_DOMAIN }}{{ request.path }}" {% endblock %} {% block main_content %}
Latest press releases from The Defense Security Cooperation Agency. Keep in mind, the sales mentioned in this feed are only proposed and may not happen.
Click here for an explanation of these records.


What is grid based design?
Separating a website's design into a series of grids allows us to see how to implement elements -- essentially serve as a guide for building a website.
Whats all the hype about responsive webpages?
Responsive webpages, are webpages that respond to user's behaviour / environment -- such as changing the width of their browser.
A responsive webpage would respond by dynamically changing all, or chosen elements of a webpage to
accomodate this.
This idea is commonly supported with the use of "media-queries", saying: if the screen size is less
than x number of pixels (say, the max-width of a phone's display-resolution), the following CSS styles
apply.
What is semantic structure?
Markup "semantic structure", or "semantic structure", is the concept of presenting / laying-out your HTML in a way that makes it readable, easy to understand or reference. It's an important habit, and even moreso when working in teams.
Any other points you found interesting and want to reflect on?
Building a webpage with a variety of technologies / frameworks was really interesting -- and it's easy to see why these frameworks are used; but with a combination of a framework such as Bootstrap and your own CSS, you can add your own personal touch to the design.


{% extends 'base.html' %} {% block content %} {% if user.is_superuser%}
Are you sure you want to delete "{{ department.name }}"?
Sorry, you need Admin privileges, contact your administrator for questions. Have a nice day !


### PAGE CONSTRUCTION WITH LIQUID
###
### default.html layout
###
<html>
{% include head.html %}
<body>
{% include header.html %}
{{ content }}
{% include footer.html %}
</body>
</html>
###
### {% include xxxx.html %}
### is replaced by content
### from the file xxxx.html
### in the _includes folder.
###
### {% include xxxx.html %} Files:
>> head.html
>> header.html
>> footer.html


4-Element Motion Illusions
4-element motion illusions are illusions consisting of patterns of elements with four different luminance values — one darkest (usually black), one somewhat dark, one somewhat light, and one lightest (usually white). When these elements are arranged in the order darkest —> mid-dark —> lightest —> mid-light, they can create an illusory motion effect in the direction of the arrows.


Reset DB
×
Close
Put Data
Date
IN
OUT
Type
Manage Type
Method
Manage Card
Money
×
Close
Manage Type
IN
OUT
Type
×
Close
Manage Card
Credit Card
Check Card
Name
Billing Day
Start Day of Using Period
Start Day of Cash Service Period


| constants |
Global constants |
| init |
tVar init script
Load required modules |
| interpreter |
Interpreter Skript
contains functions for interpreting tVar code into Lua code |
| misc |
global misc script
contains function tend to be useed by every module |
| plot |
Plot functionality
contains all the functions and tables for plotting |
| tMat.calc |
calculation script
Contains Metatables and Functions for calculation |
| tMat.core |
core script
creates the basic object and the New-Function |
| tMat.misc |
misc script
contains function not intend to be used by users |
| tMat.print |
print script
contains function for output and formatting |
| tVar_sub.calc |
calculation script
Contains Metatables and Functions for calculation |
| tVar_sub.core |
core script
creates the basic object and the New-Function |
| tVar_sub.misc |
misc script
contains function not intend to be used by users |
| tVar_sub.print |
print script
contains function for output and formatting |
| tVec.calc |
calculation script
Contains Metatables and Functions for calculation |
| tVec.core |
core script
creates the basic object and the New-Function |
| tVec.misc |
misc script
contains function not intend to be used by users |


workbox-broadcast-cache-update
workbox-broadcast-cache-update
A helper library that uses the Broadcast Channel API to announce when a caches entry is updated with a new response, allowing your web app to listen for these updates and react to them.
Most developers will use this module by instantiating a new
BroadcastCacheUpdatePlugin
and passing it to a
RequestWrapper, as shown in the first example below.
You can listen for updates from your web app by adding an event listener on a BroadcastChannel
within a page, using the same channel name as what's used within the service worker, as shown in the second example.
Classes
BroadcastCacheUpdate
Can be used to compare two Responses and uses the Broadcast Channel API to notify interested parties when those responses differ.
For efficiency's sake, the underlying response bodies are not compared; only specific response headers are checked.
This class can be used inside any service worker, without having to use any of the other modules in this repo.
If you'd like to use this functionality but are already using workbox-sw
or
workbox-runtime-caching
, please see use the
BroadcastCacheUpdatePlugin for a easy integration.
BroadcastCacheUpdatePlugin
Can be used to compare two Responses and uses the Broadcast Channel API to notify interested parties when those responses differ.
For efficiency's sake, the underlying response bodies are not compared; only specific response headers are checked.
This class is meant to be automatically invoked as a plugin by a
RequestWrapper, which is used by the workbox-sw
and workbox-runtime-caching
modules.
If you would like to use this functionality outside of the RequestWrapper
context, please use the
BroadcastCacheUpdate class directly.
Property
cacheUpdatedMessageType
string
This is a static variable for the cache updated message type. Useful for comparing to the messages type
parameter to identify the kind of message.
Example
// Prints 'CACHE_UPDATED'
console.log(workbox.broadcastCacheUpdate.cacheUpdatedMessageType);


No location set, log in or select your location!
Sky chart
Watchlist
Nothing here, add some objects from the catalog below or check your
filters above.
Catalog
Page
0
of
0
-
Showing
0
to
0
of
0
DSOs
-
No results, check your filters above.


| skimage.feature.corner_foerstner(image[, sigma]) | Compute Foerstner corner measure response image. |
| skimage.feature.corner_harris(image[, ...]) | Compute Harris corner measure response image. |
| skimage.feature.corner_kitchen_rosenfeld(image) | Compute Kitchen and Rosenfeld corner measure response image. |
| skimage.feature.corner_moravec | Compute Moravec corner measure response image. |
| skimage.feature.corner_peaks(image[, ...]) | Find corners in corner measure response image. |
| skimage.feature.corner_shi_tomasi(image[, sigma]) | Compute Shi-Tomasi (Kanade-Tomasi) corner measure response image. |
| skimage.feature.corner_subpix(image, corners) | Determine subpixel position of corners. |
| skimage.feature.daisy(img[, step, radius, ...]) | Extract DAISY feature descriptors densely for the given image. |
| skimage.feature.greycomatrix(image, ...[, ...]) | Calculate the grey-level co-occurrence matrix. |
| skimage.feature.greycoprops(P[, prop]) | Calculate texture properties of a GLCM. |
| skimage.feature.hog(image[, orientations, ...]) | Extract Histogram of Oriented Gradients (HOG) for a given image. |
| skimage.feature.local_binary_pattern(image, P, R) | Gray scale and rotation invariant LBP (Local Binary Patterns). |
| skimage.feature.match_template(image, template) | Match a template to an image using normalized correlation. |
| skimage.feature.peak_local_max(image[, ...]) | Find peaks in an image, and return them as coordinates or a boolean array. |
Compute Foerstner corner measure response image.
This corner detector uses information from the auto-correlation matrix A:
A = [(imx**2) (imx*imy)] = [Axx Axy]
[(imx*imy) (imy**2)] [Axy Ayy]
Where imx and imy are the first derivatives averaged with a gaussian filter. The corner measure is then defined as:
w = det(A) / trace(A) (size of error ellipse)
q = 4 * det(A) / trace(A)**2 (roundness of error ellipse)
| Parameters : | image : ndarray
sigma : float, optional
|
|---|---|
| Returns : | w : ndarray
q : ndarray
|
References
| [R99] | http://www.ipb.uni-bonn.de/uploads/tx_ikgpublication/foerstner87.fast.pdf |
| [R100] | http://en.wikipedia.org/wiki/Corner_detection |
Examples
>>> from skimage.feature import corner_foerstner, corner_peaks
>>> square = np.zeros([10, 10])
>>> square[2:8, 2:8] = 1
>>> square
array([[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
[ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
[ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
[ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
[ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
[ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])
>>> w, q = corner_foerstner(square)
>>> accuracy_thresh = 0.5
>>> roundness_thresh = 0.3
>>> foerstner = (q > roundness_thresh) * (w > accuracy_thresh) * w
>>> corner_peaks(foerstner, min_distance=1)
array([[2, 2],
[2, 7],
[7, 2],
[7, 7]])
Compute Harris corner measure response image.
This corner detector uses information from the auto-correlation matrix A:
A = [(imx**2) (imx*imy)] = [Axx Axy]
[(imx*imy) (imy**2)] [Axy Ayy]
Where imx and imy are the first derivatives averaged with a gaussian filter. The corner measure is then defined as:
det(A) - k * trace(A)**2
or:
2 * det(A) / (trace(A) + eps)
| Parameters : | image : ndarray
method : {‘k’, ‘eps’}, optional
k : float, optional
eps : float, optional
sigma : float, optional
|
|---|---|
| Returns : | response : ndarray
|
References
| [R101] | http://kiwi.cs.dal.ca/~dparks/CornerDetection/harris.htm |
| [R102] | http://en.wikipedia.org/wiki/Corner_detection |
Examples
>>> from skimage.feature import corner_harris, corner_peaks
>>> square = np.zeros([10, 10])
>>> square[2:8, 2:8] = 1
>>> square
array([[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
[ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
[ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
[ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
[ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
[ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])
>>> corner_peaks(corner_harris(square), min_distance=1)
array([[2, 2],
[2, 7],
[7, 2],
[7, 7]])
Compute Kitchen and Rosenfeld corner measure response image.
The corner measure is calculated as follows:
:Parameters:
image : ndarray
Input image.
| Returns : | response : ndarray
|
|---|
Compute Moravec corner measure response image.
This is one of the simplest corner detectors and is comparatively fast but has several limitations (e.g. not rotation invariant).
| Parameters : | image : ndarray
window_size : int, optional (default 1)
|
|---|---|
| Returns : | response : ndarray
|
References
..[1] http://kiwi.cs.dal.ca/~dparks/CornerDetection/moravec.htm ..[2] http://en.wikipedia.org/wiki/Corner_detection
Examples
>>> from skimage.feature import moravec, peak_local_max
>>> square = np.zeros([7, 7])
>>> square[3, 3] = 1
>>> square
array([[ 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 1., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0.]])
>>> moravec(square)
array([[ 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 1., 1., 1., 0., 0.],
[ 0., 0., 1., 2., 1., 0., 0.],
[ 0., 0., 1., 1., 1., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0.]])
Find corners in corner measure response image.
This differs from skimage.feature.peak_local_max in that it suppresses multiple connected peaks with the same accumulator value.
| Parameters : | See `skimage.feature.peak_local_max`. : |
|---|---|
| Returns : | See `skimage.feature.peak_local_max`. : |
Examples
>>> from skimage.feature import peak_local_max, corner_peaks
>>> response = np.zeros((5, 5))
>>> response[2:4, 2:4] = 1
>>> response
array([[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 1., 1., 0.],
[ 0., 0., 1., 1., 0.],
[ 0., 0., 0., 0., 0.]])
>>> peak_local_max(response, exclude_border=False)
array([[2, 2],
[2, 3],
[3, 2],
[3, 3]])
>>> corner_peaks(response, exclude_border=False)
array([[2, 2]])
>>> corner_peaks(response, exclude_border=False, min_distance=0)
array([[2, 2],
[2, 3],
[3, 2],
[3, 3]])
Compute Shi-Tomasi (Kanade-Tomasi) corner measure response image.
This corner detector uses information from the auto-correlation matrix A:
A = [(imx**2) (imx*imy)] = [Axx Axy]
[(imx*imy) (imy**2)] [Axy Ayy]
Where imx and imy are the first derivatives averaged with a gaussian filter. The corner measure is then defined as the smaller eigenvalue of A:
((Axx + Ayy) - sqrt((Axx - Ayy)**2 + 4 * Axy**2)) / 2
| Parameters : | image : ndarray
sigma : float, optional
|
|---|---|
| Returns : | response : ndarray
|
References
| [R103] | http://kiwi.cs.dal.ca/~dparks/CornerDetection/harris.htm |
| [R104] | http://en.wikipedia.org/wiki/Corner_detection |
Examples
>>> from skimage.feature import corner_shi_tomasi, corner_peaks
>>> square = np.zeros([10, 10])
>>> square[2:8, 2:8] = 1
>>> square
array([[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
[ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
[ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
[ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
[ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
[ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])
>>> corner_peaks(corner_shi_tomasi(square), min_distance=1)
array([[2, 2],
[2, 7],
[7, 2],
[7, 7]])
Determine subpixel position of corners.
| Parameters : | image : ndarray
corners : (N, 2) ndarray
window_size : int, optional
alpha : float, optional
|
|---|---|
| Returns : | positions : (N, 2) ndarray
|
References
| [R105] | http://www.ipb.uni-bonn.de/uploads/tx_ikgpublication/ foerstner87.fast.pdf |
| [R106] | http://en.wikipedia.org/wiki/Corner_detection |
Extract DAISY feature descriptors densely for the given image.
DAISY is a feature descriptor similar to SIFT formulated in a way that allows for fast dense extraction. Typically, this is practical for bag-of-features image representations.
The implementation follows Tola et al. [R107] but deviate on the following points:
- Histogram bin contribution are smoothed with a circular Gaussian window over the tonal range (the angular range).
- The sigma values of the spatial Gaussian smoothing in this code do not match the sigma values in the original code by Tola et al. [R108]. In their code, spatial smoothing is applied to both the input image and the center histogram. However, this smoothing is not documented in [R107] and, therefore, it is omitted.
| Parameters : | img : (M, N) array
step : int, optional
radius : int, optional
rings : int, optional
histograms : int, optional
orientations : int, optional
normalization : [ ‘l1’ | ‘l2’ | ‘daisy’ | ‘off’ ], optional
sigmas : 1D array of float, optional
ring_radii : 1D array of int, optional
visualize : bool, optional
|
|---|---|
| Returns : | descs : array
descs_img : (M, N, 3) array (only if visualize==True)
|
References
| [R107] | (1, 2, 3) Tola et al. “Daisy: An efficient dense descriptor applied to wide- baseline stereo.” Pattern Analysis and Machine Intelligence, IEEE Transactions on 32.5 (2010): 815-830. |
| [R108] | (1, 2) http://cvlab.epfl.ch/alumni/tola/daisy.html |
Calculate the grey-level co-occurrence matrix.
A grey level co-occurence matrix is a histogram of co-occuring greyscale values at a given offset over an image.
| Parameters : | image : array_like of uint8
distances : array_like
angles : array_like
levels : int, optional
symmetric : bool, optional
normed : bool, optional
|
|---|---|
| Returns : | P : 4-D ndarray
|
References
| [R109] | The GLCM Tutorial Home Page, http://www.fp.ucalgary.ca/mhallbey/tutorial.htm |
| [R110] | Pattern Recognition Engineering, Morton Nadler & Eric P. Smith |
| [R111] | Wikipedia, http://en.wikipedia.org/wiki/Co-occurrence_matrix |
Examples
Compute 2 GLCMs: One for a 1-pixel offset to the right, and one for a 1-pixel offset upwards.
>>> image = np.array([[0, 0, 1, 1],
... [0, 0, 1, 1],
... [0, 2, 2, 2],
... [2, 2, 3, 3]], dtype=np.uint8)
>>> result = greycomatrix(image, [1], [0, np.pi/2], levels=4)
>>> result[:, :, 0, 0]
array([[2, 2, 1, 0],
[0, 2, 0, 0],
[0, 0, 3, 1],
[0, 0, 0, 1]], dtype=uint32)
>>> result[:, :, 0, 1]
array([[3, 0, 2, 0],
[0, 2, 2, 0],
[0, 0, 1, 2],
[0, 0, 0, 0]], dtype=uint32)
Calculate texture properties of a GLCM.
Compute a feature of a grey level co-occurrence matrix to serve as a compact summary of the matrix. The properties are computed as follows:
‘contrast’:
‘dissimilarity’:
‘homogeneity’:
‘ASM’:
‘energy’:
| Parameters : | P : ndarray
prop : {‘contrast’, ‘dissimilarity’, ‘homogeneity’, ‘energy’, ‘correlation’, ‘ASM’}, optional
|
|---|---|
| Returns : | results : 2-D ndarray
|
References
| [R112] | The GLCM Tutorial Home Page, http://www.fp.ucalgary.ca/mhallbey/tutorial.htm |
Examples
Compute the contrast for GLCMs with distances [1, 2] and angles [0 degrees, 90 degrees]
>>> image = np.array([[0, 0, 1, 1],
... [0, 0, 1, 1],
... [0, 2, 2, 2],
... [2, 2, 3, 3]], dtype=np.uint8)
>>> g = greycomatrix(image, [1, 2], [0, np.pi/2], levels=4,
... normed=True, symmetric=True)
>>> contrast = greycoprops(g, 'contrast')
>>> contrast
array([[ 0.58333333, 1. ],
[ 1.25 , 2.75 ]])
Extract Histogram of Oriented Gradients (HOG) for a given image.
Compute a Histogram of Oriented Gradients (HOG) by
- (optional) global image normalisation
- computing the gradient image in x and y
- computing gradient histograms
- normalising across blocks
- flattening into a feature vector
| Parameters : | image : (M, N) ndarray
orientations : int
pixels_per_cell : 2 tuple (int, int)
cells_per_block : 2 tuple (int,int)
visualise : bool, optional
normalise : bool, optional
|
|---|---|
| Returns : | newarr : ndarray
hog_image : ndarray (if visualise=True)
|
References
Gray scale and rotation invariant LBP (Local Binary Patterns).
LBP is an invariant descriptor that can be used for texture classification.
| Parameters : | image : (N, M) array
P : int
R : float
method : {‘default’, ‘ror’, ‘uniform’, ‘var’}
|
|---|---|
| Returns : | output : (N, M) array
|
References
| [R113] | Multiresolution Gray-Scale and Rotation Invariant Texture Classification with Local Binary Patterns. Timo Ojala, Matti Pietikainen, Topi Maenpaa. http://www.rafbis.it/biplab15/images/stories/docenti/Danielriccio/ Articoliriferimento/LBP.pdf, 2002. |
| [R114] | Face recognition with local binary patterns. Timo Ahonen, Abdenour Hadid, Matti Pietikainen, http://citeseerx.ist.psu.edu/viewdoc/summary?doi=<IP_ADDRESS>.6851, 2004. |
Match a template to an image using normalized correlation.
The output is an array with values between -1.0 and 1.0, which correspond to the probability that the template is found at that position.
| Parameters : | image : array_like
template : array_like
pad_input : bool
|
|---|---|
| Returns : | output : ndarray
|
Examples
>>> template = np.zeros((3, 3))
>>> template[1, 1] = 1
>>> print(template)
[[ 0. 0. 0.]
[ 0. 1. 0.]
[ 0. 0. 0.]]
>>> image = np.zeros((6, 6))
>>> image[1, 1] = 1
>>> image[4, 4] = -1
>>> print(image)
[[ 0. 0. 0. 0. 0. 0.]
[ 0. 1. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. -1. 0.]
[ 0. 0. 0. 0. 0. 0.]]
>>> result = match_template(image, template)
>>> print(np.round(result, 3))
[[ 1. -0.125 0. 0. ]
[-0.125 -0.125 0. 0. ]
[ 0. 0. 0.125 0.125]
[ 0. 0. 0.125 -1. ]]
>>> result = match_template(image, template, pad_input=True)
>>> print(np.round(result, 3))
[[-0.125 -0.125 -0.125 0. 0. 0. ]
[-0.125 1. -0.125 0. 0. 0. ]
[-0.125 -0.125 -0.125 0. 0. 0. ]
[ 0. 0. 0. 0.125 0.125 0.125]
[ 0. 0. 0. 0.125 -1. 0.125]
[ 0. 0. 0. 0.125 0.125 0.125]]
Find peaks in an image, and return them as coordinates or a boolean array.
Peaks are the local maxima in a region of 2 * min_distance + 1 (i.e. peaks are separated by at least min_distance).
NOTE: If peaks are flat (i.e. multiple adjacent pixels have identical intensities), the coordinates of all such pixels are returned.
| Parameters : | image : ndarray of floats
min_distance : int
threshold_abs : float
threshold_rel : float
exclude_border : bool
indices : bool
num_peaks : int
footprint : ndarray of bools, optional
labels : ndarray of ints, optional
|
|---|---|
| Returns : | output : (N, 2) array or ndarray of bools
|
Notes
The peak local maximum function returns the coordinates of local peaks (maxima) in a image. A maximum filter is used for finding local maxima. This operation dilates the original image. After comparison between dilated and original image, peak_local_max function returns the coordinates of peaks where dilated image = original.
Examples
>>> im = np.zeros((7, 7))
>>> im[3, 4] = 1
>>> im[3, 2] = 1.5
>>> im
array([[ 0. , 0. , 0. , 0. , 0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. , 0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. , 0. , 0. , 0. ],
[ 0. , 0. , 1.5, 0. , 1. , 0. , 0. ],
[ 0. , 0. , 0. , 0. , 0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. , 0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. , 0. , 0. , 0. ]])
>>> peak_local_max(im, min_distance=1)
array([[3, 2],
[3, 4]])
>>> peak_local_max(im, min_distance=2)
array([[3, 2]])


Installing Dependencies
Installing Packages on Standard Infrastructure
To install Ubuntu packages that are not included in the default standard, use apt-get in the before_install
step of your .travis.yml
:
before_install:
- sudo apt-get -qq update
- sudo apt-get install -y libxml2-dev
Make sure to run
apt-get update
to update the list of available packages (apt-get upgrade
as it downloads up to 500MB of packages and significantly extends your build time.Use the
-y
parameter with apt-get to assume yes as the answer to each apt-get prompt.
Installing Packages from a custom APT repository
For some packages, you may find an existing repository, which isn’t yet set up on our build environment by default. You can easily add custom repositories and Launchpad PPAs as part of your build.
For example, to install gcc from the ubuntu-toolchain ppa
before_install:
- sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
- sudo apt-get update -q
- sudo apt-get install gcc-4.8 -y
For repositories not hosted on Launchpad, you need to add a GnuPG key as well.
If you’re installing packages this way, make sure you download the correct version for your environment.
This example adds the APT repository for Varnish 3.0 for Ubuntu 12.04 to the locally available list of APT sources and then installs the varnish
package.
before_script:
- curl http://repo.varnish-cache.org/debian/GPG-key.txt | sudo apt-key add -
- echo "deb http://repo.varnish-cache.org/ubuntu/ precise varnish-3.0" | sudo tee -a /etc/apt/sources.list
- sudo apt-get update -qq
- sudo apt-get install varnish -y
Installing Packages without an APT Repository
For some projects, there may be a Debian/Ubuntu package available, but no corresponding APT repository. These are still easy to install, but require the extra step of downloading.
If you’re installing packages this way, make sure you download the correct version for your environment.
Say your project requires the pngquant tool to compress PNG files, here’s how to download and install the .deb file:
before_install:
- wget http://pngquant.org/pngquant_1.7.1-1_i386.deb
- sudo dpkg -i pngquant_1.7.1-1_i386.deb
Installing Packages with the APT Addon
You can also use the APT addon.
This addon provides declarative shortcuts to basic operations of the apt-get
commands.
If your requirements goes beyond the normal installation, please use another method described above.
Adding APT Sources
To add APT sources, you can use one of the following three types of entries:
- aliases defined in source whitelist
sourceline
key-value pairs which will be added to/etc/apt/sources.list
- when APT sources require GPG keys, you can specify this with
key_url
pairs in addition tosourceline
.
The following snippet shows these three types of APT sources
addons:
apt:
sources:
- deadsnakes
- sourceline: 'ppa:ubuntu-toolchain-r/test'
- sourceline: 'deb https://packagecloud.io/chef/stable/ubuntu/precise main'
key_url: 'https://packagecloud.io/gpg.key'
Adding APT Packages
List APT packages under the addons.apt.packages
key:
addons:
apt:
packages:
- cmake
- time
Note: When using APT sources and packages together, you need to make sure they are under the same key space in the YAML file. e.g.
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- gcc-4.8
- g++-4.8
Note: If
apt-get install
fails, the build is marked an error.
Installing Snap Packages
You can install snap packages in the sudo enabled infrastructure using the Trusty dist.
The Ubuntu snap store offers many packages directly maintained by upstream developers, with newer versions than the ones available in the Trusty archive, or even packages that didn’t exist when Trusty was released. For example, you can install and run the latest version of hugo:
sudo: true
dist: trusty
install:
- sudo apt-get --yes install snapd
- sudo snap install hugo
script:
- /snap/bin/hugo new site test-site
Installing Packages on Container Based Infrastructure
To install packages not included in the default container-based-infrastructure you need to use the APT addon, as sudo apt-get
is not available.
Adding APT Sources
To add APT sources from the source whitelist before your custom build steps, use the addons.apt.sources
key:
addons:
apt:
sources:
- deadsnakes
- ubuntu-toolchain-r-test
Adding APT Packages
To install packages from the package whitelist before your custom build steps, use the addons.apt.packages
key:
addons:
apt:
packages:
- cmake
- time
Note: When using APT sources and packages together, you need to make sure they are under the same key space in the YAML file. e.g.
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- gcc-4.8
- g++-4.8
Note: If
apt-get install
fails, the build is marked an error.
Identifying the source for a missing package
If you add a package to the APT addon key in your .travis.yml
but the package is not found, you see a message in the Travis CI build log like this:
Installing APT Packages
⋮
E: Unable to locate package libcxsparse3.1.2
E: Couldn't find any package by regex 'libcxsparse3.1.2'
To install the package, identify APT source and specify it in the addon key of your .travis.yml
:
-
Search for the pull request that added the package on GitHub. For example, searching for “libcxsparse3.1.2” results in pull request 1194.
-
Open the pull request, and click the link to the test in the pull request comment. Continuing the example above, Travis CI Build 80620536 .
-
Search the build log for the phrase “Fetching source package for …” and expand the section.
-
Match that source against the
alias
name shown in the source list.
In our example, the source alias is “lucid”:
addons:
apt:
sources:
- lucid
packages:
- libcxsparse3.1.2
If you require additional package sources, please use
sudo: required
in your.travis.yml
file and install them manually. Unfortunately, we are unable to process APT sources requests at this time.
Installing Packages on OS X
To install packages that are not included in the default OS X environment use Homebrew in your .travis.yml
. For example, to install beanstalk:
before_install:
- brew update # see note below
- brew install beanstalk
To speed up your build, try installing your packages without running
brew update
first, to see if the Homebrew database on the build image already has what you need.
Installing Dependencies on Multiple Operating Systems
If you’re testing on both Linux and OS X, use the $TRAVIS_OS_NAME
variable to install dependencies separately:
install:
- if [ $TRAVIS_OS_NAME = linux ]; then sudo apt-get install foo; else brew install bar; fi
Installing Projects from Source
Some dependencies can only be installed from a source package. The build may require a more recent version or a tool or library that’s not available as a Ubuntu package.
You can easily include the build steps in either your .travis.yml or, and this is the recommended way, by running a script to handle the installation process.
Here’s a simple example that installs CasperJS from a binary package:
before_script:
- wget https://github.com/n1k0/casperjs/archive/1.0.2.tar.gz -O /tmp/casper.tar.gz
- tar -xvf /tmp/casper.tar.gz
- export PATH=$PATH:$PWD/casperjs-1.0.2/bin/
Note that when you’re updating the $PATH
environment variable, that part can’t be moved into a shell script, as it will only update the variable for the sub-process that’s running the script.
To install something from source, you can follow similar steps. Here’s an example to download, compile and install the protobufs library.
install:
- wget https://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz
- tar -xzvf protobuf-2.4.1.tar.gz
- pushd protobuf-2.4.1 && ./configure --prefix=/usr && make && sudo make install && popd
These three commands can be extracted into a shell script, let’s name it install-protobuf.sh
:
#!/bin/sh
set -ex
wget https://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz
tar -xzvf protobuf-2.4.1.tar.gz
cd protobuf-2.4.1 && ./configure --prefix=/usr && make && sudo make install
Once it’s added to the repository, you can run it from your .travis.yml:
before_install:
- ./install-protobuf.sh
Note that the first version uses pushd
and popd
to ensure that after the install
section completes, the working directory is returned to its original value. This is not necessary in the shell script, as it runs in a sub-shell and so does not alter the original working directory.


We've got what you need!
Marker Bot
Marker Bot is the world’s first writing device that can mimic your handwriting. Edit letters, assignments, posters and essays, all on a computer, then use Marker Bot to write them in your own handwriting, all without holding a pencil.
Handwriting documents can be a pain. It’s time consuming, mistakes are difficult to correct, and the end result can often be smudged and generally messy. Marker Bot solves this, by giving you the speed, editing ability, and neatness of documents on a computer. After you teach it your handwriting, you can give it any text document to write out automatically.
Why Marker Bot?


Make a Vine video and tell us how you plan to remix your life. The most creative submissions win a Surface Music Kit.
Join nowSoon you'll be able to enter a remix competition. In the meantime, join the #RemixProject.
Click the backlit Cover into your Surface, and the app will install automatically.*
You get the building blocks of a song: templates, drums, bass, keyboard, vocals, and more.
Experiment with content from familiar and emerging artists or import your own.
Create new music easily using the loop, mute, and solo functions.
Pressure-sensitive pads on the Music Cover control parts of songs, loops, instruments, vocals, hooks, and beats. Sliders adjust volume and FX.
Automatically sync beats per minute (BPM) and key for seamless mixing. You don't need to be a pro to sound like one.
The Kit helps you choose which sounds and samples work best with each other.
Listen to the new collaboration between STEVE AOKI x LINKIN PARK, "A LIGHT THAT NEVER COMES."
Are you itching to get your hands on the Surface Music Kit? Show us how you plan to remix your life with a creative Vine video and submit it for a chance to win.


from sklearn.ensemble import RandomForestClassifier
from . import parameter_selection
SEED = 0
HYPERPARAMS = {'n_estimators': 200,
'max_depth': None,
'max_features': 'log2'}
[docs]def train(X_train, y_train, hyperparameters=HYPERPARAMS, pickle_dump=False):
"""Function that generates a trained RandomForestClassifier model
Parameters
==========
X_train : numpy.ndarray
Training data matrix.
y_train : numpy.ndarray
Training ground truth vector.
hyperparameters : dict
Dictionary with RandomForestClassifier arguments as keys.
If a None value is passed as argument, hyperparameter tuning
is conducted.
pickle_dump: bool
Boolean variable, if True it pickle dumps best hyperparameters
in case hyperparameter tuning is conducted.
Returns
=======
rf_clf : RandomForestClassifier
Trained RandomForestClassifier model
"""
if hyperparameters is None:
hyperparameters = parameter_selection.hyperparam_tuning(X_train, y_train, pickle_dump)
assert isinstance(hyperparameters, dict)
assert 'n_estimators' in hyperparameters
assert 'max_depth' in hyperparameters
assert 'max_features' in hyperparameters
rf_clf = RandomForestClassifier(**hyperparameters, random_state=SEED)
rf_clf.fit(X_train, y_train)
return rf_clf


TABLE OF INTERACTIONS WITH
BOTULINUM TOXIN
From the French ANSM drug interactions document of September 2016, p. 45
BOTULINUM TOXIN RxNorm: 1716 ATC: M03AX01 |
AMINOGLYCOSIDES CLASS CODE: J01GB-001 |
Risk of increase of the effects of the botulinum toxin with the aminoglycosides (by extrapolation from the effects observed during the course of the botulism) |
Not recommended Use another antibiotic. |


| Package | Description |
|---|---|
| org.apache.hadoop.hbase | |
| org.apache.hadoop.hbase.client |
Provides HBase Client
|
| org.apache.hadoop.hbase.mapred |
Provides HBase MapReduce
Input/OutputFormats, a table indexing MapReduce job, and utility
|
| org.apache.hadoop.hbase.mapreduce |
Provides HBase MapReduce
Input/OutputFormats, a table indexing MapReduce job, and utility
|
| org.apache.hadoop.hbase.rest.client |
| Class and Description |
|---|
| Durability
Enum describing the durability guarantees for tables and
Mutation s
Note that the items must be sorted in order of increasing durability |
| Result |
| Class and Description |
|---|
| Append
Performs Append operations on a single row.
|
| Attributes |
| ClientScanner
Implements the scanner interface for the HBase client.
|
| Delete
Used to perform Delete operations on a single row.
|
| Durability
Enum describing the durability guarantees for tables and
Mutation s
Note that the items must be sorted in order of increasing durability |
| Get
Used to perform Get operations on a single row.
|
| HConnection
A cluster connection.
|
| HTableInterface
Used to communicate with a single HBase table.
|
| HTableInterfaceFactory
Defines methods to create new HTableInterface.
|
| Increment
Used to perform Increment operations on a single row.
|
| IsolationLevel
Specify Isolation levels in Scan operations.
|
| Mutation |
| Operation
Superclass for any type that maps to a potentially application-level query.
|
| OperationWithAttributes |
| Put
Used to perform Put operations for a single row.
|
| Query |
| Result |
| ResultScanner
Interface for client-side scanning.
|
| RetriesExhaustedException
Exception thrown by HTable methods when an attempt to do something (like
commit changes) fails after a bunch of retries.
|
| RetriesExhaustedWithDetailsException
This subclass of
RetriesExhaustedException
is thrown when we have more information about which rows were causing which
exceptions on what servers. |
| ReversedClientScanner
A reversed client scanner which support backward scanning
|
| Row
Has a row.
|
| RowMutations
Performs multiple mutations atomically on a single row.
|
| Scan
Used to perform Scan operations.
|
| Class and Description |
|---|
| Put
Used to perform Put operations for a single row.
|
| Result |
| Class and Description |
|---|
| HConnection
A cluster connection.
|
| HTable
Used to communicate with a single HBase table.
|
| Mutation |
| Put
Used to perform Put operations for a single row.
|
| Result |
| Scan
Used to perform Scan operations.
|
| Class and Description |
|---|
| Append
Performs Append operations on a single row.
|
| Delete
Used to perform Delete operations on a single row.
|
| Durability
Enum describing the durability guarantees for tables and
Mutation s
Note that the items must be sorted in order of increasing durability |
| Get
Used to perform Get operations on a single row.
|
| HTableInterface
Used to communicate with a single HBase table.
|
| Increment
Used to perform Increment operations on a single row.
|
| Put
Used to perform Put operations for a single row.
|
| Result |
| ResultScanner
Interface for client-side scanning.
|
| Row
Has a row.
|
| RowMutations
Performs multiple mutations atomically on a single row.
|
| Scan
Used to perform Scan operations.
|
Copyright © 2014 The Apache Software Foundation. All rights reserved.


-
Surface scores with reigning NFL world champs - Surface Blog
blog.surface.com
It’s hard to believe, but after this week, one quarter of the 2014 NFL season will be in the books. By now, you’ve probably noticed NFL players and ...
-
Red Bull Brings Live Adrenaline Rush to Xbox 360 with Fierce Biking ...
news.xbox.com
On Sunday, Sept. 28, expect the unexpected to unfold live with Red Bull Rampage on Xbox 360 in the U.S. Available through the Red Bull TV app, Red ...
-
New wireless display adapter revealed and the Microsoft Cube unveiled – ...
blogs.microsoft.com
The rain has returned to Seattle, but it didn’t dampen the news this week. Read on to see how Microsoft is helping to evolve business — and the ...
-
Office 365: Excel on your Lumia - Conversations
conversations.nokia.com
With 1 terabyte of OneDrive storage and the latest version of Office across your devices, Office 365 is the perfect solution for getting things done ...
-
‘Asphalt Overdrive’ spins off into the ‘80s on Windows Phone, PCs and ...
blogs.microsoft.com
Even as leaves start to change color and summer’s warm glow fades, it’s always sunny in “Asphalt Overdrive” – set in the glorious excess of [ ...]
-
Announcing the return of WinHEC
blogs.windows.com
Every day, Windows hardware partners develop and ship to customers a broad set of innovative devices, ranging from personal mobile electronics like ...
-
We Spend Where We Live: Why Local and Mobile Search are the Same Thing
advertise.bingads.microsoft.com
The search industry has been abuzz this year with the growth of local and mobile search. Some prognosticators say it will be the end of desktop ...
-
Microsoft Offers Price Reductions on Select Azure Services | Microsoft ...
azure.microsoft.com
Claire Fang Director, Azure Business Planning
-
Invest and Evaluate: a Landscape Guide to Youth Workforce Development ...
blogs.technet.com
The Microsoft Unlimited Potential Blog tells the stories of Microsoft's Citizenship, corporate social responsibility and community efforts to help ...
-
Changes coming soon to the MPN for IoT partners - Windows Embedded Blog - ...
blogs.msdn.com
Microsoft
-
Say hello to the 2015 Office Champions | Office Blogs
blogs.office.com
Today, we are pleased to introduce to you this year’s group of Office Champions. Some of them are returning, and some of them are new—but all of them ...
-
The Value of API Partners on the Yahoo Bing Network: More Site Visits at ...
advertise.bingads.microsoft.com
When it comes to digital marketing, advertisers like you often face many choices. Much like an audio engineer has to perfectly balance all of the ...
-
HopeCam helps Leukemia patients fight loneliness with Skype
blogs.skype.com
Matt Forkas stared in the mirror but couldn’t recognize the bald, puffy, worn-out face looking back at him. However, when Matt looked into his web ...
-
Save 60 percent on ‘Halo: Spartan Assault’ in latest Red Stripe Deals - ...
blogs.microsoft.com
Every week, you can save on a dozen games and apps from the Windows Store and Windows Phone Store. The newest roster includes the first [ ...]
-
New Update for Windows Phone Preview for Developers
blogs.windows.com
For those of you participating in our Windows Phone Preview for Developers, we’ve got some good news as today we’ll begin delivery of an update that ...
-
Join Microsoft at EDUCAUSE 2014 in Orlando, Florida - Microsoft in ...
blogs.technet.com
Office 365 for Education - helpful technical information gathered by the U.S. Education Cloud Specialist Team Unit, consisting of Solution ...
-
5 tips to make your Outlook.com account even more secure | Office Blogs
blogs.office.com
In a world of multiple devices, online ubiquity, and cloud storage, the security of your personal content—email, documents, and photos—is more ...
-
Format Background in PowerPoint Online | Office Blogs
blogs.office.com
Over the summer, a crew of interns joined the PowerPoint team and our goal for them was to experience the excitement of designing and implementing ...
-
Xbox Wire
news.xbox.com
So far, Activision’s Skylanders games have been all about bringing toys to life. Put a toy on the included Portal of Power accessory, and boom – ...
-
Slender: The Arrival Now Available for Xbox 360 - Xbox Live's Major Nelson
majornelson.com
Slender: The Arrival is the official video game adaptation of Slender Man, re-created from Mark Hadley’s original
-
Travel Delays? You’re never stranded with Skype
blogs.skype.com
Travel delays are unfortunately an inevitable part of travel. But with Skype, travel delays don’t have to hamper productivity or communications with ...
-
Updated ‘Frozen Free Fall’ adds summer map and Olaf’s new sneeze power-up ...
blogs.microsoft.com
If you’ve seen Disney’s hit “Frozen,” then you probably know that Olaf the snowman sidekick absolutely adores summer. In the newest update to “Frozen ...
-
Defense Grid 2 is Now Available for Xbox One - Xbox Live's Major Nelson
majornelson.com
Setting the bar as the definitive tower defense game, Defense Grid 2 introduces new worlds and threats to test your tower placement strategies.
-
Announcing our support of the BRAID initiative - Microsoft Citizenship ...
blogs.technet.com
The Microsoft Unlimited Potential Blog tells the stories of Microsoft's Citizenship, corporate social responsibility and community efforts to help ...
-
Be a Microsoft Innovative Educator Expert - Apply by October 15th - ...
blogs.technet.com
Office 365 for Education - helpful technical information gathered by the U.S. Education Cloud Specialist Team Unit, consisting of Solution ...
-
We’re bringing you great audio quality and making improvements regardless ...
blogs.skype.com
It’s a good time to be a Skype user – several cutting edge improvements are on the way. One of these improvements is “advanced audio processing ...
-
Microsoft’s Cube debuts at Decibel, creating a one-of-a-kind digital dance ...
blogs.microsoft.com
Introducing the Cube: Microsoft’s interactive art installation, unveiled this week at Seattle’s Decibel Festival, a celebration of electronic music, ...
-
Microsoft Online Services Bug Bounty Program launches with Office 365 | ...
blogs.office.com
Travis Rhodes is senior security lead for Office 365 .
-
Build soccer dream team from more than 10,000 players on ‘FIFA 15: UT’ - ...
blogs.microsoft.com
Build a dream squad of footballers from more than 10,000 players and more than 500 teams on “FIFA 15: UT” – now available on Windows Phone, [ ...]


Create videos from 'R Markdown' documents, or images and audio files. These images can come from image files or HTML slides, and the audio files can be provided by the user or computer voice narration can be created using 'Amazon Polly'. The purpose of this package is to allow users to create accessible, translatable, and reproducible lecture videos. See <https://aws.amazon.com/polly/> for more information.
| Version: | 0.1.0 |
| Depends: | R (≥ 3.1.0) |
| Imports: | aws.polly, tuneR, webshot, purrr, rmarkdown, xml2, rvest, tools, progress |
| Suggests: | testthat, grDevices, xaringan |
| Published: | 2017-08-31 |
| Author: | Sean Kross [aut, cre], John Muschelli [ctb] |
| Maintainer: | Sean Kross <sean at seankross.com> |
| License: | MIT + file LICENSE |
| URL: | http://github.com/seankross/ari |
| NeedsCompilation: | no |
| SystemRequirements: | ffmpeg (>= 3.2.4) |
| Materials: | README NEWS |
| CRAN checks: | ari results |
| Reference manual: | ari.pdf |
| Package source: | ari_0.1.0.tar.gz |
| Windows binaries: | r-devel: ari_0.1.0.zip, r-release: ari_0.1.0.zip, r-oldrel: ari_0.1.0.zip |
| OS X binaries: | r-release: ari_0.1.0.tgz, r-oldrel: ari_0.1.0.tgz |
Please use the canonical form https://CRAN.R-project.org/package=ari to link to this page.


j FILMS
Website is currently under construction. Please visit again soon.
All Content is property of Lowercase j Films and Erika j Harvey.


--- title: "Data Models" permalink: /datamodels/ layout: page --- {% assign latestRelease = site.data.datamodels.latestRelease %}
The Apicurio Data Models library is a Java and TypeScript compatible library that provides reading, writing, analysis, modification, and validation of OpenAPI and AsyncAPI documents. Use this library if you need to support either OpenAPI or AsyncAPI specifications in your own projects.
The Apicurio Data Models library is written in Java and then transpiled to TypeScript using the very nice JSweet Utility. This results in the library being released both as a standard Maven library and released into Maven Central, as well as a JavaScript module released into npmjs.com.
The JSweet tool does a great job with the transpilation, allowing us to have a very thin compatibility layer to isolate functionality that cannot be transpiled from Java to TypeScript. In addition, we have a very comprehensive set of unit tests that are designed to run in both the Java and TypeScript builds. This is critical because it enables us to be very confident that the library behaves the same in both runtime environments.
The motivation for writing this library in this way is because the Apicurio Studio project requires this data modeling functionality in both the Java back-end layer and the browser front-end layer. As a result, this library is heavily used in both forms and is not just a novelty.


Lucky Luke - Poor lonesome cowboy https://youtu.be/1EpfwaSPBB8 Orig: D - Kapo: 3 R: C /C /D /E F /F /E /D /C We are lonesome cowboy dam dam dam dam lonesome cowboy da dam ta dam C Ami Ami7 D7 G7 You're a long long way from home C /C /D /E F /F /E /D /C We are lonesome cowboy dam dam dam dam lonesome cowboy da dam ta dam C Ami Ami7 D7 G7 C You've a long long way to roam C 1. I'm a poor lonesome cowboy I'm a long long way from home Emi Dmi7 Emi7 Fmaj D9/F# G /F /E /D And this poor lonesome cowboy has got a long long way to roam C C7 C9 F F7 Over mountains and over prairies from dawn 'til day is done G7 Ami Emi F G7 C /G /F /E /D /C My horse and me keep ridin' into the settin' sun pa pa dam tam tam R: C /C /D /E F /F /E /D /C Lonesome cowboy dam dam dam dam lonesome cowboy da dam ta dam C Ami Ami7 D7 G7 /G /F /E /D /C You're a long long way from home ram pa dam tam tam C /C /D /E F /F /E /D /C Lonesome cowboy dam dam dam dam lonesome cowboy da dam ta dam C Ami Ami7 D7 G7 C G C You've a long long way to roam C 2.  I'm a poor lonesome cowboy but it doesn't bother me Emi Dmi7 Emi7 Fmaj D9/F# G /F /E /D 'Cause this poor lonesome cowboy prefers a horse for com pa ny C C7 C9 F F7 Got nothing against women but I wave them all goodbye G7 Ami Emi F G7 C /G /F /E /D /C My horse and me keep riding we don't like being tied R: C Cmaj C7 C6 F Lonesome cowboy lonesome cowboy C Ami Ami7 D7 G7 You're a long long way from home C Cmaj C7 C6 F Lonesome cowboy lonesome cowboy C Ami Ami7 D7 G7 C F C Ami7 C7 Cmi G#7 C You've a long long way to roam to roam wou ou


Element
Test Run Report
Summary
Number
Percentage
Passed
Failed
Skipped
Unexecuted
Details
All error messages
Passed
Failed
Skipped
Unexecuted


A summary of some new news related to CUNY's and CSI's response to the COVID-19 pandemic. See https://csi-covid19.github.io for the archive.
To add/suggest news, please email John Verzani
link More blackboard training opportunities
link Online tutoring...
link John Jay chairs respond to their provost's unexpected decision on non-reappointment of adjuncts for 6-month appointments.
link CARAVAN to SAVE JOBS and FUND CUNY
...High school seniors on Staten Island are trying to plan for their first year of college during the global pandemic.
Kaitlynn Intartaglio, a senior at Port Richmond High School and Miss Greater New York Outstanding Teen 2020, said it has been difficult to make a choice for college, because she wasn’t able to visit any of the schools she applied to before the pandemic hit – due to her many extracurricular activities.
5/15 In defense of the classroom: Understanding the kind of learning that only takes place in person
NY Daily News article by NYCCT English professor.
5/15 Colleges Worry They'll Be Sued if They Reopen Campuses This concern over lawsuits was made at the PSC town hall
...On the other side of the country, the City University of New York system is worrying about “potentially deep cuts to our academic programs, campuses and our students” after the state’s latest fiscal plan two weeks ago predicted the shuttering of businesses, the dimming of the lights on Broadway and the loss of jobs during the pandemic will force Governor Andrew Cuomo, a Democrat, to make $8.2 billion in cuts next month.
...The clearest tie between federal aid and state higher education funding came last Friday when Missouri state legislators decided to put on hold a 10 percent cut in higher education funding to see if Congress sends the state more money.


{% extends "_includes/page.html" %} {% block title %}Not Found{% endblock %} {% block page %}
It seems we can’t find what you're looking for.


Cloud Gaming for THREE.js
What are we gonna talk about ?
- Possible solution for cloud gaming
- apply to any webgl games
- cheap idea for cloud gaming for webgl
status : experimental, naive but working surprisingly well!
Demo Time
Youtube video here
What is Cloud Gaming ?
- wikipedia definition
- It is new. no widely accepted definition
- usually implies render on server feature
Rougly…
Trying to run a game written for device A
on a device B, typically dumber than A.
What is Our Use Case
Let's clear the dust a bit...
- we run a webgl game in browser
- player device is a non-webgl mobile phone
Goal : to make that game playable on your player device
Our Goal
- To display a webgl game
- on a non-webgl player device
Simple Enough...
Ok We Know the Target, What's Next ?
Early Study
For Early Prototype
Early Study - Rendering
- So we got to render our game in server
- it will be rendered via a web browser
- seems natural choise to render webgl
Early Study - Architechture
3 parts
- a renderer : the brower running our game
- a controller : used by players to access our game
- a server : ensures the communication between both
Early Study - Networking
- networking done thru websocket
- no webrtc at the moment
- websocket is available a lot more than webrtc
- especially on mobile phone, our usecase.
Early Study - Software
- server in node.js
- websocket are trivial with socket.io
- little js library in renderer, and another in controller
- only common technology here
implementation is easy
Looks Good…
What Would it be in Action ?
Theory Of Operations - Server
- a renderer browser web running the game
- take regular screenshots with .toDataUrl()
- Send them to the player device via echo server
- mobile phone, tablette whatever.
Theory Of Operations - Player
- player can see webgl rendering on any device
- player uses touch screen as inputs
- inputs are then sent to the server
- server send them back to the renderer.
Theory Of Operations - Output
- browser receives inputs from the player.
- player sees what is displayed in the browser.
we got the whole loop
Theory Of Operations - Results
- This is actual cloud gaming!
- Simple implementation
- Less than 24h to write!
- Performances? left as an exercice to the reader :)
Nice Concepts! What About the Code ?
Status
Working and Available
What ?
- a minigame using three.js which run on renderer
- a controller for this game to run on player device
- a server to communicate between both
Controller - VirtualJoystick
Core - threex.cloudgaming
- connect to server
- provide echo service thru server
Code
Helpers - Screen Updater
- handle window resize in controller
- notify the renderer when it happens
- handle screen update from server to controller
Code
Helpers - Virtual Joystick
- read
virtualjoystick.js
inputs on player device
- send them to renderer via server
- renderer to pass that to the minigame
Code


Constants
class Constants (View source)
Holds all constants.
Constants
| ACTIVITY_TYPES |
Activity types.
|
| CHANNEL_TYPES |
Channel Types.
|
| DEFAULT_USER_AGENT |
The default HTTP user agent. |
| DISCORD_COLORS |
The default discord role colors. Mapped by uppercase string to integer.
|
| GUILD_DEFAULT_MESSAGE_NOTIFICATIONS |
Guild default message notifications.
|
| GUILD_EXPLICIT_CONTENT_FILTER |
Guild explicit content filter.
|
| GUILD_MFA_LEVEL |
Guild MFA level.
|
| GUILD_VERIFICATION_LEVEL |
Guild verification level.
|
| MESSAGE_TYPES |
Messages Types.
|
| PERMISSIONS |
Available Permissions in Discord. |
| VERSION |
The version of Yasmin. |
| WS_DEFAULT_COMPRESSION |
WS default compression. |
| WS_STATUS_CONNECTED |
WS connection status: Connected (ready). |
| WS_STATUS_CONNECTING |
WS connection status: Connecting. |
| WS_STATUS_DISCONNECTED |
WS connection status: Disconnected. |
| WS_STATUS_IDLE |
WS connection status: Idling (disconnected and no reconnect planned). |
| WS_STATUS_NEARLY |
WS connection status: Connected (not ready yet - nearly). |
| WS_STATUS_RECONNECTING |
WS connection status: Reconnecting. |


Figures
- Grids and inline grids
- Floats interact differently with blocks and grids
- Margin collapsing and the lack thereof
- Grid items
- Grid components
- Grid-line numbers and names
- Grid-line placement
- Grid-name placement
- Creating a grid
- Exceeding the grid container
- Adapting to the grid container
- Dividing the container into four columns
- Giving the center column whatever’s available
- Flexible column sizing
- Minmaxed column sizing
- Sizing grid tracks by content
- Sizing grid tracks around mixed content
- Sizing grid tracks with and without minmax()
- Sizing grid tracks with fit-content()
- Fitting to wide content
- Repeating a track pattern
- Repeated columns with named grid lines
- Auto-filling rows at three different heights
- Auto-filling columns next to fixed columns
- Auto-fill versus auto-fit
- A simple set of grid areas
- Grid cells with identifiers
- A grid with some unnamed grid cells
- Named areas and sized tracks
- Adding more tracks beyond the named areas
- Implicit grid-line names made explicit
- Implicit grid-area names made explicit
- Attaching elements to grid lines
- Spanning grid lines
- Attaching elements to named grid lines
- Another way of attaching elements to named grid lines
- Attaching to implicit grid lines via grid-area names
- Creating implicit grid lines and tracks
- Named implicit grid lines and tracks
- Assigning elements to grid areas
- Assigning elements to grid lines
- Overlapping grid items
- Overlapping sidebar and footer
- Row-oriented grid flow
- Column-oriented grid flow
- Explicitly sized grid items
- Flowing images in grids
- Giving images more track space
- Illustrating flow patterns
- Illustrating dense flow patterns
- Grids with and without auto-row sizing
- Grids with and without auto-column sizing
- A previous figure with auto-track sizing removed
- Creating a grid with the grid shorthand
- Aligning subgridded items
- Creating column gutters
- Defining grid gutters
- Grid items with margins
- Using auto margins to align items
- Various auto-margin alignments
- Absolutely positioning a grid item
- Auto values and absolute positioning
- Self alignment in the inline and block directions
- Centering all the grid items
- Distributing grid items horizontally
- Distributing grid items vertically
- Justifying the grid horizontally
- Aligning the grid vertically
- Grid items overlapping in source order
- Elevating a grid item
- Changing grid-item order


— Brian Moeskau (@bmoeskau)
— Truong-An Thai, CEO (@bithai)
— Dr. Trung Nguyen, Chief Wellness Officer (@trungmanator)
— Patrick Hitchins, CMO (@hitchpat)
Eating well is simple. It's just not easy.
E-book written by John Walker, founder of Autodesk
Analytical strategies for planning meals, losing weight and keeping it off
A nutritionally-complete meal in each drink
Raised over $2MM on CrowdTilt
Shipping in "Early 2014"
Measures "fork servings per minute", serving interval, meal length
Gentle vibrations alert you if you are eating too fast
Has an app and web dashboard
Personal trainer app for iPad (and TV via AirPlay)
Personalized workouts based on goals, time available
12 exercises deploying only body weight, a chair and a wall
It fulfills the latest mandates for high-intensity effort, which essentially combines a long run and a visit to the weight room into about seven minutes of steady discomfort — all of it based on science.
Scientific stufy performed in 2013
4 minutes of 90% effort cardio, 3 times/week, has same effect as 16 minute sessions
Active sitting
Austin Startup, IndieGoGo campaign NOW through Feb 6
Detects and tracks specific exercises like push ups
API, compatible with third party apps
Posture and activity sensor
Coaches you throughout the day, vibrates when you slouch
Austin startup, acquired by Under Armour in Nov
Social network, mapping and tracking of activity
Exercise while you work
For those who love taking things a bit too far
Designed by "fitness geeks" to make exercise fun and addictive
Challenges, duels, achievement badges, social sharing
Outrun zombies and complete missions on your way to getting fit
/
#


| This is a force-directed graph which aim to provide a sample size of the dataset used for this social analytics project. |
| Venue Name |
Users: Cluster 99 |
||
|
Users: Cluster 2 |
Users: Cluster 4 |
|
click on the venue's node (orange node) view the name of the venue name. click on the clusters'node to expand the graph so as to view how the users (belonged to this cluster) are connected (visited/commented) to the venues. click on the area to group the cluster again. Note: the results are best view in Google Chrome with 1350 X 630 resolution. |


Adding Employees
Details of the Employee
First Name
Middle Name
Last Name
Date Of Birth
Mobile Number
Home Number
Home Address
Employee Personal Email
New Office Email
New Password
Department
Marketing
Production
Research & Development
Accounting & Finance
Management
HR Management
Purchasing & Customer service
Department Position
System Role
HR Managers
Employees
Emergency Contact
Holidays Per Year
Additional Information
Submit
Cancel