- NAME
- interp - Create and manipulate Tcl interpreters
- SYNOPSIS
- interp option ?arg arg ...?
- DESCRIPTION
- THE INTERP COMMAND
- interp alias srcPath srcToken
- interp alias srcPath srcToken {}
- interp alias srcPath srcCmd targetPath targetCmd ?arg arg ...?
- interp aliases ?path?
- interp create ?-safe? ?- -? ?path?
- interp delete ?path ...?
- interp eval path arg ?arg ...?
- interp exists path
- interp expose path hiddenName ?exposedCmdName?
- interp hide path exposedCmdName ?hiddenCmdName?
- interp hidden path
- interp invokehidden path ?-global? hiddenCmdName ?arg ...?
- interp issafe ?path?
- interp marktrusted path
- interp recursionlimit path ?newlimit?
- interp share srcPath channelId destPath
- interp slaves ?path?
- interp target path alias
- interp transfer srcPath channelId destPath
- SLAVE COMMAND
- slave aliases
- slave alias srcToken
- slave alias srcToken {}
- slave alias srcCmd targetCmd ?arg ..?
- slave eval arg ?arg ..?
- slave expose hiddenName ?exposedCmdName?
- slave hide exposedCmdName ?hiddenCmdName?
- slave hidden
- slave invokehidden ?-global hiddenName ?arg ..?
- slave issafe
- slave marktrusted
- slave recursionlimit ?newlimit?
- SAFE INTERPRETERS
- ALIAS INVOCATION
- HIDDEN COMMANDS
- CREDITS
- EXAMPLES
- SEE ALSO
- KEYWORDS
interp - Create and manipulate Tcl interpreters
interp option ?arg arg ...?
This command makes it possible to create one or more new Tcl
interpreters that co-exist with the creating interpreter in the
same application. The creating interpreter is called the master
and the new interpreter is called a slave.
A master can create any number of slaves, and each slave can
itself create additional slaves for which it is master, resulting
in a hierarchy of interpreters.
Each interpreter is independent from the others: it has its own name
space for commands, procedures, and global variables.
A master interpreter may create connections between its slaves and
itself using a mechanism called an alias. An alias is
a command in a slave interpreter which, when invoked, causes a
command to be invoked in its master interpreter or in another slave
interpreter. The only other connections between interpreters are
through environment variables (the env variable), which are
normally shared among all interpreters in the application. Note that the
name space for files (such as the names returned by the open command)
is no longer shared between interpreters. Explicit commands are provided to
share files and to transfer references to open files from one interpreter
to another.
The interp command also provides support for safe
interpreters. A safe interpreter is a slave whose functions have
been greatly restricted, so that it is safe to execute untrusted
scripts without fear of them damaging other interpreters or the
application's environment. For example, all IO channel creation
commands and subprocess creation commands are made inaccessible to safe
interpreters.
See SAFE INTERPRETERS below for more information on
what features are present in a safe interpreter.
The dangerous functionality is not removed from the safe interpreter;
instead, it is hidden, so that only trusted interpreters can obtain
access to it. For a detailed explanation of hidden commands, see
HIDDEN COMMANDS, below.
The alias mechanism can be used for protected communication (analogous to a
kernel call) between a slave interpreter and its master.
See ALIAS INVOCATION, below, for more details
on how the alias mechanism works.
A qualified interpreter name is a proper Tcl lists containing a subset of its
ancestors in the interpreter hierarchy, terminated by the string naming the
interpreter in its immediate master. Interpreter names are relative to the
interpreter in which they are used. For example, if a is a slave of
the current interpreter and it has a slave a1, which in turn has a
slave a11, the qualified name of a11 in a is the list
a1 a11.
The interp command, described below, accepts qualified interpreter
names as arguments; the interpreter in which the command is being evaluated
can always be referred to as {} (the empty list or string). Note that
it is impossible to refer to a master (ancestor) interpreter by name in a
slave interpreter except through aliases. Also, there is no global name by
which one can refer to the first interpreter created in an application.
Both restrictions are motivated by safety concerns.
The interp command is used to create, delete, and manipulate
slave interpreters, and to share or transfer
channels between interpreters. It can have any of several forms, depending
on the option argument:
- interp alias srcPath srcToken
-
Returns a Tcl list whose elements are the targetCmd and
args associated with the alias represented by srcToken
(this is the value returned when the alias was
created; it is possible that the name of the source command in the
slave is different from srcToken).
- interp alias srcPath srcToken {}
-
Deletes the alias for srcToken in the slave interpreter identified by
srcPath.
srcToken refers to the value returned when the alias
was created; if the source command has been renamed, the renamed
command will be deleted.
- interp alias srcPath srcCmd targetPath targetCmd ?arg arg ...?
-
This command creates an alias between one slave and another (see the
alias slave command below for creating aliases between a slave
and its master). In this command, either of the slave interpreters
may be anywhere in the hierarchy of interpreters under the interpreter
invoking the command.
SrcPath and srcCmd identify the source of the alias.
SrcPath is a Tcl list whose elements select a particular
interpreter. For example, ``a b'' identifies an interpreter
b, which is a slave of interpreter a, which is a slave
of the invoking interpreter. An empty list specifies the interpreter
invoking the command. srcCmd gives the name of a new
command, which will be created in the source interpreter.
TargetPath and targetCmd specify a target interpreter
and command, and the arg arguments, if any, specify additional
arguments to targetCmd which are prepended to any arguments specified
in the invocation of srcCmd.
TargetCmd may be undefined at the time of this call, or it may
already exist; it is not created by this command.
The alias arranges for the given target command to be invoked
in the target interpreter whenever the given source command is
invoked in the source interpreter. See ALIAS INVOCATION below for
more details.
The command returns a token that uniquely identifies the command created
srcCmd, even if the command is renamed afterwards. The token may but
does not have to be equal to srcCmd.
- interp aliases ?path?
-
This command returns a Tcl list of the tokens of all the source commands for
aliases defined in the interpreter identified by path. The tokens
correspond to the values returned when
the aliases were created (which may not be the same
as the current names of the commands).
- interp create ?-safe? ?- -? ?path?
-
Creates a slave interpreter identified by path and a new command,
called a slave command. The name of the slave command is the last
component of path. The new slave interpreter and the slave command
are created in the interpreter identified by the path obtained by removing
the last component from path. For example, if path is a b
c then a new slave interpreter and slave command named c are
created in the interpreter identified by the path a b.
The slave command may be used to manipulate the new interpreter as
described below. If path is omitted, Tcl creates a unique name of the
form interpx, where x is an integer, and uses it for the
interpreter and the slave command. If the -safe switch is specified
(or if the master interpreter is a safe interpreter), the new slave
interpreter will be created as a safe interpreter with limited
functionality; otherwise the slave will include the full set of Tcl
built-in commands and variables. The - - switch can be used to
mark the end of switches; it may be needed if path is an unusual
value such as -safe. The result of the command is the name of the
new interpreter. The name of a slave interpreter must be unique among all
the slaves for its master; an error occurs if a slave interpreter by the
given name already exists in this master.
The initial recursion limit of the slave interpreter is set to the
current recursion limit of its parent interpreter.
- interp delete ?path ...?
-
Deletes zero or more interpreters given by the optional path
arguments, and for each interpreter, it also deletes its slaves. The
command also deletes the slave command for each interpreter deleted.
For each path argument, if no interpreter by that name
exists, the command raises an error.
- interp eval path arg ?arg ...?
-
This command concatenates all of the arg arguments in the same
fashion as the concat command, then evaluates the resulting string as
a Tcl script in the slave interpreter identified by path. The result
of this evaluation (including error information such as the errorInfo
and errorCode variables, if an error occurs) is returned to the
invoking interpreter.
Note that the script will be executed in the current context stack frame of the
path interpreter; this is so that the implementations (in a master
interpreter) of aliases in a slave interpreter can execute scripts in
the slave that find out information about the slave's current state
and stack frame.
- interp exists path
-
Returns 1 if a slave interpreter by the specified path
exists in this master, 0 otherwise. If path is omitted, the
invoking interpreter is used.
- interp expose path hiddenName ?exposedCmdName?
-
Makes the hidden command hiddenName exposed, eventually bringing
it back under a new exposedCmdName name (this name is currently
accepted only if it is a valid global name space name without any ::),
in the interpreter
denoted by path.
If an exposed command with the targeted name already exists, this command
fails.
Hidden commands are explained in more detail in HIDDEN COMMANDS, below.
- interp hide path exposedCmdName ?hiddenCmdName?
-
Makes the exposed command exposedCmdName hidden, renaming
it to the hidden command hiddenCmdName, or keeping the same name if
hiddenCmdName is not given, in the interpreter denoted
by path.
If a hidden command with the targeted name already exists, this command
fails.
Currently both exposedCmdName and hiddenCmdName can
not contain namespace qualifiers, or an error is raised.
Commands to be hidden by interp hide are looked up in the global
namespace even if the current namespace is not the global one. This
prevents slaves from fooling a master interpreter into hiding the wrong
command, by making the current namespace be different from the global one.
Hidden commands are explained in more detail in HIDDEN COMMANDS, below.
- interp hidden path
-
Returns a list of the names of all hidden commands in the interpreter
identified by path.
- interp invokehidden path ?-global? hiddenCmdName ?arg ...?
-
Invokes the hidden command hiddenCmdName with the arguments supplied
in the interpreter denoted by path. No substitutions or evaluation
are applied to the arguments.
If the -global flag is present, the hidden command is invoked at the
global level in the target interpreter; otherwise it is invoked at the
current call frame and can access local variables in that and outer call
frames.
Hidden commands are explained in more detail in HIDDEN COMMANDS, below.
- interp issafe ?path?
-
Returns 1 if the interpreter identified by the specified path
is safe, 0 otherwise.
- interp marktrusted path
-
Marks the interpreter identified by path as trusted. Does
not expose the hidden commands. This command can only be invoked from a
trusted interpreter.
The command has no effect if the interpreter identified by path is
already trusted.
- interp recursionlimit path ?newlimit?
-
Returns the maximum allowable nesting depth for the interpreter
specified by path. If newlimit is specified,
the interpreter recursion limit will be set so that nesting
of more than newlimit calls to Tcl_Eval()
and related procedures in that interpreter will return an error.
The newlimit value is also returned.
The newlimit value must be a positive integer between 1 and the
maximum value of a non-long integer on the platform.
The command sets the maximum size of the Tcl call stack only. It cannot
by itself prevent stack overflows on the C stack being used by the
application. If your machine has a limit on the size of the C stack, you
may get stack overflows before reaching the limit set by the command. If
this happens, see if there is a mechanism in your system for increasing
the maximum size of the C stack.
- interp share srcPath channelId destPath
-
Causes the IO channel identified by channelId to become shared
between the interpreter identified by srcPath and the interpreter
identified by destPath. Both interpreters have the same permissions
on the IO channel.
Both interpreters must close it to close the underlying IO channel; IO
channels accessible in an interpreter are automatically closed when an
interpreter is destroyed.
- interp slaves ?path?
-
Returns a Tcl list of the names of all the slave interpreters associated
with the interpreter identified by path. If path is omitted,
the invoking interpreter is used.
- interp target path alias
-
Returns a Tcl list describing the target interpreter for an alias. The
alias is specified with an interpreter path and source command name, just
as in interp alias above. The name of the target interpreter is
returned as an interpreter path, relative to the invoking interpreter.
If the target interpreter for the alias is the invoking interpreter then an
empty list is returned. If the target interpreter for the alias is not the
invoking interpreter or one of its descendants then an error is generated.
The target command does not have to be defined at the time of this invocation.
- interp transfer srcPath channelId destPath
-
Causes the IO channel identified by channelId to become available in
the interpreter identified by destPath and unavailable in the
interpreter identified by srcPath.
For each slave interpreter created with the interp command, a
new Tcl command is created in the master interpreter with the same
name as the new interpreter. This command may be used to invoke
various operations on the interpreter. It has the following
general form:
slave command ?arg arg ...?
Slave is the name of the interpreter, and command
and the args determine the exact behavior of the command.
The valid forms of this command are:
- slave aliases
-
Returns a Tcl list whose elements are the tokens of all the
aliases in slave. The tokens correspond to the values returned when
the aliases were created (which may not be the same
as the current names of the commands).
- slave alias srcToken
-
Returns a Tcl list whose elements are the targetCmd and
args associated with the alias represented by srcToken
(this is the value returned when the alias was
created; it is possible that the actual source command in the
slave is different from srcToken).
- slave alias srcToken {}
-
Deletes the alias for srcToken in the slave interpreter.
srcToken refers to the value returned when the alias
was created; if the source command has been renamed, the renamed
command will be deleted.
- slave alias srcCmd targetCmd ?arg ..?
-
Creates an alias such that whenever srcCmd is invoked
in slave, targetCmd is invoked in the master.
The arg arguments will be passed to targetCmd as additional
arguments, prepended before any arguments passed in the invocation of
srcCmd.
See ALIAS INVOCATION below for details.
The command returns a token that uniquely identifies the command created
srcCmd, even if the command is renamed afterwards. The token may but
does not have to be equal to srcCmd.
- slave eval arg ?arg ..?
-
This command concatenates all of the arg arguments in
the same fashion as the concat command, then evaluates
the resulting string as a Tcl script in slave.
The result of this evaluation (including error information
such as the errorInfo and errorCode variables, if an
error occurs) is returned to the invoking interpreter.
Note that the script will be executed in the current context stack frame
of slave; this is so that the implementations (in a master
interpreter) of aliases in a slave interpreter can execute scripts in
the slave that find out information about the slave's current state
and stack frame.
- slave expose hiddenName ?exposedCmdName?
-
This command exposes the hidden command hiddenName, eventually bringing
it back under a new exposedCmdName name (this name is currently
accepted only if it is a valid global name space name without any ::),
in slave.
If an exposed command with the targeted name already exists, this command
fails.
For more details on hidden commands, see HIDDEN COMMANDS, below.
- slave hide exposedCmdName ?hiddenCmdName?
-
This command hides the exposed command exposedCmdName, renaming it to
the hidden command hiddenCmdName, or keeping the same name if the
argument is not given, in the slave interpreter.
If a hidden command with the targeted name already exists, this command
fails.
Currently both exposedCmdName and hiddenCmdName can
not contain namespace qualifiers, or an error is raised.
Commands to be hidden are looked up in the global
namespace even if the current namespace is not the global one. This
prevents slaves from fooling a master interpreter into hiding the wrong
command, by making the current namespace be different from the global one.
For more details on hidden commands, see HIDDEN COMMANDS, below.
- slave hidden
-
Returns a list of the names of all hidden commands in slave.
- slave invokehidden ?-global hiddenName ?arg ..?
-
This command invokes the hidden command hiddenName with the
supplied arguments, in slave. No substitutions or evaluations are
applied to the arguments.
If the -global flag is given, the command is invoked at the global
level in the slave; otherwise it is invoked at the current call frame and
can access local variables in that or outer call frames.
For more details on hidden commands,
see HIDDEN COMMANDS, below.
- slave issafe
-
Returns 1 if the slave interpreter is safe, 0 otherwise.
- slave marktrusted
-
Marks the slave interpreter as trusted. Can only be invoked by a
trusted interpreter. This command does not expose any hidden
commands in the slave interpreter. The command has no effect if the slave
is already trusted.
- slave recursionlimit ?newlimit?
-
Returns the maximum allowable nesting depth for the slave interpreter.
If newlimit is specified, the recursion limit in slave will be
set so that nesting of more than newlimit calls to Tcl_Eval()
and related procedures in slave will return an error.
The newlimit value is also returned.
The newlimit value must be a positive integer between 1 and the
maximum value of a non-long integer on the platform.
The command sets the maximum size of the Tcl call stack only. It cannot
by itself prevent stack overflows on the C stack being used by the
application. If your machine has a limit on the size of the C stack, you
may get stack overflows before reaching the limit set by the command. If
this happens, see if there is a mechanism in your system for increasing
the maximum size of the C stack.
A safe interpreter is one with restricted functionality, so that
is safe to execute an arbitrary script from your worst enemy without
fear of that script damaging the enclosing application or the rest
of your computing environment. In order to make an interpreter
safe, certain commands and variables are removed from the interpreter.
For example, commands to create files on disk are removed, and the
exec command is removed, since it could be used to cause damage
through subprocesses.
Limited access to these facilities can be provided, by creating
aliases to the master interpreter which check their arguments carefully
and provide restricted access to a safe subset of facilities.
For example, file creation might be allowed in a particular subdirectory
and subprocess invocation might be allowed for a carefully selected and
fixed set of programs.
A safe interpreter is created by specifying the -safe switch
to the interp create command. Furthermore, any slave created
by a safe interpreter will also be safe.
A safe interpreter is created with exactly the following set of
built-in commands:
after append array binary
break case catch clock
close concat continue eof
error eval expr fblocked
fcopy fileevent flush for
foreach format gets global
if incr info interp
join lappend lindex linsert
list llength lrange lreplace
lsearch lsort namespace package
pid proc puts read
regexp regsub rename return
scan seek set split
string subst switch tell
time trace unset update
uplevel upvar variable vwait
while
The following commands are hidden by interp create when it
creates a safe interpreter:
cd encoding exec exit
fconfigure file glob load
open pwd socket source
These commands can be recreated later as Tcl procedures or aliases, or
re-exposed by interp expose.
The following commands from Tcl's library of support procedures are
not present in a safe interpreter:
auto_exec_ok auto_import auto_load
auto_load_index auto_qualify unknown
Note in particular that safe interpreters have no default unknown
command, so Tcl's default autoloading facilities are not available.
Autoload access to Tcl's commands that are normally autoloaded:
auto_mkindex auto_mkindex_old
auto_reset history
parray pkg_mkIndex
::pkg::create ::safe::interpAddToAccessPath
::safe::interpCreate ::safe::interpConfigure
::safe::interpDelete ::safe::interpFindInAccessPath
::safe::interpInit ::safe::setLogCmd
tcl_endOfWord tcl_findLibrary
tcl_startOfNextWord tcl_startOfPreviousWord
tcl_wordBreakAfter tcl_wordBreakBefore
can only be provided by explicit definition of an unknown command
in the safe interpreter. This will involve exposing the source
command. This is most easily accomplished by creating the safe interpreter
with Tcl's Safe-Tcl mechanism. Safe-Tcl provides safe
versions of source, load, and other Tcl commands needed
to support autoloading of commands and the loading of packages.
In addition, the env variable is not present in a safe interpreter,
so it cannot share environment variables with other interpreters. The
env variable poses a security risk, because users can store
sensitive information in an environment variable. For example, the PGP
manual recommends storing the PGP private key protection password in
the environment variable PGPPASS. Making this variable available
to untrusted code executing in a safe interpreter would incur a
security risk.
If extensions are loaded into a safe interpreter, they may also restrict
their own functionality to eliminate unsafe commands. For a discussion of
management of extensions for safety see the manual entries for
Safe-Tcl and the load Tcl command.
A safe interpreter may not alter the recursion limit of any interpreter,
including itself.
The alias mechanism has been carefully designed so that it can
be used safely when an untrusted script is executing
in a safe slave and the target of the alias is a trusted
master. The most important thing in guaranteeing safety is to
ensure that information passed from the slave to the master is
never evaluated or substituted in the master; if this were to
occur, it would enable an evil script in the slave to invoke
arbitrary functions in the master, which would compromise security.
When the source for an alias is invoked in the slave interpreter, the
usual Tcl substitutions are performed when parsing that command.
These substitutions are carried out in the source interpreter just
as they would be for any other command invoked in that interpreter.
The command procedure for the source command takes its arguments
and merges them with the targetCmd and args for the
alias to create a new array of arguments. If the words
of srcCmd were ``srcCmd arg1 arg2 ... argN'',
the new set of words will be
``targetCmd arg arg ... arg arg1 arg2 ... argN'',
where targetCmd and args are the values supplied when the
alias was created. TargetCmd is then used to locate a command
procedure in the target interpreter, and that command procedure
is invoked with the new set of arguments. An error occurs if
there is no command named targetCmd in the target interpreter.
No additional substitutions are performed on the words: the
target command procedure is invoked directly, without
going through the normal Tcl evaluation mechanism.
Substitutions are thus performed on each word exactly once:
targetCmd and args were substituted when parsing the command
that created the alias, and arg1 - argN are substituted when
the alias's source command is parsed in the source interpreter.
When writing the targetCmds for aliases in safe interpreters,
it is very important that the arguments to that command never be
evaluated or substituted, since this would provide an escape
mechanism whereby the slave interpreter could execute arbitrary
code in the master. This in turn would compromise the security
of the system.
Safe interpreters greatly restrict the functionality available to Tcl
programs executing within them.
Allowing the untrusted Tcl program to have direct access to this
functionality is unsafe, because it can be used for a variety of
attacks on the environment.
However, there are times when there is a legitimate need to use the
dangerous functionality in the context of the safe interpreter. For
example, sometimes a program must be sourced into the interpreter.
Another example is Tk, where windows are bound to the hierarchy of windows
for a specific interpreter; some potentially dangerous functions, e.g.
window management, must be performed on these windows within the
interpreter context.
The interp command provides a solution to this problem in the form of
hidden commands. Instead of removing the dangerous commands entirely
from a safe interpreter, these commands are hidden so they become
unavailable to Tcl scripts executing in the interpreter. However, such
hidden commands can be invoked by any trusted ancestor of the safe
interpreter, in the context of the safe interpreter, using interp
invoke. Hidden commands and exposed commands reside in separate name
spaces. It is possible to define a hidden command and an exposed command by
the same name within one interpreter.
Hidden commands in a slave interpreter can be invoked in the body of
procedures called in the master during alias invocation. For example, an
alias for source could be created in a slave interpreter. When it is
invoked in the slave interpreter, a procedure is called in the master
interpreter to check that the operation is allowable (e.g. it asks to
source a file that the slave interpreter is allowed to access). The
procedure then it invokes the hidden source command in the slave
interpreter to actually source in the contents of the file. Note that two
commands named source exist in the slave interpreter: the alias, and
the hidden command.
Because a master interpreter may invoke a hidden command as part of
handling an alias invocation, great care must be taken to avoid evaluating
any arguments passed in through the alias invocation.
 See the section
on ALIAS INVOCATION for a more complete discussion of this topic.
To help avoid this problem, no substitutions or evaluations are
applied to arguments of interp invokehidden.
Safe interpreters are not allowed to invoke hidden commands in themselves
or in their descendants. This prevents safe slaves from gaining access to
hidden functionality in themselves or their descendants.
The set of hidden commands in an interpreter can be manipulated by a trusted
interpreter using interp expose and interp hide. The interp
expose command moves a hidden command to the
set of exposed commands in the interpreter identified by path,
potentially renaming the command in the process. If an exposed command by
the targeted name already exists, the operation fails. Similarly,
interp hide moves an exposed command to the set of hidden commands in
that interpreter. Safe interpreters are not allowed to move commands
between the set of hidden and exposed commands, in either themselves or
their descendants.
Currently, the names of hidden commands cannot contain namespace
qualifiers, and you must first rename a command in a namespace to the
global namespace before you can hide it.
Commands to be hidden by interp hide are looked up in the global
namespace even if the current namespace is not the global one. This
prevents slaves from fooling a master interpreter into hiding the wrong
command, by making the current namespace be different from the global one.
This mechanism is based on the Safe-Tcl prototype implemented
by Nathaniel Borenstein and Marshall Rose.
Creating and using an alias for a command in the current interpreter:
interp alias {} getIndex {} lsearch {alpha beta gamma delta}
set idx [getIndex delta]
Executing an arbitrary command in a safe interpreter where every
invokation of lappend is logged:
set i [interp create -safe]
interp hide $i lappend
interp alias $i lappend {} loggedLappend $i
proc loggedLappend {i args} {
puts "logged invokation of lappend $args"
# Be extremely careful about command construction
eval [linsert $args 0 \
interp invokehidden $i lappend]
}
interp eval $i $someUntrustedScript
load, safe, Tcl_CreateSlave
alias, master interpreter, safe interpreter, slave interpreter
Copyright © 1995-1996 Sun Microsystems, Inc.
Copyright © 1995-1997 Roger E. Critchlow Jr.


@* * Copyright 2021 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @(dash: ServiceDashboard, prefixHtmlId: String)(implicit request: Request[_], messages: Messages) @import models.external.Statuses._ @inProgressActions = {


As if the Looney Tunes didn't have enough troubles, Warner Bros. Feature Animation created a whole new set of bad guys to give them a hard time. Here's how they came to life.
| BUPKUS | NADA | NULL | VOID | ZILCH |
VOID
Click on any thumbnail image to see a full-size character sketch.


The correlation is a way of measuring how closely one set of numbers predict another. The correlation gives a number between 1 and -1. A correlation of 0 means that there is absolutely no relationship between the two sets of numbers - when one changes, you can't predict what will happen to the other. A correlation of 1 means that there is a perfect relationship between the numbers - when the values in the first data set increase, the values in the second data set increases in a way that exactly corresponds. Our first two sets of numbers would have a correlation of 1. Our second pair would have a correlation close to 1, but not exactly 1. A correlation of -1 also indicates a perfect relationship, but when one of the values in one set increases, the values in the second set will decrease in a way that exactly corresponds. So the pattern is still perfect, but it works in reverse.
in-context


API for communication with (possibly remote) UI. Gathers up diverse functionality into a single place, and provides proxy objects for ArchivalUnits and Plugins that can more easily be marchalled and sent over a wire.


DBC Fireside Chat: Am I a Chef or a Diner?
What's My Thinking Style: The Only Style I've Got
Security and Insecurity: #TechWorldProblems
Pairing and Feedback: You Get What You Give
Stereotype Threat: What Can I Do About It?
Stereotype Threat - Part 2: How Affirmations and Values Can Help
Dealing With Conflict: It Happens to Us All
Git and GitHub: What's the Difference?
Classes vs IDs: How Do I Know Which to Use?
Arrays and Hashes and Ruby, Oh My: What Does it All Mean?!
Learning New Ruby Methods: I Want to Ride My .cycle
Classin' Up the Joint: All About Classes
Variable Scope: When and Where to Use What and Why
JavaScript vs Ruby: Objects vs Hashes


'Kohli fan' sneaks onto field during India-B'desh Test
by PTIA 22-year-old man, who said he was a big fan of Virat Kohli, broke through the security cordon and walked onto the ground during the India-Bangladesh Test at Holkar Stadium here on Saturday.
Suraj Bisht, who said he was native of Uttarakhand and works as a cook here, wanted to meet the Indian cricket captain.
Security personnel stopped him and he was detained, a police officer said.
He was wearing a T-shirt with Kohli's name printed on it, had a tatoo of Kohli's name on his arm, and `VK' was written on his face.
His identity was being verified and appropriate action would be taken thereafter, the police officer said.


From the small courtyard with its pool of fish, Tallanvor led Mat swiftly to the great court at the front of the Palace, behind the tall, gilded gates gleaming in the sun. It would be midday, soon. Mat felt an urge to be gone, a need to hurry. It was hard keeping his pace to the young officer’s. Someone might wonder, if he started running, and maybe—just maybe—things had really been the way they seemed back there. Maybe Gaebril really did not suspect that he knew. Maybe.  Light, maybe. He forced himself to walk as if he had all the time in the world—Just a haybrain country lout staring at the rugs and the gold. Just a mudfoot who’d never think anyone might put a knife in his back—until Tallanvor let him through a sallyport in one of the gates, and followed him out.
 Before he could open his mouth, though, Tallanvor spoke. “He has delivered a letter to the Queen from the Daughter-Heir. Be glad, Elber, that neither Morgase nor Gaebril knows you tried to keep it from them. Lord Gaebril was most interested in the Lady Elayne’s missive.”
Elber’s face went from red to as white as his collar. He glared once at Mat, and scuttled back along the line of guardsmen, his beady eyes peering through the bars of their face-guards as if to determine whether any of them had seen his fear.
“Thank you,” Mat told Tallanvor, and meant it.  “Fare you well, Tallanvor.”
He started across the oval plaza, trying not to walk too fast, and was surprised when Tallanvor walked along. Light, is he Gaebril’s man, or Morgase’s? He was just beginning to feel an itch between his shoulder blades, as if a knife might be about to go in—He doesn’t know, burn me! Gaebril doesn’t suspect I know!—when the young officer finally spoke.
“Did you spend long in Tar Valon? In the White Tower? Long enough to learn anything of it?”
“I was only there three days,” Mat said cautiously. He would have made the time less—if he could have delivered the letter without admitting ever being in Tar Valon, he would have—but he did not think the man would believe he had gone all that way to see his sister and left the same day. What under the Light is he after? “I learned what I saw in that time. Nothing of any importance. They did not guide me around and tell me things. I was only there to see Else.”
“You must have heard something, man. Who is Sheriam? Does talking to her in her study mean anything?”
Mat shook his head vigorously to keep relief from showing on his face. “I don’t know who she is,” he said truthfully. Perhaps he had heard Egwene, or perhaps Nynaeve, mention the name. An Aes Sedai, maybe? “Why should it mean anything?”
“I do not know,” Tallanvor said softly. “There is too much I do not know. Sometimes I think she is trying to say something . . . ” He gave Mat a sharp look. “Are you a loyal Andorman, Thom Grinwell?”
“Of course I am.” Light, if I say that much more often, I may start believing it. “What about you? Do you serve Morgase and Gaebril loyally?”
Tallanvor gave him a look as hard as the dice’s mercy. “I serve Morgase, Thom Grinwell. Her, I serve to the death. Fare you well!” He turned and strode back toward the Palace with a hand gripping his sword hilt.
Watching him go, Mat muttered to himself. “I will wager this”—he gave Gaebril’s wash-leather purse a toss—“that Gaebril says the same.” Whatever games they played in the Palace, he wanted no place in any of them. And he meant to make sure Egwene and the others were out of them, too. Fool women! Now I have to keep their bacon from burning instead of looking after my own! He did not start to run until the streets hid him from the Palace.
When he came dashing into The Queen’s Blessing, nothing very much had changed in the library. Thom and the innkeeper still sat over the stones board—a different game, he saw from the positions of the stones, but no better for Gill—and the calico cat was back on the table, washing herself. A tray holding their unlit pipes and the remains of a meal for two sat near the cat, and his belongings were gone from the armchair. Each man had a wine cup at his elbow.
“I will be leaving, Master Gill,” he said. “You can keep the coin and take a meal out of it. I’ll stay long enough to eat, but then I am on the road to Tear.”
“What is your hurry, boy?” Thom seemed to be watching the cat more than the board. “We only just arrived here.”
“You delivered the Lady Elayne’s letter, then?” the innkeeper said eagerly. “And kept your skin whole, it seems. Did you really climb over that wall like the other young man? No, that does not matter. Did the letter soothe Morgase? Do we still have to keep tiptoeing on eggs, man?”
“I suppose it soothed her,” Mat said. “I think it did.” He hesitated a moment, bouncing Gaebril’s purse on his hand. It made a clinking sound. He had not looked to see if it really held ten gold marks; the weight was about right. “Master Gill, what can you tell me of Gaebril? Aside from the fact that he does not like Aes Sedai. You said he had not been in Caemlyn long?”
“Why do you want to know about him?” Thom asked. “Basel, are you going to place a stone or not?”
“Well, lad,” Gill said, “there is not much to tell. He came out of the west during the winter. Somewhere out your way, I think. Maybe it was the Two Rivers. I’ve heard the mountains mentioned.”
“We have no lords in the Two Rivers,” Mat said. “Maybe there are some up around Baerlon. I do not know.”
“That could be it, lad. I had never even heard of him before, but I do not keep up with the country lords. Came while Morgase was still in Tar Valon, he did, and half the city was afraid the Tower was going to make her disappear, too. The other half did not want her back. The riots started up again, the way they did last year at the tail of winter.”
Mat shook his head. “I do not care about politics, Master Gill. It’s Gaebril I want to know about.” Thom frowned at him, and began cleaning the dottle from his long-stemmed pipe with a straw.
“It is Gaebril I am telling you about, lad,” Gill said. “During the riots, he made himself leader of the faction supporting Morgase—got himself wounded in the fighting, I hear—and by the time she returned, he had it all suppressed. Gareth Bryne didn’t like Gaebril’s methods—he can be a very hard man—but Morgase was so pleased to find order restored that she named him to the post Elaida used to hold.”
The innkeeper stopped. Mat waited for him to go on, but he did not. Thom thumbed his pipe full of tabac and walked over to light a spill at a small lamp kept for the purpose on the mantel above the fireplace.
“What else?” Mat asked. “The man has to have a reason for what he does. If he marries Morgase, would he be king when she dies? If Elayne were dead, too, I mean?”
Thom choked lighting his pipe, and Gill laughed. “Andor has a queen, lad. Always a queen. If Morgase and Elayne both died—the Light send it not so!—then Morgase’s nearest female relative would take the throne. At least there is no question of who that is this time—a cousin, the Lady Dyelin—not like the Succession, after Tigraine vanished. It took a year before Morgase sat on the Lion Throne, then. Dyelin could keep Gaebril as her advisor, or marry him to cement the line—though she would not likely do that unless Morgase had had a child by him—but he would be the Prince Consort even then. No more than that. Thank the Light, Morgase is a young woman, yet. And Elayne is healthy. Light! The letter did not say she is ill, did it?”
“She is well.” For now, at least. “Isn’t there anything else you can tell me about him? You do not seem to like him. Why?”
The innkeeper frowned in thought, and scratched his chin, and shook his head. “I suppose I would not like him marrying Morgase, but I do not truly know why. He’s said to be a fine man; the nobles all look to him. I do not like most of the men he’s brought into the Guards. Too much has changed since he came, but I cannot lay it all at his door. There just seem to be too many people muttering in corners since he came. You would think we were all Cairhienin, the way they were before this civil war, all plotting and trying to find advantage. I keep having bad dreams since Gaebril came, and I am not the only one. Fool thing to worry about, dreams. It is probably only worry about Elayne, and what Morgase means to do concerning the White Tower, and people acting like Cairhienin. I just do not know. Why are you asking all these questions about Lord Gaebril?”
“Because he wants to kill Elayne,” Mat said, “and Egwene and Nynaeve with her.” There was nothing useful in what Gill had told him that he could see. Burn me, I don’t have to know why he wants them dead. I just have to stop it. Both men were staring at him again. As if he were mad. Again.
 Gill said suspiciously. “I remember you staring crossways at everyone the last time. It’s either that, or else you think this is some sort of prank. You have the look of a prankster to me. If that is it, it’s a nasty one!”
Mat grimaced.   And Egwene’s and Nynaeve’s while he was about it.  “He was a fine soldier, but it is said he left the Guard over some matter of weighted dice. Not that anyone says it to his face; Comar was one of the best blades in the Guards. You really mean it, don’t you?”
“I think he does, Basel,” Thom said. “I very much think he does.”
“The Light shine on us! What did Morgase say? You did tell her, didn’t you?  “With Gaebril standing right there, and her gazing at him like a lovesick lapdog! I said, ‘I may be a simple village man who just climbed over your wall half an hour past, but I already happen to know your trusted advisor there, the one you seem to be in love with, intends to murder your daughter.’ Light, man, she’d have cut my head off!”
“She might have at that.” Thom stared into the elaborate carvings on the bowl of his pipe and tugged one mustache. “Her temper was ever as sudden as lightning, and twice as dangerous.”
“You know it better than most, Thom,” Gill said absently. Staring at nothing, he scrubbed both hands through his graying hair. “There has to be something I can do. I haven’t held a sword since the Aiel War, but . . . Well, that would do no good. Get myself killed and do nothing by it. But I must do something!”
“Rumor.” Thom rubbed the side of his nose; he seemed to be studying the stones board and talking to himself. “No one can keep rumors from reaching Morgase’s ears, and if she hears it strongly enough, she will start to wonder. Rumor is the voice of the people, and the voice of the people often speaks truth. Morgase knows that. There is not a man alive I would back against her in the Game. Love or no love, once Morgase starts examining Gaebril closely, he’ll not be able to hide as much as his childhood scars from her. And if she learns he means harm to Elayne”—he placed a stone on the board; it seemed an odd placement at first glance, but Mat saw that in three more moves, a third of Gill’s stones would be trapped—“Lord Gaebril will have a most elaborate funeral.”
“You and your Game of Houses,” Gill muttered. “Still, it might work. “A sudden smile appeared on his face. “I even know who to tell to start it. All I need do is mention to Gilda that I dreamed it, and in three days she’ll have told serving girls in half the New City that it is a fact. She is the greatest gossip the Creator ever made.”
“Just be certain it cannot be traced back to you, Basel.”
“No fear of that, Thom. Why a week ago, a man told me one of my own bad dreams as a thing he’d heard from somebody who’d had it from someone else. Gilda must have eavesdropped on me telling it to Coline, but when I asked, he gave me a string of names that led all the way to the other side of Caemlyn and vanished. Why, I actually went over there and found the last man, just out of curiosity to see how many mouths had passed it, and he claimed it was his very own dream. No fear, Thom.”
Mat did not really care what they did with their rumors—no rumors would help Egwene or the others—but one thing puzzled him. “Thom, you seem to be taking this all very calmly. I thought Morgase was the great love of your life.”
The gleeman stared into the bowl of his pipe again. “Mat, a very wise woman once told me that time would heal my wounds, that time smoothed everything over. I didn’t believe her. Only she was right.”
“You mean you do not love Morgase anymore.”
“Boy, it has been fifteen years since I left Caemlyn a half step ahead of the headsman’s axe, with the ink of Morgase’s signature still wet on the warrant. Sitting here listening to Basel natter on”—Gill protested, and Thom raised his voice—“natter on, I say, about Morgase and Gaebril, and how they might marry, I realized the passion faded a long time gone. Oh, I suppose I am still fond of her, perhaps I even love her a little, but it is not a grand passion anymore.”
“And here I half thought you’d go running up to the Palace to warn her.” He laughed, and was surprised when Thom joined him.
 Any fool knows men and women think differently at times, but the biggest difference is this. Men forget, but never forgive; women forgive, but never forget. Morgase might kiss my cheek and give me a cup of wine and say how she has missed me. And then she might just let the Guards haul me off to prison and the headsman. No. Morgase is one of the most capable women I’ve ever known, and that is saying something. I could almost pity Gaebril once she learns what he is up to. Tear, you say? Is there any chance of you waiting until tomorrow to leave? I could use a night’s sleep.”
“I mean to be as far toward Tear as I can before nightfall.” Mat blinked. “Do you mean to come with me? I thought you meant to stay here.”
“Did you not just hear me say I had decided not to have my head cut off? Tear sounds a safer place to me than Caemlyn, and suddenly that does not seem so bad. Besides, I like those girls.” A knife appeared in his hand and was as suddenly gone again. “I’d not like anything to happen to them. But if you mean to reach Tear quickly, it’s Aringill you want. A fast boat will have us there days sooner than horses, even if we rode them to death. And I don’t say it just because my bottom has already taken on the shape of a saddle.”
“Aringill, then. As long as it’s fast.”
“Well,” Gill said, “I suppose if you are leaving, lad, I had better see about getting you that meal.” He pushed back his chair and started for the door.
“Hold this for me, Master Gill,” Mat said, and tossed him the wash-leather purse.
“What’s this, lad? Coin?”
“Stakes. Gaebril doesn’t know it, but he and I have a wager.” The cat jumped down as Mat picked up the wooden dice cup and spun the dice out on the table. Five sixes. “And I always win.”


The mappings between the mCode Value Sets and OMOP Concepts is converted into an RDF to view and edit in Protege.
There are 3 vocabulary-level datasets in this package that require additional parsing for appropriate categorization into owl: SNOMED
, ICD10CM
, and LOINC
. This categarization is done by assessing the source mCode value sets each belongs to.
In mCode, LOINC
is used only for tumor marker testing with no overlap with any other dataset.
unique(LOINC$value_set_name)
#> [1] "TumorMarkerTestVS"
All the valuesets represented by ICD10CM
overlaps with SNOMED
.
unique(ICD10CM$value_set_name)
#> [1] "CancerDisorderVS"
#> [2] "ComorbidConditionVS"
#> [3] "PrimaryOrUncertainBehaviorCancerDisorderVS"
#> [4] "SecondaryCancerDisorderVS"
unique(SNOMED$value_set_name)
#> [1] "CancerBodyLocationVS"
#> [2] "CancerDisorderVS"
#> [3] "ComorbidConditionVS"
#> [4] "HistologyMorphologyBehaviorVS"
#> [5] "PrimaryOrUncertainBehaviorCancerDisorderVS"
#> [6] "SecondaryCancerDisorderVS"
#> [7] "CancerDiseaseStatusEvidenceTypeVS"
#> [8] "CancerRelatedSurgicalProcedureVS"
#> [9] "CancerStagingSystemVS"
#> [10] "ConditionStatusTrendVS"
#> [11] "LateralityVS"
#> [12] "RadiationProcedureVS"
#> [13] "RadiationTargetBodySiteVS"
#> [14] "TreatmentIntentVS"
#> [15] "TreatmentTerminationReasonVS"
#> [16] "YesNoUnknownVS"
To manage the overlaps, ICD10CM
and SNOMED
are combined and split by value set.
ICD10CM_SNOMED <-
bind_rows(ICD10CM,
SNOMED) %>%
rubix::split_by(col = value_set_name)
names(ICD10CM_SNOMED)
#> [1] "CancerBodyLocationVS"
#> [2] "CancerDiseaseStatusEvidenceTypeVS"
#> [3] "CancerDisorderVS"
#> [4] "CancerRelatedSurgicalProcedureVS"
#> [5] "CancerStagingSystemVS"
#> [6] "ComorbidConditionVS"
#> [7] "ConditionStatusTrendVS"
#> [8] "HistologyMorphologyBehaviorVS"
#> [9] "LateralityVS"
#> [10] "PrimaryOrUncertainBehaviorCancerDisorderVS"
#> [11] "RadiationProcedureVS"
#> [12] "RadiationTargetBodySiteVS"
#> [13] "SecondaryCancerDisorderVS"
#> [14] "TreatmentIntentVS"
#> [15] "TreatmentTerminationReasonVS"
#> [16] "YesNoUnknownVS"
The names are adjusted to following the uppercase snake format for this project.
nms <- names(ICD10CM_SNOMED)
nms <- str_remove_all(nms, "VS$")
nms <- str_replace_all(nms, "([a-z]{1})([A-Z]{1})","\\1_\\2")
nms <- toupper(nms)
names(ICD10CM_SNOMED) <- nms
names(ICD10CM_SNOMED)
#> [1] "CANCER_BODY_LOCATION"
#> [2] "CANCER_DISEASE_STATUS_EVIDENCE_TYPE"
#> [3] "CANCER_DISORDER"
#> [4] "CANCER_RELATED_SURGICAL_PROCEDURE"
#> [5] "CANCER_STAGING_SYSTEM"
#> [6] "COMORBID_CONDITION"
#> [7] "CONDITION_STATUS_TREND"
#> [8] "HISTOLOGY_MORPHOLOGY_BEHAVIOR"
#> [9] "LATERALITY"
#> [10] "PRIMARY_OR_UNCERTAIN_BEHAVIOR_CANCER_DISORDER"
#> [11] "RADIATION_PROCEDURE"
#> [12] "RADIATION_TARGET_BODY_SITE"
#> [13] "SECONDARY_CANCER_DISORDER"
#> [14] "TREATMENT_INTENT"
#> [15] "TREATMENT_TERMINATION_REASON"
#> [16] "YES_NO_UNKNOWN"
The other datasets are combined into a list with LOINC
renamed to TUMOR_MARKER_MEASUREMENT
. Each dataset in the mcode_classes
list is now divided by “Class” for the OWL class hierarchy.
other_value_sets <-
list(CANCER_STAGING = CANCER_STAGING,
GENOMICS = GENOMICS,
TUMOR_MARKER_MEASUREMENT = LOINC,
SPECIMEN = SPECIMEN,
UNITS_OF_MEASUREMENT = UNITS_OF_MEASUREMENT)
mcode_classes <-
c(ICD10CM_SNOMED,
other_value_sets)
names(mcode_classes)
#> [1] "CANCER_BODY_LOCATION"
#> [2] "CANCER_DISEASE_STATUS_EVIDENCE_TYPE"
#> [3] "CANCER_DISORDER"
#> [4] "CANCER_RELATED_SURGICAL_PROCEDURE"
#> [5] "CANCER_STAGING_SYSTEM"
#> [6] "COMORBID_CONDITION"
#> [7] "CONDITION_STATUS_TREND"
#> [8] "HISTOLOGY_MORPHOLOGY_BEHAVIOR"
#> [9] "LATERALITY"
#> [10] "PRIMARY_OR_UNCERTAIN_BEHAVIOR_CANCER_DISORDER"
#> [11] "RADIATION_PROCEDURE"
#> [12] "RADIATION_TARGET_BODY_SITE"
#> [13] "SECONDARY_CANCER_DISORDER"
#> [14] "TREATMENT_INTENT"
#> [15] "TREATMENT_TERMINATION_REASON"
#> [16] "YES_NO_UNKNOWN"
#> [17] "CANCER_STAGING"
#> [18] "GENOMICS"
#> [19] "TUMOR_MARKER_MEASUREMENT"
#> [20] "SPECIMEN"
#> [21] "UNITS_OF_MEASUREMENT"
All the concepts in each class are converted to the chariot
package’s strip
format to represent them as single instances in OWL. For the SPECIMEN
class specifically, the original mCode code
and code description
are carried over as instances to provide the appropriate gap coverage in the specimen representation.
mcode_classes2 <-
mcode_classes %>%
map(mutate_all, as.character) %>%
bind_rows(.id = "class") %>%
chariot::merge_strip(into = "concept") %>%
# Specimen domain has additional columns
unite(
col = "mcode_concept",
code, code_description,
sep = " ",
remove = FALSE,
na.rm = TRUE
) %>%
mutate(concept = coalesce(concept, Specimen, mcode_concept)) %>%
distinct() %>%
rubix::split_by(col = "class")
The data is written to an Excel to load when calling the data
function.
file <- file.path(getwd(), "data-raw/mcode_rdf.xlsx")
if (!file.exists(file)) {
openxlsx::write.xlsx(x = mcode_classes2,
file = file)
}
#> Warning in openxlsx::write.xlsx(x = mcode_classes2, file = file): Truncating
#> list names to 31 characters.
mcode_classes3 <-
mcode_classes2 %>%
map(select, concept)
mcode_classes3
#> $CANCER_BODY_LOCATION
#> # A tibble: 42,022 x 1
#> concept
#> <chr>
#> 1 [V] [S] 4048384 Body structure [SNOMED 123037004] [Spec Anatomic Site] [Body…
#> 2 [V] [S] 4002852 Buccal embrasure [SNOMED 110326006] [Spec Anatomic Site] [Bo…
#> 3 [V] [S] 36717763 Skin structure of left lower eyelid [SNOMED 719884003] [Spe…
#> 4 [V] [S] 4230944 Adenofibrosis [SNOMED 89115006] [Observation] [Morph Abnorma…
#> 5 [V] [S] 42605189 Intervertebral foramen of eighteenth thoracic vertebra [SNO…
#> 6 [V] [S] 4097829 Transitional cell carcinoma [SNOMED 27090000] [Observation] …
#> 7 [V] [S] 4265989 Structure of medial nuclei of hypothalamus [SNOMED 36501001]…
#> 8 [V] [S] 4143459 Structure of subarachnoid space of brain [SNOMED 33930006] […
#> 9 [V] [S] 4093877 Entire body of second thoracic vertebra [SNOMED 280839007] […
#> 10 [V] [S] 4300995 Structure of suprarenal vein [SNOMED 77905000] [Spec Anatomi…
#> # … with 42,012 more rows
#>
#> $CANCER_DISEASE_STATUS_EVIDENCE_TYPE
#> # A tibble: 6 x 1
#> concept
#> <chr>
#> 1 [V] [S] 4180938 Imaging [SNOMED 363679005] [Procedure] [Procedure]
#> 2 [V] [S] 4098214 Histopathology test [SNOMED 252416005] [Measurement] [Procedu…
#> 3 [V] [S] 46272623 Assessment of symptom control [SNOMED 711015009] [Procedure]…
#> 4 [V] [S] 4240345 Physical examination [SNOMED 5880005] [Procedure] [Procedure]
#> 5 [V] [S] 4353605 Tumor marker measurement [SNOMED 250724005] [Measurement] [Pr…
#> 6 [V] [S] 4303425 Laboratory data interpretation [SNOMED 386344002] [Procedure]…
#>
#> $CANCER_DISORDER
#> # A tibble: 58,222 x 1
#> concept
#> <chr>
#> 1 [V] [N] 35206047 Malignant neoplasm of external upper lip [ICD10CM C00.0] [C…
#> 2 [V] [N] 35206048 Malignant neoplasm of external lower lip [ICD10CM C00.1] [C…
#> 3 [V] [N] 35206049 Malignant neoplasm of external lip, unspecified [ICD10CM C0…
#> 4 [V] [N] 35206050 Malignant neoplasm of upper lip, inner aspect [ICD10CM C00.…
#> 5 [V] [N] 35206051 Malignant neoplasm of lower lip, inner aspect [ICD10CM C00.…
#> 6 [V] [N] 35206052 Malignant neoplasm of lip, unspecified, inner aspect [ICD10…
#> 7 [V] [N] 35206053 Malignant neoplasm of commissure of lip, unspecified [ICD10…
#> 8 [V] [N] 35206054 Malignant neoplasm of overlapping sites of lip [ICD10CM C00…
#> 9 [V] [N] 35206055 Malignant neoplasm of lip, unspecified [ICD10CM C00.9] [Con…
#> 10 [V] [N] 35206056 Malignant neoplasm of base of tongue [ICD10CM C01] [Conditi…
#> # … with 58,212 more rows
#>
#> $CANCER_RELATED_SURGICAL_PROCEDURE
#> # A tibble: 162 x 1
#> concept
#> <chr>
#> 1 [V] [S] 4067441 Destruction of lesion of anus [SNOMED 174337000] [Procedure]…
#> 2 [V] [S] 4171194 Excision of lesion of anus [SNOMED 49264007] [Procedure] [Pr…
#> 3 [V] [S] 4002559 Anus excision [SNOMED 119894003] [Procedure] [Procedure]
#> 4 [V] [S] 4087575 Operation on anus [SNOMED 24265000] [Procedure] [Procedure]
#> 5 [V] [S] 4170198 Destruction of lesion of bladder [SNOMED 48185007] [Procedur…
#> 6 [V] [S] 4029571 Bladder excision [SNOMED 108034003] [Procedure] [Procedure]
#> 7 [V] [S] 4010266 Partial cystectomy [SNOMED 112902005] [Procedure] [Procedure]
#> 8 [V] [S] 4270496 Complete cystectomy [SNOMED 63016009] [Procedure] [Procedure]
#> 9 [V] [S] 4273866 Radical cystectomy [SNOMED 64063003] [Procedure] [Procedure]
#> 10 [V] [S] 4119922 Urinary bladder reconstruction [SNOMED 287716007] [Procedure…
#> # … with 152 more rows
#>
#> $CANCER_STAGING
#> # A tibble: 1,617 x 1
#> concept
#> <chr>
#> 1 [V] [S] 1537692 Vulvar Cancer cM1 TNM Finding by AJCC/UICC 8th edition [NCIt…
#> 2 [V] [S] 1537780 Retinoblastoma cM0 TNM Finding by AJCC/UICC 8th edition [NCI…
#> 3 [V] [S] 1537798 Eyelid Carcinoma pM1 TNM Finding by AJCC/UICC 8th edition [N…
#> 4 [V] [S] 1537804 Uterine Corpus Leiomyosarcoma and Endometrial Stromal Sarcom…
#> 5 [V] [S] 1537805 Esophagus and Esophagogastric Junction Cancer cM1 TNM Findin…
#> 6 [V] [S] 1537808 Duodenum and Ampulla of Vater Neuroendocrine Tumor cM1c TNM …
#> 7 [V] [S] 1537809 Bone Cancer pM1b TNM Finding by AJCC/UICC 8th edition [NCIt …
#> 8 [V] [S] 1537821 Merkel Cell Carcinoma pM1 TNM Finding by AJCC/UICC 8th editi…
#> 9 [V] [S] 1537827 Jejunum and Ileum Neuroendocrine Tumor cM0 TNM Finding by AJ…
#> 10 [V] [S] 1537830 Thymic Tumor pM1 TNM Finding by AJCC/UICC 8th edition [NCIt …
#> # … with 1,607 more rows
#>
#> $CANCER_STAGING_SYSTEM
#> # A tibble: 3 x 1
#> concept
#> <chr>
#> 1 [V] [S] 40485522 American Joint Commission on Cancer, Cancer Staging Manual, …
#> 2 [V] [S] 40483646 American Joint Commission on Cancer, Cancer Staging Manual, …
#> 3 [V] [S] 4123019 UICC [SNOMED 258235000] [Measurement] [Staging / Scales]
#>
#> $COMORBID_CONDITION
#> # A tibble: 22,874 x 1
#> concept
#> <chr>
#> 1 [V] [N] 45537731 Syphilitic endocarditis [ICD10CM A52.03] [Condition] [5-cha…
#> 2 [V] [N] 35205769 Chronic viral hepatitis B with delta-agent [ICD10CM B18.0] …
#> 3 [V] [N] 35205770 Chronic viral hepatitis B without delta-agent [ICD10CM B18.…
#> 4 [V] [N] 35205771 Chronic viral hepatitis C [ICD10CM B18.2] [Condition] [4-ch…
#> 5 [V] [N] 35205776 Human immunodeficiency virus [HIV] disease [ICD10CM B20] [C…
#> 6 [V] [N] 35206047 Malignant neoplasm of external upper lip [ICD10CM C00.0] [C…
#> 7 [V] [N] 35206048 Malignant neoplasm of external lower lip [ICD10CM C00.1] [C…
#> 8 [V] [N] 35206049 Malignant neoplasm of external lip, unspecified [ICD10CM C0…
#> 9 [V] [N] 35206050 Malignant neoplasm of upper lip, inner aspect [ICD10CM C00.…
#> 10 [V] [N] 35206051 Malignant neoplasm of lower lip, inner aspect [ICD10CM C00.…
#> # … with 22,864 more rows
#>
#> $CONDITION_STATUS_TREND
#> # A tibble: 5 x 1
#> concept
#> <chr>
#> 1 [V] [S] 9190 Not detected [SNOMED 260415000] [Meas Value] [Qualifier Value]
#> 2 [V] [S] 4149524 Patient's condition improved [SNOMED 268910001] [Condition] […
#> 3 [V] [S] 4234874 Patient's condition stable [SNOMED 359746009] [Condition] [Cl…
#> 4 [V] [S] 4150631 Patient's condition worsened [SNOMED 271299001] [Condition] […
#> 5 [V] [S] 46271098 Patient condition undetermined [SNOMED 709137006] [Condition…
#>
#> $GENOMICS
#> # A tibble: 27,032 x 1
#> concept
#> <chr>
#> 1 [V] [S] 35944910 CCDC77 (coiled-coil domain containing 77) Variant [HGNC 282…
#> 2 [V] [S] 35944911 INMT (indolethylamine N-methyltransferase) Variant [HGNC 60…
#> 3 [V] [S] 35944912 ZNF117 (zinc finger protein 117) Variant [HGNC 12897] [Meas…
#> 4 [V] [S] 35944913 CKAP2 (cytoskeleton associated protein 2) Variant [HGNC 199…
#> 5 [V] [S] 35944914 ITPRIPL2 (ITPRIP like 2) Variant [HGNC 27257] [Measurement]…
#> 6 [V] [S] 35944916 PEX19 (peroxisomal biogenesis factor 19) Variant [HGNC 9713…
#> 7 [V] [S] 35944917 ZNF385D (zinc finger protein 385D) Variant [HGNC 26191] [Me…
#> 8 [V] [S] 35944920 EDDM3B (epididymal protein 3B) Variant [HGNC 19223] [Measur…
#> 9 [V] [S] 35944921 KLRC3 (killer cell lectin like receptor C3) Variant [HGNC 6…
#> 10 [V] [S] 35944922 GIMAP4 (GTPase, IMAP family member 4) Variant [HGNC 21872] …
#> # … with 27,022 more rows
#>
#> $HISTOLOGY_MORPHOLOGY_BEHAVIOR
#> # A tibble: 1,325 x 1
#> concept
#> <chr>
#> 1 [V] [S] 4264447 Acute myeloid leukemia with multilineage dysplasia following…
#> 2 [V] [S] 4029663 Acute myeloid leukemia, 11q23 abnormalities [SNOMED 12882900…
#> 3 [V] [S] 37311513 Biphenotypic sinonasal sarcoma [SNOMED 789405004] [Observat…
#> 4 [V] [S] 36403182 Papillary carcinoma follicular variant, in situ follicular …
#> 5 [V] [S] 4030124 Hepatoid adenocarcinoma [SNOMED 128706007] [Observation] [Mo…
#> 6 [V] [S] 4228267 Papillary carcinoma, clear cell [SNOMED 421630008] [Observat…
#> 7 [V] [S] 4029175 Prolymphocytic leukemia, T-cell type [SNOMED 128821006] [Obs…
#> 8 [V] [S] 4186244 Malignant immunoproliferative neoplasm [SNOMED 414646000] [O…
#> 9 [V] [S] 4267422 Malignant aortic body tumor [SNOMED 62512005] [Observation] …
#> 10 [V] [S] 4028856 Glomus tumor, malignant [SNOMED 128908003] [Observation] [Mo…
#> # … with 1,315 more rows
#>
#> $LATERALITY
#> # A tibble: 5 x 1
#> concept
#> <chr>
#> 1 [V] [S] 4197258 Right and left [SNOMED 51440002] [Observation] [Qualifier Val…
#> 2 [V] [S] 4161551 Midline [SNOMED 399488007] [Observation] [Qualifier Value]
#> 3 [V] [S] 4080761 Right [SNOMED 24028007] [Observation] [Qualifier Value]
#> 4 [V] [S] 4300877 Left [SNOMED 7771000] [Observation] [Qualifier Value]
#> 5 [V] [S] 4280221 Unilateral [SNOMED 66459002] [Observation] [Qualifier Value]
#>
#> $PRIMARY_OR_UNCERTAIN_BEHAVIOR_CANCER_DISORDER
#> # A tibble: 55,909 x 1
#> concept
#> <chr>
#> 1 [V] [N] 35206047 Malignant neoplasm of external upper lip [ICD10CM C00.0] [C…
#> 2 [V] [N] 35206048 Malignant neoplasm of external lower lip [ICD10CM C00.1] [C…
#> 3 [V] [N] 35206049 Malignant neoplasm of external lip, unspecified [ICD10CM C0…
#> 4 [V] [N] 35206050 Malignant neoplasm of upper lip, inner aspect [ICD10CM C00.…
#> 5 [V] [N] 35206051 Malignant neoplasm of lower lip, inner aspect [ICD10CM C00.…
#> 6 [V] [N] 35206052 Malignant neoplasm of lip, unspecified, inner aspect [ICD10…
#> 7 [V] [N] 35206053 Malignant neoplasm of commissure of lip, unspecified [ICD10…
#> 8 [V] [N] 35206054 Malignant neoplasm of overlapping sites of lip [ICD10CM C00…
#> 9 [V] [N] 35206055 Malignant neoplasm of lip, unspecified [ICD10CM C00.9] [Con…
#> 10 [V] [N] 35206056 Malignant neoplasm of base of tongue [ICD10CM C01] [Conditi…
#> # … with 55,899 more rows
#>
#> $RADIATION_PROCEDURE
#> # A tibble: 5 x 1
#> concept
#> <chr>
#> 1 [V] [S] 40489482 Megavoltage radiation therapy using photons [SNOMED 44838500…
#> 2 [V] [S] 4165039 Teleradiotherapy using electrons [SNOMED 45643008] [Procedure…
#> 3 [V] [S] 4024005 Teleradiotherapy protons [SNOMED 10611004] [Procedure] [Proce…
#> 4 [V] [S] 4213601 Teleradiotherapy neutrons [SNOMED 80347004] [Procedure] [Proc…
#> 5 [V] [S] 40317890 Brachytherapy [SNOMED 152198000] [Procedure] [Procedure]
#>
#> $RADIATION_TARGET_BODY_SITE
#> # A tibble: 66 x 1
#> concept
#> <chr>
#> 1 [V] [S] 4215878 Cervical lymph node structure [SNOMED 81105003] [Spec Anatom…
#> 2 [V] [S] 4055510 Entire lymph node of thorax [SNOMED 196374005] [Spec Anatomi…
#> 3 [V] [S] 4074816 Axillary lymph node group [SNOMED 245269009] [Spec Anatomic …
#> 4 [V] [S] 4075241 Supraclavicular lymph node group [SNOMED 245265003] [Spec An…
#> 5 [V] [S] 4075246 Internal mammary lymph node group [SNOMED 245282001] [Spec A…
#> 6 [V] [S] 4075247 Abdominal lymph node group [SNOMED 245284000] [Spec Anatomic…
#> 7 [V] [S] 4081786 Pelvic lymph node group [SNOMED 245294005] [Spec Anatomic Si…
#> 8 [V] [S] 4241958 Structure of lymph node [SNOMED 59441001] [Spec Anatomic Sit…
#> 9 [V] [S] 4353165 Entire eye [SNOMED 244486005] [Spec Anatomic Site] [Body Str…
#> 10 [V] [S] 4209428 Pituitary structure [SNOMED 56329008] [Spec Anatomic Site] […
#> # … with 56 more rows
#>
#> $SECONDARY_CANCER_DISORDER
#> # A tibble: 909 x 1
#> concept
#> <chr>
#> 1 [V] [N] 45532940 Secondary carcinoid tumors, unspecified site [ICD10CM C7B.0…
#> 2 [V] [N] 45552289 Secondary carcinoid tumors of distant lymph nodes [ICD10CM …
#> 3 [V] [N] 45542632 Secondary carcinoid tumors of liver [ICD10CM C7B.02] [Condi…
#> 4 [V] [N] 45542633 Secondary carcinoid tumors of bone [ICD10CM C7B.03] [Condit…
#> 5 [V] [N] 45532941 Secondary carcinoid tumors of peritoneum [ICD10CM C7B.04] […
#> 6 [V] [N] 45600534 Secondary carcinoid tumors of other sites [ICD10CM C7B.09] …
#> 7 [V] [N] 45566619 Secondary Merkel cell carcinoma [ICD10CM C7B.1] [Condition]…
#> 8 [V] [N] 45571543 Other secondary neuroendocrine tumors [ICD10CM C7B.8] [Cond…
#> 9 [V] [N] 35206319 Secondary and unspecified malignant neoplasm of lymph nodes…
#> 10 [V] [N] 35206320 Secondary and unspecified malignant neoplasm of intrathorac…
#> # … with 899 more rows
#>
#> $SPECIMEN
#> # A tibble: 3,928 x 1
#> concept
#> <chr>
#> 1 [V] [N] 1027716 NA [NA NA] [NA] [NA]
#> 2 [V] [N] 1032268 NA [NA NA] [NA] [NA]
#> 3 [V] [N] 1033195 NA [NA NA] [NA] [NA]
#> 4 [V] [N] 1033465 NA [NA NA] [NA] [NA]
#> 5 [V] [N] 1033739 NA [NA NA] [NA] [NA]
#> 6 [V] [N] 1585831 NA [NA NA] [NA] [NA]
#> 7 [V] [N] 1585833 NA [NA NA] [NA] [NA]
#> 8 [V] [N] 3310432 NA [NA NA] [NA] [NA]
#> 9 [V] [N] 3311979 NA [NA NA] [NA] [NA]
#> 10 [V] [N] 3326584 NA [NA NA] [NA] [NA]
#> # … with 3,918 more rows
#>
#> $TREATMENT_INTENT
#> # A tibble: 2 x 1
#> concept
#> <chr>
#> 1 [V] [S] 4162591 Curative - procedure intent [SNOMED 373808002] [Observation] …
#> 2 [V] [S] 4179711 Palliative intent [SNOMED 363676003] [Observation] [Qualifier…
#>
#> $TREATMENT_TERMINATION_REASON
#> # A tibble: 7 x 1
#> concept
#> <chr>
#> 1 [V] [S] 4082735 Treatment completed [SNOMED 182992009] [Observation] [Procedu…
#> 2 [V] [S] 4243225 Lack of drug action [SNOMED 58848006] [Observation] [Clinical…
#> 3 [V] [S] 4105886 Adverse reaction [SNOMED 281647001] [Condition] [Clinical Fin…
#> 4 [V] [S] 4052625 Financial problem [SNOMED 160932005] [Observation] [Clinical …
#> 5 [V] [S] 4019958 Refusal of treatment by patient [SNOMED 105480006] [Observati…
#> 6 [V] [S] 4030023 Patient transfer [SNOMED 107724000] [Observation] [Procedure]
#> 7 [V] [S] 4146955 Treatment not available [SNOMED 309846006] [Observation] [Con…
#>
#> $TUMOR_MARKER_MEASUREMENT
#> # A tibble: 160 x 1
#> concept
#> <chr>
#> 1 [V] [S] 3005148 5-Hydroxyindoleacetate [Mass/time] in 24 hour Urine [LOINC 1…
#> 2 [V] [S] 3023028 5-Hydroxyindoleacetate [Mass/volume] in 24 hour Urine [LOINC…
#> 3 [V] [S] 3014670 5-Hydroxyindoleacetate [Mass/volume] in Cerebral spinal flui…
#> 4 [V] [S] 3021106 5-Hydroxyindoleacetate [Mass/volume] in Serum or Plasma [LOI…
#> 5 [V] [S] 3021385 5-Hydroxyindoleacetate [Mass/volume] in Urine [LOINC 1694-9]…
#> 6 [V] [S] 43055680 5-Hydroxyindoleacetate [Mass/volume] in Urine by Confirmato…
#> 7 [V] [S] 3009461 5-Hydroxyindoleacetate [Moles/time] in 24 hour Urine [LOINC …
#> 8 [V] [S] 3010801 5-Hydroxyindoleacetate [Moles/volume] in 24 hour Urine [LOIN…
#> 9 [V] [S] 3051403 5-Hydroxyindoleacetate [Moles/volume] in Cerebral spinal flu…
#> 10 [V] [S] 44816667 5-Hydroxyindoleacetate [Moles/volume] in Platelet rich plas…
#> # … with 150 more rows
#>
#> $UNITS_OF_MEASUREMENT
#> # A tibble: 1,011 x 1
#> concept
#> <chr>
#> 1 pm Picometer
#> 2 nm Nanometer
#> 3 mm Millimeter
#> 4 cm Centimeter
#> 5 m Meter
#> 6 ft-us Foot
#> 7 in-us Prostate specific Ag/Prostate volume calculated from height, width and…
#> 8 [V] [S] 8478 avidity index [UCUM {ai}] [Unit] [Unit]
#> 9 [V] [S] 8479 centipoise [UCUM cP] [Unit] [Unit]
#> 10 [V] [S] 8480 Ehrlich unit [UCUM [EU]] [Unit] [Unit]
#> # … with 1,001 more rows
#>
#> $YES_NO_UNKNOWN
#> # A tibble: 1 x 1
#> concept
#> <chr>
#> 1 [V] [S] 4188539 Yes [SNOMED 373066001] [Meas Value] [Qualifier Value]


Our Best Offer
we leverage shared values and ideals to inform strategy and design, creating experiences that inspire life and inspire action.
We Buy Houses Richmond VA and Anywhere In The Surrounding Areas, And At Any Price.
Richmond, VA Home Buyers offers fair prices on houses in foreclosure, in need of repair, damage, inheritance, legal issues, and many other situations that you might need to sell fast.
We’ll know very quickly if we can help you, and unlike selling through an agent,
you don’t have to wait to see if the buyer can get financing… we’re ready to buy right now!
we leverage shared values and ideals to inform strategy and design, creating experiences that inspire life and inspire action.
we leverage shared values and ideals to inform strategy and design, creating experiences that inspire life and inspire action.
we leverage shared values and ideals to inform strategy and design, creating experiences that inspire life and inspire action.
we leverage shared values and ideals to inform strategy and design, creating experiences that inspire life and inspire action.
we leverage shared values and ideals to inform strategy and design, creating experiences that inspire life and inspire action.
we leverage shared values and ideals to inform strategy and design, creating experiences that inspire life and inspire action.
Our goal is to help make your life easier and get you out from under the property that’s stressing you out…
while still paying a fast, fair, and honest price for your house.
Tell us about your property giving us a call or filling out the form with your information. Don’t worry about the condition of your home. We buy homes in "as is" condition.
We'll analyze your house immediately and contact you to either have a brief discussion or make arrangements to view the property. We'll also learn about your personal goals too.
We'll present you a fair cash offer in writing. No pressure. We’ll work on your schedule and handle all the details with a local title company. All you have to do is sign the paperwork.
Get latest testimonial update
Richmond, VA Home Buyers is very low key and easy to deal with. They are very understanding about different situations & have the ability to buy your Austin Home fast. I was amazed at how quickly the whole process happened. These Folks know their stuff.
“Richmond, VA Home Buyers was very knowledgeable and helpful. He truly guided us through the process and the whole time letting us know all our options. He is definitely a person you can trust. Thanks to him we are on the way to getting back on our feet without a repossession weighing us down.”


Class: Aws::ECS::Types::RegisterTaskDefinitionRequest
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
self,
Struct
|
|
|
Instance Chain:
self,
::Aws::Structure ,
Struct
|
|
| Inherits: |
Struct
|
| Defined in: | gems/aws-sdk-ecs/lib/aws-sdk-ecs/types.rb |
Overview
Constant Summary
Instance Attribute Summary
-
#container_definitions ⇒ Array<Types::ContainerDefinition>
rw
A list of container definitions in JSON format that describe the different containers that make up your task.
-
#cpu ⇒ String
rw
The number of CPU units used by the task.
-
#ephemeral_storage ⇒ Types::EphemeralStorage
rw
The amount of ephemeral storage to allocate for the task.
-
#execution_role_arn ⇒ String
rw
The Amazon
Resource
Name (ARN) of the task execution role that grants the Amazon ECS container agent permission to make Amazon Web Services API calls on your behalf. -
#family ⇒ String
rw
You must specify a
family
for a task definition. -
#inference_accelerators ⇒ Array<Types::InferenceAccelerator>
rw
The Elastic Inference accelerators to use for the containers in the task.
-
#ipc_mode ⇒ String
rw
The IPC resource namespace to use for the containers in the task.
-
#memory ⇒ String
rw
The amount of memory (in MiB) used by the task.
-
#network_mode ⇒ String
rw
The Docker networking mode to use for the containers in the task.
-
#pid_mode ⇒ String
rw
The process namespace to use for the containers in the task.
-
#placement_constraints ⇒ Array<Types::TaskDefinitionPlacementConstraint>
rw
An array of placement constraint objects to use for the task.
-
#proxy_configuration ⇒ Types::ProxyConfiguration
rw
The configuration details for the App Mesh proxy.
-
#requires_compatibilities ⇒ Array<String>
rw
The task launch type that Amazon ECS validates the task definition against.
-
#runtime_platform ⇒ Types::RuntimePlatform
rw
The operating system that your tasks definitions run on.
-
#tags ⇒ Array<Types::Tag>
rw
The metadata that you apply to the task definition to help you categorize and organize them.
-
#task_role_arn ⇒ String
rw
The short name or full Amazon Resource Name (ARN) of the
::Aws::IAM
role that containers in this task can assume. -
#volumes ⇒ Array<Types::Volume>
rw
A list of volume definitions in JSON format that containers in your task might use.
Instance Method Summary
::Aws::Structure
- Included
| #to_hash | Alias for Structure#to_h. |
Instance Attribute Details
#container_definitions ⇒ Array
<Types::ContainerDefinition> (rw)
A list of container definitions in JSON format that describe the different containers that make up your task.
# File 'gems/aws-sdk-ecs/lib/aws-sdk-ecs/types.rb', line 7909
class RegisterTaskDefinitionRequest < Struct.new( :family, :task_role_arn, :execution_role_arn, :network_mode, :container_definitions, :volumes, :placement_constraints, :requires_compatibilities, :cpu, :memory, :, :pid_mode, :ipc_mode, :proxy_configuration, :inference_accelerators, :ephemeral_storage, :runtime_platform) SENSITIVE = [] include Aws::Structure end
#cpu ⇒ String
(rw)
The number of CPU units used by the task. It can be expressed as an
integer using CPU units (for example, 1024
) or as a string using
vCPUs (for example, 1 vCPU
or 1 vcpu
) in a task definition.
String values are converted to an integer indicating the CPU units
when the task definition is registered.
If you're using the ::Aws::EC2
launch type, this field is optional.
Supported values are between 128
CPU units (0.125
vCPUs) and
10240
CPU units (10
vCPUs). If you do not specify a value, the
parameter is ignored.
If you're using the Fargate launch type, this field is required and
you must use one of the following values, which determines your
range of supported values for the memory
parameter:
The CPU units cannot be less than 1 vCPU when you use Windows containers on Fargate.
256 (.25 vCPU) - Available
memory
values: 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB)512 (.5 vCPU) - Available
memory
values: 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB)1024 (1 vCPU) - Available
memory
values: 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB)2048 (2 vCPU) - Available
memory
values: 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB)4096 (4 vCPU) - Available
memory
values: 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB)8192 (8 vCPU) - Available
memory
values: 16 GB and 60 GB in 4 GB increments
This option requires Linux platform 1.4.0
or later.
- 16384 (16vCPU) - Available
memory
values: 32GB and 120 GB in 8 GB increments
This option requires Linux platform 1.4.0
or later.
# File 'gems/aws-sdk-ecs/lib/aws-sdk-ecs/types.rb', line 7909
class RegisterTaskDefinitionRequest < Struct.new( :family, :task_role_arn, :execution_role_arn, :network_mode, :container_definitions, :volumes, :placement_constraints, :requires_compatibilities, :cpu, :memory, :, :pid_mode, :ipc_mode, :proxy_configuration, :inference_accelerators, :ephemeral_storage, :runtime_platform) SENSITIVE = [] include Aws::Structure end
#ephemeral_storage ⇒ Types::EphemeralStorage (rw)
The amount of ephemeral storage to allocate for the task. This
parameter is used to expand the total amount of ephemeral storage
available, beyond the default amount, for tasks hosted on Fargate.
For more information, see Fargate task storage in the Amazon
::Aws::ECS
User Guide for Fargate.
Linux platform version
1.4.0
or later.- Windows platform version
1.0.0
or later.
- Windows platform version
# File 'gems/aws-sdk-ecs/lib/aws-sdk-ecs/types.rb', line 7909
class RegisterTaskDefinitionRequest < Struct.new( :family, :task_role_arn, :execution_role_arn, :network_mode, :container_definitions, :volumes, :placement_constraints, :requires_compatibilities, :cpu, :memory, :, :pid_mode, :ipc_mode, :proxy_configuration, :inference_accelerators, :ephemeral_storage, :runtime_platform) SENSITIVE = [] include Aws::Structure end
#execution_role_arn ⇒ String
(rw)
The Amazon Resource
Name (ARN) of the task execution role that
grants the Amazon ECS container agent permission to make Amazon Web
Services API calls on your behalf. The task execution ::Aws::IAM
role is
required depending on the requirements of your task. For more
information, see Amazon ::Aws::ECS
task execution ::Aws::IAM
role in the
Amazon Elastic Container Service
Developer Guide.
# File 'gems/aws-sdk-ecs/lib/aws-sdk-ecs/types.rb', line 7909
class RegisterTaskDefinitionRequest < Struct.new( :family, :task_role_arn, :execution_role_arn, :network_mode, :container_definitions, :volumes, :placement_constraints, :requires_compatibilities, :cpu, :memory, :, :pid_mode, :ipc_mode, :proxy_configuration, :inference_accelerators, :ephemeral_storage, :runtime_platform) SENSITIVE = [] include Aws::Structure end
#family ⇒ String
(rw)
You must specify a family
for a task definition. You can use it
track multiple versions of the same task definition. The family
is
used as a name for your task definition. Up to 255 letters
(uppercase and lowercase), numbers, underscores, and hyphens are
allowed.
# File 'gems/aws-sdk-ecs/lib/aws-sdk-ecs/types.rb', line 7909
class RegisterTaskDefinitionRequest < Struct.new( :family, :task_role_arn, :execution_role_arn, :network_mode, :container_definitions, :volumes, :placement_constraints, :requires_compatibilities, :cpu, :memory, :, :pid_mode, :ipc_mode, :proxy_configuration, :inference_accelerators, :ephemeral_storage, :runtime_platform) SENSITIVE = [] include Aws::Structure end
#inference_accelerators ⇒ Array
<Types::InferenceAccelerator> (rw)
The Elastic Inference accelerators to use for the containers in the task.
# File 'gems/aws-sdk-ecs/lib/aws-sdk-ecs/types.rb', line 7909
class RegisterTaskDefinitionRequest < Struct.new( :family, :task_role_arn, :execution_role_arn, :network_mode, :container_definitions, :volumes, :placement_constraints, :requires_compatibilities, :cpu, :memory, :, :pid_mode, :ipc_mode, :proxy_configuration, :inference_accelerators, :ephemeral_storage, :runtime_platform) SENSITIVE = [] include Aws::Structure end
#ipc_mode ⇒ String
(rw)
The IPC resource namespace to use for the containers in the task.
The valid values are host
, task
, or none
. If host
is
specified, then all containers within the tasks that specified the
host
IPC mode on the same container instance share the same IPC
resources with the host Amazon EC2 instance. If task
is specified,
all containers within the specified task share the same IPC
resources. If none
is specified, then IPC resources within the
containers of a task are private and not shared with other
containers in a task or on the container instance. If no value is
specified, then the IPC resource namespace sharing depends on the
Docker daemon setting on the container instance. For more
information, see IPC settings in the Docker run reference.
If the host
IPC mode is used, be aware that there is a heightened
risk of undesired IPC namespace expose. For more information, see
Docker security.
If you are setting namespaced kernel parameters using
systemControls
for the containers in the task, the following will
apply to your IPC resource namespace. For more information, see
System Controls in the Amazon Elastic Container Service
Developer Guide.
For tasks that use the
host
IPC mode, IPC namespace relatedsystemControls
are not supported.For tasks that use the
task
IPC mode, IPC namespace relatedsystemControls
will apply to all containers within a task.
# File 'gems/aws-sdk-ecs/lib/aws-sdk-ecs/types.rb', line 7909
class RegisterTaskDefinitionRequest < Struct.new( :family, :task_role_arn, :execution_role_arn, :network_mode, :container_definitions, :volumes, :placement_constraints, :requires_compatibilities, :cpu, :memory, :, :pid_mode, :ipc_mode, :proxy_configuration, :inference_accelerators, :ephemeral_storage, :runtime_platform) SENSITIVE = [] include Aws::Structure end
#memory ⇒ String
(rw)
The amount of memory (in MiB) used by the task. It can be expressed
as an integer using MiB (for example ,1024
) or as a string using
GB (for example, 1GB
or 1 GB
) in a task definition. String
values are converted to an integer indicating the MiB when the task
definition is registered.
If using the ::Aws::EC2
launch type, this field is optional.
If using the Fargate launch type, this field is required and you
must use one of the following values. This determines your range of
supported values for the cpu
parameter.
The CPU units cannot be less than 1 vCPU when you use Windows containers on Fargate.
512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available
cpu
values: 256 (.25 vCPU)1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available
cpu
values: 512 (.5 vCPU)2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) - Available
cpu
values: 1024 (1 vCPU)Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB)
- Available
cpu
values: 2048 (2 vCPU)
- Available
Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB)
- Available
cpu
values: 4096 (4 vCPU)
- Available
Between 16 GB and 60 GB in 4 GB increments - Available
cpu
values: 8192 (8 vCPU)
This option requires Linux platform 1.4.0
or later.
- Between 32GB and 120 GB in 8 GB increments - Available
cpu
values: 16384 (16 vCPU)
This option requires Linux platform 1.4.0
or later.
# File 'gems/aws-sdk-ecs/lib/aws-sdk-ecs/types.rb', line 7909
class RegisterTaskDefinitionRequest < Struct.new( :family, :task_role_arn, :execution_role_arn, :network_mode, :container_definitions, :volumes, :placement_constraints, :requires_compatibilities, :cpu, :memory, :, :pid_mode, :ipc_mode, :proxy_configuration, :inference_accelerators, :ephemeral_storage, :runtime_platform) SENSITIVE = [] include Aws::Structure end
#network_mode ⇒ String
(rw)
The Docker networking mode to use for the containers in the task.
The valid values are none
, bridge
, awsvpc
, and host
. If no
network mode is specified, the default is bridge
.
For Amazon ::Aws::ECS
tasks on Fargate, the awsvpc
network mode is
required. For Amazon ::Aws::ECS
tasks on Amazon EC2 Linux instances, any
network mode can be used. For Amazon ::Aws::ECS
tasks on Amazon EC2 Windows
instances, <default>
or awsvpc
can be used. If the network mode
is set to none
, you cannot specify port mappings in your container
definitions, and the tasks containers do not have external
connectivity. The host
and awsvpc
network modes offer the
highest networking performance for containers because they use the
::Aws::EC2
network stack instead of the virtualized network stack provided
by the bridge
mode.
With the host
and awsvpc
network modes, exposed container ports
are mapped directly to the corresponding host port (for the host
network mode) or the attached elastic network interface port (for
the awsvpc
network mode), so you cannot take advantage of dynamic
host port mappings.
When using the host
network mode, you should not run containers
using the root user (UID 0). It is considered best practice to use a
non-root user.
If the network mode is awsvpc
, the task is allocated an elastic
network interface, and you must specify a NetworkConfiguration
value
when you create a service or run a task with the task definition.
For more information, see Task Networking in the Amazon
Elastic Container Service
Developer Guide.
If the network mode is host
, you cannot run multiple
instantiations of the same task on a single container instance when
port mappings are used.
For more information, see Network settings in the Docker run reference.
# File 'gems/aws-sdk-ecs/lib/aws-sdk-ecs/types.rb', line 7909
class RegisterTaskDefinitionRequest < Struct.new( :family, :task_role_arn, :execution_role_arn, :network_mode, :container_definitions, :volumes, :placement_constraints, :requires_compatibilities, :cpu, :memory, :, :pid_mode, :ipc_mode, :proxy_configuration, :inference_accelerators, :ephemeral_storage, :runtime_platform) SENSITIVE = [] include Aws::Structure end
#pid_mode ⇒ String
(rw)
The process namespace to use for the containers in the task. The
valid values are host
or task
. If host
is specified, then all
containers within the tasks that specified the host
PID mode on
the same container instance share the same process namespace with
the host Amazon EC2 instance. If task
is specified, all containers
within the specified task share the same process namespace. If no
value is specified, the default is a private namespace. For more
information, see PID settings in the Docker run reference.
If the host
PID mode is used, be aware that there is a heightened
risk of undesired process namespace expose. For more information,
see Docker security.
# File 'gems/aws-sdk-ecs/lib/aws-sdk-ecs/types.rb', line 7909
class RegisterTaskDefinitionRequest < Struct.new( :family, :task_role_arn, :execution_role_arn, :network_mode, :container_definitions, :volumes, :placement_constraints, :requires_compatibilities, :cpu, :memory, :, :pid_mode, :ipc_mode, :proxy_configuration, :inference_accelerators, :ephemeral_storage, :runtime_platform) SENSITIVE = [] include Aws::Structure end
#placement_constraints ⇒ Array
<Types::TaskDefinitionPlacementConstraint> (rw)
An array of placement constraint objects to use for the task. You can specify a maximum of 10 constraints for each task. This limit includes constraints in the task definition and those specified at runtime.
# File 'gems/aws-sdk-ecs/lib/aws-sdk-ecs/types.rb', line 7909
class RegisterTaskDefinitionRequest < Struct.new( :family, :task_role_arn, :execution_role_arn, :network_mode, :container_definitions, :volumes, :placement_constraints, :requires_compatibilities, :cpu, :memory, :, :pid_mode, :ipc_mode, :proxy_configuration, :inference_accelerators, :ephemeral_storage, :runtime_platform) SENSITIVE = [] include Aws::Structure end
#proxy_configuration ⇒ Types::ProxyConfiguration (rw)
The configuration details for the App Mesh proxy.
For tasks hosted on Amazon EC2 instances, the container instances
require at least version 1.26.0
of the container agent and at
least version 1.26.0-1
of the ecs-init
package to use a proxy
configuration. If your container instances are launched from the
Amazon ECS-optimized AMI version 20190301
or later, then they
contain the required versions of the container agent and ecs-init
.
For more information, see Amazon ECS-optimized AMI versions in
the Amazon Elastic Container Service
Developer Guide.
# File 'gems/aws-sdk-ecs/lib/aws-sdk-ecs/types.rb', line 7909
class RegisterTaskDefinitionRequest < Struct.new( :family, :task_role_arn, :execution_role_arn, :network_mode, :container_definitions, :volumes, :placement_constraints, :requires_compatibilities, :cpu, :memory, :, :pid_mode, :ipc_mode, :proxy_configuration, :inference_accelerators, :ephemeral_storage, :runtime_platform) SENSITIVE = [] include Aws::Structure end
#requires_compatibilities ⇒ Array
<String
> (rw)
The task launch type that Amazon ECS validates the task definition against. A client exception is returned if the task definition doesn't validate against the compatibilities specified. If no value is specified, the parameter is omitted from the response.
# File 'gems/aws-sdk-ecs/lib/aws-sdk-ecs/types.rb', line 7909
class RegisterTaskDefinitionRequest < Struct.new( :family, :task_role_arn, :execution_role_arn, :network_mode, :container_definitions, :volumes, :placement_constraints, :requires_compatibilities, :cpu, :memory, :, :pid_mode, :ipc_mode, :proxy_configuration, :inference_accelerators, :ephemeral_storage, :runtime_platform) SENSITIVE = [] include Aws::Structure end
#runtime_platform ⇒ Types::RuntimePlatform (rw)
The operating system that your tasks definitions run on. A platform family is specified only for tasks using the Fargate launch type.
When you specify a task definition in a service, this value must
match the runtimePlatform
value of the service.
# File 'gems/aws-sdk-ecs/lib/aws-sdk-ecs/types.rb', line 7909
class RegisterTaskDefinitionRequest < Struct.new( :family, :task_role_arn, :execution_role_arn, :network_mode, :container_definitions, :volumes, :placement_constraints, :requires_compatibilities, :cpu, :memory, :, :pid_mode, :ipc_mode, :proxy_configuration, :inference_accelerators, :ephemeral_storage, :runtime_platform) SENSITIVE = [] include Aws::Structure end
#tags ⇒ Array
<Types::Tag> (rw)
The metadata that you apply to the task definition to help you categorize and organize them. Each tag consists of a key and an optional value. You define both of them.
The following basic restrictions apply to tags:
Maximum number of tags per resource - 50
For each resource, each tag key must be unique, and each tag key can have only one value.
Maximum key length - 128 Unicode characters in UTF-8
Maximum value length - 256 Unicode characters in UTF-8
If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.
Tag
keys and values are case-sensitive.Do not use
aws:
,AWS:
, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for Amazon Web Services use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit.
# File 'gems/aws-sdk-ecs/lib/aws-sdk-ecs/types.rb', line 7909
class RegisterTaskDefinitionRequest < Struct.new( :family, :task_role_arn, :execution_role_arn, :network_mode, :container_definitions, :volumes, :placement_constraints, :requires_compatibilities, :cpu, :memory, :, :pid_mode, :ipc_mode, :proxy_configuration, :inference_accelerators, :ephemeral_storage, :runtime_platform) SENSITIVE = [] include Aws::Structure end
#task_role_arn ⇒ String
(rw)
The short name or full Amazon Resource Name (ARN) of the ::Aws::IAM
role
that containers in this task can assume. All containers in this task
are granted the permissions that are specified in this role. For
more information, see IAM Roles for Tasks in the Amazon
Elastic Container Service
Developer Guide.
# File 'gems/aws-sdk-ecs/lib/aws-sdk-ecs/types.rb', line 7909
class RegisterTaskDefinitionRequest < Struct.new( :family, :task_role_arn, :execution_role_arn, :network_mode, :container_definitions, :volumes, :placement_constraints, :requires_compatibilities, :cpu, :memory, :, :pid_mode, :ipc_mode, :proxy_configuration, :inference_accelerators, :ephemeral_storage, :runtime_platform) SENSITIVE = [] include Aws::Structure end
#volumes ⇒ Array
<Types::Volume> (rw)
A list of volume definitions in JSON format that containers in your task might use.
# File 'gems/aws-sdk-ecs/lib/aws-sdk-ecs/types.rb', line 7909
class RegisterTaskDefinitionRequest < Struct.new( :family, :task_role_arn, :execution_role_arn, :network_mode, :container_definitions, :volumes, :placement_constraints, :requires_compatibilities, :cpu, :memory, :, :pid_mode, :ipc_mode, :proxy_configuration, :inference_accelerators, :ephemeral_storage, :runtime_platform) SENSITIVE = [] include Aws::Structure end


1. GSM and CDMA are the two most prevalent standards in the mobile world. As a first step, determine the technology (GSM or CDMA) used by the mobile carrier of the foreign country where you are planning to use your phone.Wikipedia has dedicated sections - see pages for India, Europe and Asia Pacific countries - that list the standards used by various carriers of a particular country. If that carrier is on GSM, you would need a GSM-compliant mobile phone and the device should be unlocked meaning it should be able to accept SIM cards of other carriers.
2. The other important factor is the frequency band that carriers are using in the country where you are travelling to.
or instance, mobile networks in India use the 900 MHz and 1800 MHz frequency bands while GSM carriers in America operate on 850 MHz and 1900 MHz frequencies. Thus, if you are planning to buy a mobile phone from Amazon.com for use in India, the phone should support the 900 / 1800 MHz frequencies.


Your browser doesn't support the features required by impress.js, so you are presented with a simplified
version of this presentation.
For the best experience please use the latest Chrome, Safari or Firefox browser.
- What is a "Version Control System"?
- Why should you care?
- Basic Comparison
What is a "Version Control System"?
It's a system that records changes to a file or set of files over time
so that you can recall specific versions later.
Why should you care?
- Keep track of changes in files
- Cooperate easier
- Who did what, when did (s)he do it and why?
- Maintain multiple versions of a project (branching)
- Project Progress Control (Merge Policy)
- Integration with other systems (hooks)
Centralized vs Distributed
In distributed version control
rather than a single, central repository on which clients synchronize,
each peer's working copy of the codebase is a complete repository.
Git
Why it has become so popular?
Basic Commands
- init
- clone
- pull
- push
- merge
- checkout
- branch
- log
- status
- add
- commit


PICSHARZ
Menu
Upload
Login
Search
Profile
Log Out
×
Search
Guitar
Cat
Code Spiral
Chairs
Mona Lisa
Jack Sparrow
Loading your feed...
UPLOAD AN IMAGE
×
Tags
Title
What's the Image About?


{% extends 'base.html' %} {% block body_block %} {% csrf_token %} Are you sure you want to delete this recommendation ? No, wait... {% endblock body_block %}


  #reinvent
11/12/2013, 7:06:12 PM
Favs: 0
Retweets: 0
link


Taking aim at preventing the greenhouse effect, the main contributor to global warming, the Obama Administration created legislation, which it titled the Clean Power Plan. On August 3, 2015, the Obama Administration unveiled The Clean Power Plan, which "established the first national limits on carbon pollution from existing power plants—our nation's single largest source of the pollution fueling climate change" and was "the biggest step" the United States had "ever taken to address climate change." This is heralded as Obama’s greatest policy effort to combat climate change.
The primary goal of the CPP is to reduce CO2 emissions by 32% by the year 2030 in comparison to CO2 emissions from 2005. The interactive chart below utilizes data provided by the Environmental Protection Agency (EPA). Annual statistics on CO2 emissions for the country and state granularity are provided since 1990 with a 1 year lag in release date; 2015 is the most recent data point.
How does the CPP propose states achieve the reduction of CO2? States are required to submit a plan to the EPA detailing how it will reduce CO2 emissions from fossil fuel burning facilities.
Facility Name:
Carbon Dioxide: 100000000 (tons)
Power Generated: 100 (MW-h)
Primary Fuel Type:
Coal Natural Gas Petroleum Hydro Wind Solar Nuclear Geothermal Biomass Other Fossil Fuel Other Fuel Types
USA has been a leading producer of CO2 for the past 25 years, overtaken by China only recently. However, the US has reduced the Coal consumption significantly in the past 10-15 years. The electricy consumption increased in the 90s but has stayed stagnant in the past 10 years. The US remains the leading consumer of Natural Gas in the world.
The CPP was met with much controversy, however, as opponents cited that it would hurt the economy by eliminating job in the coal industry and drastically reducing job in other industries such as cement and steel production. For these reasons, the Trump Administration repealed the CPP on October 10, 2017. In the chart below, a history of electric generating units constructed in the United States is presented as well as past and planned retirements through 2055, which are indicated in the bottom plot.
Data Source: United States EPA
Start Year: End Year:
Total Power: 100000000 (MW)
Fuel Type: 100000000
Power: 100000000 (MW)