PERLSEC
Section: Perl Programmers Reference Guide (1)Updated: 2009-07-27
Index Return to Main Contents
NAME
perlsec - Perl securityDESCRIPTION
Perl is designed to make it easy to program securely even when running with extra privileges, like setuid or setgid programs. Unlike most command line shells, which are based on multiple substitution passes on each line of the script, Perl uses a more conventional evaluation scheme with fewer hidden snags. Additionally, because the language has more builtin functionality, it can rely less upon external (and possibly untrustworthy) programs to accomplish its purposes.SECURITY VULNERABILITY CONTACT INFORMATION
If you believe you have found a security vulnerability in Perl, please email<EMAIL_ADDRESS>with details. This points to a closed subscription, unarchived mailing list. Please only use this address for security issues in the Perl core, not for modules independently distributed on CPAN.SECURITY MECHANISMS AND CONCERNS
Taint mode
Perl automatically enables a set of special security checks, called taint mode, when it detects its program running with differing real and effective user or group IDs. The setuid bit in Unix permissions is mode 04000, the setgid bit mode 02000; either or both may be set. You can also enable taint mode explicitly by using the -T command line flag. This flag is strongly suggested for server programs and any program run on behalf of someone else, such as a CGI script. Once taint mode is on, it's on for the remainder of your script.While in this mode, Perl takes special precautions called taint checks to prevent both obvious and subtle traps. Some of these checks are reasonably simple, such as verifying that path directories aren't writable by others; careful programmers have always used checks like these. Other checks, however, are best supported by the language itself, and it is these checks especially that contribute to making a set-id Perl program more secure than the corresponding C program.
You may not use data derived from outside your program to affect something else outside your program---at least, not by accident. All command line arguments, environment variables, locale information (see perllocale), results of certain system calls ("readdir()", "readlink()", the variable of "shmread()", the messages returned by "msgrcv()", the password, gcos and shell fields returned by the "getpwxxx()" calls), and all file input are marked as ``tainted''. Tainted data may not be used directly or indirectly in any command that invokes a sub-shell, nor in any command that modifies files, directories, or processes, with the following exceptions:
- *
- Arguments to "print" and "syswrite" are not checked for taintedness.
- *
-
Symbolic methods
$obj->$method(@args);
and symbolic sub references
&{$foo}(@args); $foo->(@args);
are not checked for taintedness. This requires extra carefulness unless you want external data to affect your control flow. Unless you carefully limit what these symbolic values are, people are able to call functions outside your Perl code, such as POSIX::system, in which case they are able to run arbitrary external code.
- *
- Hash keys are never tainted.
For efficiency reasons, Perl takes a conservative view of whether data is tainted. If an expression contains tainted data, any subexpression may be considered tainted, even if the value of the subexpression is not itself affected by the tainted data.
Because taintedness is associated with each scalar value, some elements of an array or hash can be tainted and others not. The keys of a hash are never tainted.
For example:
$arg = shift; # $arg is tainted $hid = $arg, 'bar'; # $hid is also tainted $line = <>; # Tainted $line = <STDIN>; # Also tainted open FOO, "/home/me/bar" or die $!; $line = <FOO>; # Still tainted $path = $ENV{'PATH'}; # Tainted, but see below $data = 'abc'; # Not tainted system "echo $arg"; # Insecure system "/bin/echo", $arg; # Considered insecure # (Perl doesn't know about /bin/echo) system "echo $hid"; # Insecure system "echo $data"; # Insecure until PATH set $path = $ENV{'PATH'}; # $path now tainted $ENV{'PATH'} = '/bin:/usr/bin'; delete @ENV{'IFS', 'CDPATH', 'ENV', 'BASH_ENV'}; $path = $ENV{'PATH'}; # $path now NOT tainted system "echo $data"; # Is secure now! open(FOO, "< $arg"); # OK - read-only file open(FOO, "> $arg"); # Not OK - trying to write open(FOO,"echo $arg|"); # Not OK open(FOO,"-|") or exec 'echo', $arg; # Also not OK $shout = `echo $arg`; # Insecure, $shout now tainted unlink $data, $arg; # Insecure umask $arg; # Insecure exec "echo $arg"; # Insecure exec "echo", $arg; # Insecure exec "sh", '-c', $arg; # Very insecure! @files = <*.c>; # insecure (uses readdir() or similar) @files = glob('*.c'); # insecure (uses readdir() or similar) # In Perl releases older than 5.6.0 the <*.c> and glob('*.c') would # have used an external program to do the filename expansion; but in # either case the result is tainted since the list of filenames comes # from outside of the program. $bad = ($arg, 23); # $bad will be tainted $arg, `true`; # Insecure (although it isn't really)
If you try to do something insecure, you will get a fatal error saying something like ``Insecure dependency'' or ``Insecure $ENV{PATH}''.
The exception to the principle of ``one tainted value taints the whole expression'' is with the ternary conditional operator "?:". Since code with a ternary conditional
$result = $tainted_value ? "Untainted" : "Also untainted";
is effectively
if ( $tainted_value ) { $result = "Untainted"; } else { $result = "Also untainted"; }
it doesn't make sense for $result to be tainted.
Laundering and Detecting Tainted Data
To test whether a variable contains tainted data, and whose use would thus trigger an ``Insecure dependency'' message, you can use the "tainted()" function of the Scalar::Util module, available in your nearby CPAN mirror, and included in Perl starting from the release 5.8.0. Or you may be able to use the following "is_tainted()" function.
sub is_tainted { return ! eval { eval("#" . substr(join("", @_), 0, 0)); 1 }; }
This function makes use of the fact that the presence of tainted data anywhere within an expression renders the entire expression tainted. It would be inefficient for every operator to test every argument for taintedness. Instead, the slightly more efficient and conservative approach is used that if any tainted value has been accessed within the same expression, the whole expression is considered tainted.
But testing for taintedness gets you only so far. Sometimes you have just to clear your data's taintedness. Values may be untainted by using them as keys in a hash; otherwise the only way to bypass the tainting mechanism is by referencing subpatterns from a regular expression match. Perl presumes that if you reference a substring using $1, $2, etc., that you knew what you were doing when you wrote the pattern.  It's better to verify that the variable has only good characters (for certain values of ``good'') rather than checking whether it has any bad characters. That's because it's far too easy to miss bad characters that you never thought of.
Here's a test to make sure that the data contains nothing but ``word'' characters (alphabetics, numerics, and underscores), a hyphen, an at sign, or a dot.
if ($data =~ /^([-\@\w.]+)$/) { $data = $1; # $data now untainted } else { die "Bad data in '$data'"; # log this somewhere }
This is fairly secure because "/\w+/" doesn't normally match shell metacharacters, nor are dot, dash, or at going to mean something special to the shell. Use of "/.+/" would have been insecure in theory because it lets everything through, but Perl doesn't check for that. The lesson is that when untainting, you must be exceedingly careful with your patterns. Laundering data using regular expression is the only mechanism for untainting dirty data, unless you use the strategy detailed below to fork a child of lesser privilege.
The example does not untaint $data if "use locale" is in effect, because the characters matched by "\w" are determined by the locale. Perl considers that locale definitions are untrustworthy because they contain data from outside the program. If you are writing a locale-aware program, and want to launder data with a regular expression containing "\w", put "no locale" ahead of the expression in the same block. See ``SECURITY'' in perllocale for further discussion and examples.
Switches On the #! Line
When you make a script executable, in order to make it usable as a command, the system will pass switches to perl from the script's #! line. Perl checks that any command line switches given to a setuid (or setgid) script actually match the ones set on the #! line. Some Unix and Unix-like environments impose a one-switch limit on the #! line, so you may need to use something like "-wU" instead of "-w -U" under such systems. (This issue should arise only in Unix or Unix-like environments that support #! and setuid or setgid scripts.)Taint mode and @INC
When the taint mode ("-T") is in effect, the ``.'' directory is removed from @INC, and the environment variables "PERL5LIB" and "PERLLIB" are ignored by Perl. You can still adjust @INC from outside the program by using the "-I" command line option as explained in perlrun. The two environment variables are ignored because they are obscured, and a user running a program could be unaware that they are set, whereas the "-I" option is clearly visible and therefore permitted.Another way to modify @INC without modifying the program, is to use the "lib" pragma, e.g.:
perl -Mlib=/foo program
The benefit of using "-Mlib=/foo" over "-I/foo", is that the former will automagically remove any duplicated directories, while the later will not.
Note that if a tainted string is added to @INC, the following problem will be reported:
Insecure dependency in require while running with -T switch
Cleaning Up Your Path
For "Insecure $ENV{PATH}" messages, you need to set $ENV{'PATH'} to a known value, and each directory in the path must be absolute and non-writable by others than its owner and group. You may be surprised to get this message even if the pathname to your executable is fully qualified. This is not generated because you didn't supply a full path to the program; instead, it's generated because you never set your PATH environment variable, or you didn't set it to something that was safe. Because Perl can't guarantee that the executable in question isn't itself going to turn around and execute some other program that is dependent on your PATH, it makes sure you set the PATH.The PATH isn't the only environment variable which can cause problems. Because some shells may use the variables IFS, CDPATH, ENV, and BASH_ENV, Perl checks that those are either empty or untainted when starting subprocesses. You may wish to add something like this to your setid and taint-checking scripts.
delete @ENV{qw(IFS CDPATH ENV BASH_ENV)}; # Make %ENV safer
It's also possible to get into trouble with other operations that don't care whether they use tainted values. Make judicious use of the file tests in dealing with any user-supplied filenames. When possible, do opens and such after properly dropping any special user (or group!) privileges. Perl doesn't prevent you from opening tainted filenames for reading, so be careful what you print out. The tainting mechanism is intended to prevent stupid mistakes, not to remove the need for thought.
Perl does not call the shell to expand wild cards when you pass "system" and "exec" explicit parameter lists instead of strings with possible shell wildcards in them. Unfortunately, the "open", "glob", and backtick functions provide no such alternate calling convention, so more subterfuge will be required.
Perl provides a reasonably safe way to open a file or pipe from a setuid or setgid program: just create a child process with reduced privilege who does the dirty work for you. First, fork a child using the special "open" syntax that connects the parent and child by a pipe. Now the child resets its ID set and any other per-process attributes, like environment variables, umasks, current working directories, back to the originals or known safe values. Then the child process, which no longer has any special permissions, does the "open" or other system call. Finally, the child passes the data it managed to access back to the parent. Because the file or pipe was opened in the child while running under less privilege than the parent, it's not apt to be tricked into doing something it shouldn't.
Here's a way to do backticks reasonably safely. Notice how the "exec" is not called with a string that the shell could expand. This is by far the best way to call something that might be subjected to shell escapes: just never call the shell at all.
use English '-no_match_vars'; die "Can't fork: $!" unless defined($pid = open(KID, "-|")); if ($pid) { # parent while (<KID>) { # do something } close KID; } else { my @temp = ($EUID, $EGID); my $orig_uid = $UID; my $orig_gid = $GID; $EUID = $UID; $EGID = $GID; # Drop privileges $UID = $orig_uid; $GID = $orig_gid; # Make sure privs are really gone ($EUID, $EGID) = @temp; die "Can't drop privileges" unless $UID == $EUID && $GID eq $EGID; $ENV{PATH} = "/bin:/usr/bin"; # Minimal PATH.  }
A similar strategy would work for wildcard expansion via "glob", although you can use "readdir" instead.
Taint checking is most useful when although you trust yourself not to have written a program to give away the farm, you don't necessarily trust those who end up using it not to try to trick it into doing something bad. This is the kind of security checking that's useful for set-id programs and programs launched on someone else's behalf, like CGI programs.
This is quite different, however, from not even trusting the writer of the code not to try to do something evil. That's the kind of trust needed when someone hands you a program you've never seen before and says, ``Here, run this.'' For that kind of safety, check out the Safe module, included standard in the Perl distribution. This module allows the programmer to set up special compartments in which all system operations are trapped and namespace access is carefully controlled.
Security Bugs
Beyond the obvious problems that stem from giving special privileges to systems as flexible as scripts, on many versions of Unix, set-id scripts are inherently insecure right from the start. The problem is a race condition in the kernel. Between the time the kernel opens the file to see which interpreter to run and when the (now-set-id) interpreter turns around and reopens the file to interpret it, the file in question may have changed, especially if you have symbolic links on your system.Fortunately, sometimes this kernel ``feature'' can be disabled. Unfortunately, there are two ways to disable it. The system can simply outlaw scripts with any set-id bit set, which doesn't help much. Alternately, it can simply ignore the set-id bits on scripts. If the latter is true, Perl can emulate the setuid and setgid mechanism when it notices the otherwise useless setuid/gid bits on Perl scripts. It does this via a special executable called suidperl that is automatically invoked for you if it's needed.
The use of suidperl is considered deprecated, and will be removed in Perl 5.12.0. It is strongly recommended that all code uses the simplier and more secure C-wrappers described below.
If the kernel set-id script feature isn't disabled, Perl will complain loudly that your set-id script is insecure. You'll need to either disable the kernel set-id script feature, or put a C wrapper around the script. A C wrapper is just a compiled program that does nothing except call your Perl program. Compiled programs are not subject to the kernel bug that plagues set-id scripts. Here's a simple wrapper, written in C:
#define REAL_PATH "/path/to/script" main(ac, av) char **av; { execv(REAL_PATH, av); }
Compile this wrapper into a binary executable and then make it rather than your script setuid or setgid.
In recent years, vendors have begun to supply systems free of this inherent security bug. On such systems, when the kernel passes the name of the set-id script to open to the interpreter, rather than using a pathname subject to meddling, it instead passes /dev/fd/3. This is a special file already opened on the script, so that there can be no race condition for evil scripts to exploit. On these systems, Perl should be compiled with "-DSETUID_SCRIPTS_ARE_SECURE_NOW". The Configure program that builds Perl tries to figure this out for itself, so you should never have to specify this yourself. Most modern releases of SysVr4 and BSD 4.4 use this approach to avoid the kernel race condition.
Prior to release 5.6.1 of Perl, bugs in the code of suidperl could introduce a security hole. The use of suidperl is considered deprecated, and will be removed in Perl 5.12.0.
 (That doesn't mean that a CGI script's source is readable by people on the web, though.) So you have to leave the permissions at the socially friendly 0755 level. This lets people on your local system only see your source.
Some people mistakenly regard this as a security problem. If your program does insecure things, and relies on people not knowing how to exploit those insecurities, it is not secure. It is often possible for someone to determine the insecure things and exploit them without viewing the source. Security through obscurity, the name for hiding your bugs instead of fixing them, is little security indeed.
You can try using encryption via source filters (Filter::* from CPAN, or Filter::Util::Call and Filter::Simple since Perl 5.8). But crackers might be able to decrypt it. You can try using the byte code compiler and interpreter described below, but crackers might be able to de-compile it. You can try using the native-code compiler described below, but crackers might be able to disassemble it. These pose varying degrees of difficulty to people wanting to get at your code, but none can definitively conceal it (this is true of every language, not just Perl).
If you're concerned about people profiting from your code, then the bottom line is that nothing but a restrictive license will give you legal security. License your software and pepper it with threatening statements like ``This is unpublished proprietary software of XYZ Corp. Your access to it does not give you permission to use it blah blah blah.'' You should see a lawyer to be sure your license's wording will stand up in court.
Unicode
Unicode is a new and complex technology and one may easily overlook certain security pitfalls. See perluniintro for an overview and perlunicode for details, and ``Security Implications of Unicode'' in perlunicode for security implications in particular.Algorithmic Complexity Attacks
Certain internal algorithms used in the implementation of Perl can be attacked by choosing the input carefully to consume large amounts of either time or space or both. This can lead into the so-called Denial of Service (DoS) attacks.- *
-
Hash Function - the algorithm used to ``order'' hash elements has been
changed several times during the development of Perl, mainly to be
reasonably fast. In Perl 5.8.1 also the security aspect was taken
into account.
In Perls before 5.8.1 one could rather easily generate data that as hash keys would cause Perl to consume large amounts of time because internal structure of hashes would badly degenerate. In Perl 5.8.1 the hash function is randomly perturbed by a pseudorandom seed which makes generating such naughty hash keys harder. See ``PERL_HASH_SEED'' in perlrun for more information.
In Perl 5.8.1 the random perturbation was done by default, but as of 5.8.2 it is only used on individual hashes if the internals detect the insertion of pathological data. If one wants for some reason emulate the old behaviour (and expose oneself to DoS attacks) one can set the environment variable PERL_HASH_SEED to zero to disable the protection (or any other integer to force a known perturbation, rather than random). One possible reason for wanting to emulate the old behaviour is that in the new behaviour consecutive runs of Perl will order hash keys differently, which may confuse some applications (like Data::Dumper: the outputs of two different runs are no longer identical).
Perl has never guaranteed any ordering of the hash keys, and the ordering has already changed several times during the lifetime of Perl 5. Also, the ordering of hash keys has always been, and continues to be, affected by the insertion order.
Also note that while the order of the hash elements might be randomised, this ``pseudoordering'' should not be used for applications like shuffling a list randomly (use List::Util::shuffle() for that, see List::Util, a standard core module since Perl 5.8.0; or the CPAN module Algorithm::Numerical::Shuffle), or for generating permutations (use e.g. the CPAN modules Algorithm::Permute or Algorithm::FastPermute), or for any cryptographic applications.
- *
- Regular expressions - Perl's regular expression engine is so called NFA (Non-deterministic Finite Automaton), which among other things means that it can rather easily consume large amounts of both time and space if the regular expression may match in several ways. Careful crafting of the regular expressions can help but quite often there really isn't much one can do (the book ``Mastering Regular Expressions'' is required reading, see perlfaq2). Running out of space manifests itself by Perl running out of memory.
- *
- Sorting - the quicksort algorithm used in Perls before 5.8.0 to implement the sort() function is very easy to trick into misbehaving so that it consumes a lot of time. Starting from Perl 5.8.0 a different sorting algorithm, mergesort, is used by default. Mergesort cannot misbehave on any input.
See <http://www.cs.rice.edu/~scrosby/hash/> for more information, and any computer science textbook on algorithmic complexity.
SEE ALSO
perlrun for its description of cleaning up environment variables.
Index
- NAME
- DESCRIPTION
- SECURITY VULNERABILITY CONTACT INFORMATION
- SECURITY MECHANISMS AND CONCERNS
- SEE ALSO
This document was created by man2html, using the manual pages.
Time: 05:29:08 GMT, December 24, 2015


There are some mines hidden in the grid below. Try to open all the squares that aren't mines by clicking them, but don't click the mines. The numberes in opened squares indicate how many of the 8 squares surrounding them (aka "neighbor squares") are mines.
You can flag the squares by right-clicking. This is intended to be used so that when you know that some square is a mine, you put a flag there.
If the number of an opened square is equal to the number of flagged squares around it, then any of the square's non-flagged neighbor squares can't be mines, assuming that you didn't flag any not-mines. In those cases, you can double click the number, and all those other squares are automatically opened.


What is GVHD?
Graft-vs.-Host Disease (GVHD) may occur when the new stem cells (graft) recognize the tissues of your body (host) as foreign and starts a reaction. GVHD may cause a fever and commonly affects the skin, gastrointestinal tract (mouth, esophagus, stomach, and intestines) and liver.
No GVHD
Mild GVHD
Moderate GVHD
Severe GVHD
How is this calculated?
The doctors at Rutgers Cancer Institute of New Jersey have developed a system for calculating risk that is specific to you and your medical information.
Your Medical Records
| Name | Kathy Smith |
| Age | 40-49 years |
| Sex | Female |
| Diagnosis | Acute Myeloid Leukemia (AML) |


Gecode::Set::Rel::CharacteristicSets Class Reference
Representation of the characteristic functions of two sets. More...
#include <lq.hpp>
Classes | |
| class | CSIter |
| Value iterator for characteristic function. More... | |
Public Member Functions | |
| template<class View0 , class View1 > | |
| CharacteristicSets (Region &re, View0 x, View1 y) | |
| Constructor. | |
| bool | xmin (unsigned int i) const |
| Return minimum of element i for variable x. | |
| bool | xmax (unsigned int i) const |
| Return maximum of element i for variable x. | |
| bool | ymin (unsigned int i) const |
| Return minimum of element i for variable y. | |
| bool | ymax (unsigned int i) const |
| Return maximum of element i for variable y. | |
| void | xmin (unsigned int i, bool j) |
| Set minimum of element i for variable x to j. | |
| void | xmax (unsigned int i, bool j) |
| Set maximum of element i for variable x to j. | |
| void | ymin (unsigned int i, bool j) |
| Set minimum of element i for variable y to j. | |
| void | ymax (unsigned int i, bool j) |
| Set maximum of element i for variable y to j. | |
| ModEvent | xlq (unsigned int i, bool j) |
| Update upper bound of to j. | |
| ModEvent | xgq (unsigned int i, bool j) |
| Update lower bound of to j. | |
| ModEvent | ylq (unsigned int i, bool j) |
| Update upper bound of to j. | |
| ModEvent | ygq (unsigned int i, bool j) |
| Update lower bound of to j. | |
| unsigned int | size (void) const |
| Return size of combined upper bounds. | |
| template<class View0 , class View1 > | |
| ExecStatus | prune (Space &home, View0 x, View1 y) |
| Prune x and y using computed bounds. | |
Protected Member Functions | |
| bool | get (unsigned int i) const |
| Get bit i. | |
| void | set (unsigned int i, bool j) |
| Set bit i to value j. | |
Protected Attributes | |
| unsigned int | xsize |
| Size of the combined upper bounds. | |
| Support::BitSetBase | b |
| Storage for the characteristic functions. | |
| int * | ub |
| Elements in the combined upper bounds. | |
| bool | xlm |
| Whether lower bound of x was updated. | |
| bool | xum |
| Whether upper bound of x was updated. | |
| bool | ylm |
| Whether lower bound of y was updated. | |
| bool | yum |
| Whether upper bound of y was updated. |
Detailed Description
Representation of the characteristic functions of two sets.
Definition at line 39 of file lq.hpp.
Constructor & Destructor Documentation
template<class View0 , class View1 >
| Gecode::Set::Rel::CharacteristicSets::CharacteristicSets | ( | Region & | re, | |
| View0 | x, | |||
| View1 | y | |||
| ) | [inline] |
Member Function Documentation
| bool Gecode::Set::Rel::CharacteristicSets::get | ( | unsigned int | i | ) | const [inline, protected] |
| void Gecode::Set::Rel::CharacteristicSets::set | ( | unsigned int | i, | |
| bool | j | |||
| ) | [inline, protected] |
| bool Gecode::Set::Rel::CharacteristicSets::xmin | ( | unsigned int | i | ) | const [inline] |
| bool Gecode::Set::Rel::CharacteristicSets::xmax | ( | unsigned int | i | ) | const [inline] |
| bool Gecode::Set::Rel::CharacteristicSets::ymin | ( | unsigned int | i | ) | const [inline] |
| bool Gecode::Set::Rel::CharacteristicSets::ymax | ( | unsigned int | i | ) | const [inline] |
| void Gecode::Set::Rel::CharacteristicSets::xmin | ( | unsigned int | i, | |
| bool | j | |||
| ) | [inline] |
| void Gecode::Set::Rel::CharacteristicSets::xmax | ( | unsigned int | i, | |
| bool | j | |||
| ) | [inline] |
| void Gecode::Set::Rel::CharacteristicSets::ymin | ( | unsigned int | i, | |
| bool | j | |||
| ) | [inline] |
| void Gecode::Set::Rel::CharacteristicSets::ymax | ( | unsigned int | i, | |
| bool | j | |||
| ) | [inline] |
| ModEvent Gecode::Set::Rel::CharacteristicSets::xlq | ( | unsigned int | i, | |
| bool | j | |||
| ) | [inline] |
| ModEvent Gecode::Set::Rel::CharacteristicSets::xgq | ( | unsigned int | i, | |
| bool | j | |||
| ) | [inline] |
| ModEvent Gecode::Set::Rel::CharacteristicSets::ylq | ( | unsigned int | i, | |
| bool | j | |||
| ) | [inline] |
| ModEvent Gecode::Set::Rel::CharacteristicSets::ygq | ( | unsigned int | i, | |
| bool | j | |||
| ) | [inline] |
| unsigned int Gecode::Set::Rel::CharacteristicSets::size | ( | void | ) | const [inline] |
template<class View0 , class View1 >
| ExecStatus Gecode::Set::Rel::CharacteristicSets::prune | ( | Space & | home, | |
| View0 | x, | |||
| View1 | y | |||
| ) | [inline] |
Member Data Documentation
unsigned int Gecode::Set::Rel::CharacteristicSets::xsize [protected] |
int* Gecode::Set::Rel::CharacteristicSets::ub [protected] |
bool Gecode::Set::Rel::CharacteristicSets::xlm [protected] |
bool Gecode::Set::Rel::CharacteristicSets::xum [protected] |
bool Gecode::Set::Rel::CharacteristicSets::ylm [protected] |
bool Gecode::Set::Rel::CharacteristicSets::yum [protected] |
The documentation for this class was generated from the following file:
- gecode/set/rel/lq.hpp


Decent.....
To start things off I'm very experienced in many different drugs. I've taken MDMA, (more times than I can count) Mushrooms several times, LSD about 50 times, smoked chronic regularly, and have done a few random research chems that I'm not gunna list here.
I ingested the chemical at 11:20 and although the taste is bearable it reminds me a lot of MDMA which I cant stand. I have been drinking vodka and gatorade for about 2 hours now, so I've probably had a total of about 4 shots. I'm not buzzed at all though, I have an extremely high tolerance to alcohol, and I'm not especially proud of it.
Its now 11:30 and I'm starting to come up slowly. Its amazing how fast the body metabolizes this chemical. Normally when I take tryps it takes almost an hour to feel anything. I'm listening to Slightly Stoopid (great band btw) and its sounding better than it normally does. I have a little bit more energy than I normally would. The 5-meo-Dalt has almost sobered me up actually, I think I'm going to take a few more pulls off my nice drink :)
T + 1:00 - Those few pulls turned into a few more and I decided to smoke some jwh-018. I'm flyin high now. I think I over did it with the jwh-018. I'm gettin a little paranoid but nothing I cant handle, I've been here before so many times. I think I'm going to watch Dazed and Confused. Yeah, that sounds like a good idea.
T + 1:30 - Its just like Shulgin said in his book. There are no oevs to speak of but when I close my eyes its like a whole different world. Its nice but I really dont have a desire to close my eyes cause I'm so into this movie. Maybe its best to do this in a dark room with some music and some good friends.
T + 2:30 - I'm completely back down, I'm still drunk, however the 5meo-dalt seems to be gone. Its nice to have a chem that doesnt last for 12+ hours. I think ill try this a few more times but its not really what I was looking for. If you like
Sorry about all the spelling and grammatical errors. Its hard to type when you're under the influence.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


{% if not distributable %}
There are no {{ current_app }}s available for distribution.
When the development stage of a {{current_app}} is finished, an
administrator can finalize it and make it available for distribution.
{% else %}
Click for details.


Welcome to the future of Bloomington, Indiana, the home of Indiana University. With help from you, we are designing the country’s first “Lifetime Community District” smack in the middle of a vibrant and beautiful small city.
This anonymous survey/game will help us better understand the future needs of potential and current residents. Please only respond if you are over the age of 18. We'll ask you to choose what type of community, home, and amenities are most important to you.


Let's get you logged in to RSVP for this event


Locations in TREC Dataset
Measurements in TREC Dataset
Sweet Ontology Mappings in TREC
Metadata Quality Score in TREC
Solr Schema
FFMPEG Extractions
Links for Metadata Quality Scores Based on MIME Types
atom+xml
dif+xml
google-earth
PDF
rdf+xml
rss+xml
x-executable
xhtml"+xml
x-msdownload
x-sh
zip
audio_basic
audio_mp4
audio_mpeg
audio_x-wav
image_gif
image_tiff
vnd.adobe.photoshop
vnd.microsoft.icon
message_rfc822
text_x-vcard
video_mp4
video_x-ms-wmv
image_jpeg
text_plain


The status of the group of RPCs permissions.
Every RPC in the group is currently allowed.
SDLPermissionGroupStatusAllowed
case allowed = 0
Every RPC in the group is currently disallowed.
SDLPermissionGroupStatusDisallowed
case disallowed = 1
Some RPCs in the group are allowed and some disallowed.
SDLPermissionGroupStatusMixed
case mixed = 2
The current status of the group is unknown.
SDLPermissionGroupStatusUnknown
case unknown = 3


Tasks remaining dude:
{{ getTotalTasks() }}
{{ item.data.description }}
Add
A demo cloned and adapted from
Scotch
.
Read the original
tutorial
.


Court date rescheduled for Patriots’ Chung on drug charge
LACONIA, N.H. (AP) - New England Patriots safety Patrick Chung is not expected to appear in court on a cocaine possession charge until after the current regular National Football League season ends.
A grand jury in New Hampshire indicted the 32-year-old Chung in August. A prosecutor said members of the Meredith, New Hampshire, police department were called to his residence in June and obtained evidence leading to the felony drug charge. He’s pleaded not guilty.
Court paperwork says an appearance scheduled for this month was rescheduled for Jan. 3, 2020, to allow more time for both sides to exchange information relevant to a possible resolution of the case. A trial date was scheduled for March.
Chung has been a major contributor on defense to three of the Patriots’ six Super Bowl championships.
Sign up for Daily Newsletters
Copyright © 2019 The Washington Times, LLC.
Please read our comment policy before commenting.


 They will be killed by their enemies' swords or from famines or from diseases. But those who surrender to the Babylonian army will remain alive. They will escape; they will not be killed.
3 Yahweh also says that the army of the king of Babylon will certainly capture this city."
4 So those officials went to the king and said, "This man Jeremiah should be executed! Because of what he is saying, he is discouraging our soldiers who remain in the city. He is also discouraging the people. He is not saying things that will help us; he is saying things that will defeat us."
5 King Zedekiah said, "All right, do to him what you want to; I do not have the power to stop you."
6 So those officials took Jeremiah from his cell and lowered him by ropes into a cistern in the courtyard. The cistern belonged to Malkijah, who was a son of the king. There was no water in the ciestern, but there was a lot of mud, so he sank down deep into the mud.
7 But Ebed Melech, a palace official from Ethiopia, heard someone say that Jeremiah was in the well. At that time the king was deciding people's cases at the Benjamin Gate.
8 Ebed Melech went out of the palace and said to the king,
9 "Your majesty, those men have done a very evil thing. They have put the prophet Jeremiah in a well. Almost all the food in the city is gone, so no one will be able to bring him any food, and as a result he will die from hunger!"
10 So the king told Ebed Melech, "Take thirty of my men with you, and pull Jeremiah out of the well, in order that he does not die!"
11 So Ebed Melech took charge of those thirty men; they went into a room in the palace below the room where people had stored things. There they found some old rags and discarded clothing. They took those things and went to the well. They fastened them to a rope and lowered the rope to me.
12 Then Ebed Melech called down to me, "Put these rags underneath your armpits, to protect you from being injured by the ropes!" So Jeremiah did that.
13 Then they pulled him out of the well. So he stayed in the courtyard where the palace guards were.
14 One day King Zedekiah summoned Jeremiah, and he was brought to the king, who was waiting for him at the entrance of the temple. He said to Jeremiah, "I want to ask you something. I want you to answer me truthfully, and to not conceal anything."
15 Jeremiah replied, "If I tell you the truth, you will command that I be executed. And if I give you good advice, you will not pay attention to what I say."
16 But King Zedekiah secretly promised him, "Tell me the truth!
17 So then Jeremiah said to Zedekiah, "This is what Yahweh, Commander of the angel armies, the God whom Israel worships, says: 'If you surrender to the officers of the king of Babylon, you and your family will be spared, and this city will not be burned.
18 But if you refuse to surrender to them, you will not escape. And the army from Babylonia will capture this city and completely burn it.' "
19 The king replied, "But I am afraid to surrender to the soldiers from Babylon, because their officers may put me into the hands of the people of Judah who have already joined the soldiers from Babylonia, and those people from Judah will mistreat me."
 Things will go well for you, and you will remain alive.
21 But if you refuse to surrender, this is what Yahweh has revealed to me:
22 All the women who remain in your palace will be brought out and given to the officers of the king of Babylon. Then those women will say to you:
'You had friends whom you thought you could trust,
but they have deceived you and caused you to make a wrong decision.
Now it is as though you are stuck in mud,
and your friends have abandoned you.'
23 All of your wives and children in the city will be led out to the soldiers from Babylonia, and you also will not escape.

27 And that is what happened. The king's officials came to Jeremiah and asked why the king had summoned him. But he told them what the king told him to tell them. So they did not ask Jeremiah any more questions, because no one had heard what the king and Jeremiah had said to each other.
28 So Jeremiah remained being guarded in the courtyard of the palace, until the day that the army of Babylonia captured Jerusalem.


The 2 Argentine clubs dreaming of Suárez
by BeSoccerLuis Suárez continues at Barcelona despite his contract ending in 2020. Barca aren't in a rush and in Argentina there are 2 clubs that are dreaming of signing the Uruguayan: Boca Juniors and San Lorenzo.
Luis Suárez has scored 8 goals in 13 matches, so he has a good goals to games ratio. Barcelona have been looking for a new poacher to fill the striker role for months.
Many names have been touted and from what has been seen so far in his first few months, Griezmann doesn't have the characteristics to fill that role. Suárez's contract ends in 2020.
Featured links
- Ballon d'Or winner already been decided
- The latest football transfers news and rumours
- Possible 'Clasico' in the Spanish Supercup final
- Who has the most free-kicks goals: Messi or Cristiano?
Time is ticking and Barcelona aren't in a rush, but whether a renewal is coming or not, there are clubs that want Suarez if he wants to leave.
According to 'CNN Radio', San Lorenzo are after him through their president, whereas Boca Juniors are another team that could make Suárez their main man.


Brexit Party MEP pulls out in key marginal over fears of Corbyn Government
Former Southampton FC chairman Rupert Lowe has revealed he will not contest the Dudley North seat in the upcoming General Election.
Prominent Brexit Party MEP Rupert Lowe revealed he will not contest Dudley North as the 4pm deadline for General Election candidate nominations passed.
The former Southampton FC chairman’s decision comes on the eve of a visit to the town by party leader Nigel Farage, who had been expected to lend Mr Lowe his backing.
Mr Lowe was elected as one of three West Midlands Brexit Party MEPs earlier this year as the party won more than 500,000 votes across the region.
He tweeted: “I am putting country before party as it is highly conceivable my candidacy could allow Corbyn’s Momentum candidate to win.
“They are simply not fit to govern.”
In a post on his social media platforms coinciding with the 4pm deadline, Mr Lowe added: “I believe that if the Labour Party were to be elected in the forthcoming election Jeremy Corbyn and John McDonnell with Momentum behind them will devastate Britain and destroy all that decent people have achieved through their hard work and enterprise.
“They are simply not fit to govern and Momentum is the most sinister development in recent British politics, mirroring the beginnings of the Communist Party in the USSR.”
In a message addressed at local voters, Mr Lowe said: “I would like to say a big thank you to the people of Dudley North.
“Unlike many other areas of the Southern metropolitan elite, they still have a proud, traditional, cohesive local community which they should cherish and protect.”
Then-Labour MP Ian Austin triumphed over the Tories in Dudley North in the 2017 General Election by a margin of just 22 votes.


This is not set if not using Tune.
_session = get_session()
return _session.trial_name
def trial_id():
Trial id for the corresponding trial of this Trainable.
def trial_name():
_deprecation_warning(
call="trial_name", alternative_call="get_trial_name", soft=True)
return session.get_trial_name()
def trial_id():


The Protein and ML Algorithm you selected was: and
The molecular weight and protein length and predicted protein are shown below:
Click **here** to regenerate.
If you would like to rerun the wizard click here


Hi, I'm Edison
Say "Hey Edison" or click on the microphone to trigger me, then ask a question. I turn Green when I'm listening.
I can tell you the date and time, define most words and look on Wikipedia for information about a topic.
I can use Wikidata to find attributes of things like the "population of London".
When we chat, I remember your topics so you can ask follow up questions about a topic. Check the top menu for suggestion buttons.
You can also ask me to remember facts.
Crossword
Ask me for help if you need it to solve this crossword puzzle.


astropy.wcs History
astropy.wcs began life as pywcs. Earlier version numbers refer to
that package.
pywcs Version 1.11
- Updated to wcslib version 4.8, which gives much more detailed error
messages.
- Added functions get_pc() and get_cdelt(). These provide a way to
always get the canonical representation of the linear transformation
matrix, whether the header specified it in PC, CD or CROTA form.
- Long-running process will now release the Python GIL to better
support Python multithreading.
- The dimensions of the cd and
pc matrices were always returned as 2x2. They
now are sized according to naxis.
- Supports Python 3.x
- Builds on Microsoft Windows without severely patching wcslib.
- Lots of new unit tests
- pywcs will now run without pyfits, though the SIP and distortion
lookup table functionality is unavailable.
- Setting cunit will now verify that the values
are valid unit strings.
pywcs Version 1.10
- Adds a UnitConversion class, which gives access to wcslib’s unit
conversion functionality. Given two convertible unit strings, pywcs
can convert arrays of values from one to the other.
- Now uses wcslib 4.7
- Changes to some wcs values would not always calculate secondary values.
pywcs Version 1.9
Support binary image arrays and pixel list format WCS by presenting
a way to call wcslib’s wcsbth()
Updated underlying wcslib to version 4.5, which fixes the following:
- Fixed the interpretation of VELREF when translating
AIPS-convention spectral types. Such translation is now handled
by a new special- purpose function, spcaips(). The wcsprm
struct has been augmented with an entry for velref which is
filled by wcspih() and wcsbth(). Previously, selection by
VELREF of the radio or optical velocity convention for type VELO
was not properly handled.
Bugs
- The pc member is now available with a default
raw Wcsprm object.
- Make properties that return arrays read-only, since modifying a
(mutable) array could result in secondary values not being
recomputed based on those changes.
- float properties can now be set using int values
pywcs Version 1.3a1
Earlier versions of pywcs had two versions of every conversion method:
X(...) -- treats the origin of pixel coordinates at (0, 0)
X_fits(...) -- treats the origin of pixel coordinates at (1, 1)
From version 1.3 onwards, there is only one method for each
conversion, with an ‘origin’ argument:
- 0: places the origin at (0, 0), which is the C/Numpy convention.
- 1: places the origin at (1, 1), which is the Fortran/FITS
convention.


Michaella McCollum says book profits will help pay family debts
CONVICTED drugs mule Michaella McCollum says she plans to use profits from her new book to pay back her family after her imprisonment put them in "so much debt".
The 26-year-old from Co Tyrone was arrested in 2013 alongside Scottish woman Melissa Reid for attempting to smuggle £1.5 million worth of cocaine out of Peru.
Both were sentenced to six years and eight months in prison after pleading guilty to drug-trafficking offences, but in 2016 they were released and returned home.
McCollum appeared on ITV's Lorraine programme yesterday to talk about her new book on her time in Peruvian prison.
Presenter Lorraine Kelly questioned the Dungannon woman about financially benefitting from her criminal past.
She asked: "You know that people will say that you should not be profiting from crime, so if you do make any money from the book, what are you going to do with it?"
McCollum replied: "My family have got themselves into so much debt from this whole process.
"My intentions were never money, I was never driven to make money from this, but if I do make some money, my family would be my priority.
"I do have two small children as well and obviously if I do get a bit extra I'd like to help and give back in a way."
Subscribe to our most read headlines in the evening newsletter


--- layout: page title: "About" description: "Technology In Good Hand" header-img: "img/about-bg.jpg" ---
"We choose to go to the moon. We choose to go to the moon in this decade and do the other things, not because they are easy, but because they are hard, because that goal will serve to organize and measure the best of our energies and skills, because that challenge is one that we are willing to accept, one we are unwilling to postpone, and one which we intend to win, and the others, too."
-- J.F.K


Wangari Maathai
Nobel Peace Prize Winning Environmentalist
Wangari Maathai was an environmental and political activist and Nobel Laureate. She founded the Green Belt Movement in 1977 focussed on environmental conservation. In 2004 she became the first African woman to receive a Nobel Peace Prize for her contribution to sustainable development, democracy and peace.
If you have time, you should read more about this incredible human being on her Wikipedia entry.


Calibation & Validation¶
Regional Validation Targets
Local datasets can provide further validation targets to check VE model results. To better match these targets, relevant outputs should be checked against the target, and additional changes made as needed to inputs to improve alignment. Other key outputs of the model should be confirmed and/or checked for reasonableness, even if not specific regional target is available. The validation targets should be checked in the order listed, as changes to earlier items will affect outputs of items further down the list.
Population & Households: Confirm VE outputs match MPO total population inputs (bzone_household_pop_by_age.csv, bzone_group_quarters_pop_by_age.csv). Population by Location Types (Metropolitan, Town, Rural) should match official Oregon Population Resource Center forecasts (except for Portland Metro) for the Urban Growth Boundary (loctype=”metropolitan”) and overall County. VisionEval models create households from input population, with households assigned to certain districts based on the dwelling unit inputs. Inputs on dwelling units and household size can be adjusted (bzone_dwelling_units.csv, azone_hhsize_targets.csv).
Household Income: MPO Per Capita Income is an important driver of travel. Confirm outputs match inputs (azone_per_cap_inc.csv), developed as instructed using statewide income growth forecasts. Note that outputs are in baseyear dollars and may need to be converted to other year be make comparable (/defs/deflators.csv).
Density: Activity density is an important driver of travel. Outputs should be checked for reasonableness, and can be roughly compared to EPA’s 2010 [Smart Location Database](https://www.epa.gov/smartgrowth/smart-location-mapping#SLD) block group data,”D1D” density variable. Adjustments can be made to inputs for population, dwelling units, workers, as well as unprotected acres. Note that UGBs often contain areas that can’t be developed such as water bodies and large parks. ODOT has guidance for removing these undevelopable areas with GIS methods, as part of its instructions for building Oregon Place Types from TAZ data.
Vehicle Miles Travelled (VMT): HPMS provides MPO-level vehicle miles traveled for historic years. Note HPMS definition of VMT differs from that of VE. VE reports on all household travel regardless of where it occurs, and adds Commercial vehicle and Heavy Duty Truck and Bus travel on MPO roads. HPMS reports vehicular travel of all modes on roads within the MPO boundary. The best comparison is at the statewide level.
o See example from Albany MPO
- MPG: Overall fuel efficiency of light duty passenger and Commercial Service, as well as transit and heavy trucks are output by the model. The combined fuel efficiencies of registered passenger and commercial service can be obtained from DMV data and used to check for reasonableness in the base year.
> > See example from Albany MPO
Statewide Fuel consumed: Fuel sales are rarely tracked at the sub-state level, but may be available if there is a local gas tax. Even if available, the purchase location is not an accurate indicator of where fuel was used. So use caution when comparing.
Total Emissions: The overall GHG emissions is an important output. Of particular interest may be its use in GHG reduction targets, such as:
> > Statewide mandate of 75% Total GHG reduction 1990-2050
> > MPO mandate of Percent Total LDV GHG reduction 2005-20XX, beyond vehicles and fuels per OAR 660.044 (see SPG Tech Appendix p.110+ for calculation method and ODOT provided example calculation XLS)
> > Note: GHG emission rates reported in the Oregon MPO GHG Target Rule (OAR 660.044 grams per mile by year), reflect emissions prior to DEQ re-baselining of fuel carbon intensity. As such, emission rates using the provided “TargetRule fileset” differ from those in more current Oregon scenarios.
> > Local jurisdictions may have their own climate mandates and definitions
Sensitivity Testing: Sensitivity tests should be performed to evaluate the reasonableness (eg. correct direction and magnitude) of the VE-RSPM output estimates. More or less ambitious policy actions can be tested, and the change in various output metrics reviewed for reasonableness. These tests are a standard part of the Oregon MPO Strategic Assessment process, and running many scenarios is built into VisionEval.
Comparable communities: VE output results can be compared to prior VE scenario results in the same or other Oregon locations. Reports for all Oregon Strategic Assessment/Scenario Planning efforts can be found on this OSTI website. CAMPO & RVMPO Strategic Assessment reports include Reference Case (typically early report table) and sensitivity test results (typically in appendices) that provide good comparable estimates


UX/UI Designer, Front End Developer
Passionate UX/UI specialist with Front End development experience.
Worked on diverse projects: commercial web solutions, social startup and some of private works.
Efficiently work as a team member, as well as individually, have an experience of coordinating the work of contractors team located on different sites in one of the projects. In October, as an UX designer, I took part in Polish-German startup event, which took place in Szczecin, and our team was the winner.
My work mindset is achieving requested results at the best timing and quality, by using simple but efficient techniques.
A great UX design is a key to the successful application. Market competition is high and making customer to stay is extremely important.
UX is about taking care of people's experience, that's why gathering an information and talking to people is so important here.
UI design should be clear and intuitive. "Keep it simple" is a principle that works well here.
Everything has to be tested. It's better to touch something, in order to understand it better. That's where interactive prototypes are being used. To test or get feedback I create prototypes using Axure or inVision. If something doesn't meet the expectations - it has to be re-done, until perfect.
Responsive web design and Front End development. Focusing on writing clean, elegant and efficient code. Using HTML, CSS, CMS and touch of jQuery.
brain,
pen and paper
Axure,
inVision, Gomockingbird
Photoshop, Sketch, PremierePro,
3ds Max
HTML5, CSS3, Notepad++, bootstrap
JavaScript and PHP (Basic)


Roll 1d4
Choose an Ancestor:
1 - Strike
2 - Skill
3 - Cast
Strike
+1 attack rolls +2 damage
+1 attack rolls +6 damage
Skill
+1 skill checks +1 perceptioon checks
+2 skill checks +2 perception checks
Cast
To damage and healing on all non-cantrip, non-duration spells:
+spell level
+spell level + 3
The curse bar goes here


class EditMarriageActivity : AppCompatActivity
Activity to edit a Marriage. |
|
class MarriageAdapter : Adapter<ViewHolder>
A RecyclerView adapter for displaying marriages in a standard list layout. |
|
class ViewMarriageActivity : AppCompatActivity
Activity for displaying the details of a marriage. |


This section is not scored but will provide background to the project.
Each question has been assessed by several independent assessors.They have given a score and feedback for each.


Constructs a TcStringType
to represent a STRING
or WSTRING
Type in the Target PLC
The TcContext
, to which this Type belongs
The information, from which the TcType
is build
If enabled, will produce debug information
The ADST Type ID
The TcContext
, which this TcType
is part of
If a default value is present, the default byte buffer of that value
If a default value is present, the default byte buffer of that value
Default value for a STRING
or WSTRING
if it is not explicitly specified
Flag, if this TcType
is ignored during Symbol Building
Flag, if this TcType
is ignored during Symbol Building
The maximum length of a string, which can be stored in this Type
The maximum length of a string, which can be stored in this Type
The Target PLC Type name
The memory offset, relative to its parent, if the TcType
is a child
The memory offset, relative to its parent, if the TcType
is a child
Alias to use, in place of the default 'changed' event, when
a TcSymbol
of this type is constructed
Alias to use, in place of the default 'changed' event, when
a TcSymbol
of this type is constructed
Alias to use, in place of the default 'cleared' event, when
a TcSymbol
of this type is constructed
Alias to use, in place of the default 'cleared' event, when
a TcSymbol
of this type is constructed
Alias to use, in place of the default 'get' event, when
a TcSymbol
of this type is constructed
Alias to use, in place of the default 'get' event, when
a TcSymbol
of this type is constructed
Alias to use, in place of the default 'set' event, when
a TcSymbol
of this type is constructed
Alias to use, in place of the default 'set' event, when
a TcSymbol
of this type is constructed
Flag, if this TcType
is ReadOnly
Flag, if this TcType
is ReadOnly
Size of the Target PLC Type
Size of the Target PLC Type
Internal function for applying mutations to the created clone. Used for code reduction
the TcType, which can be potentially mutated
The mutator which can be applied to the TcType
TcType
or undefined
if cloning failedInternal function, which analyses attribute data from the Type ADS Data and
adjusts aspects of this TcType
Mutations supported :
name of the Attribute
value of the Attribute
Creates a clone with an optional mutation of this TcType
Optional mutator, which can be applied to the clone
TcType
or undefined
if cloning failedExtends the current TcType
with the provided TcTypeInfo
. The default extension
can either create a mutation of the current TcType
or transform the TcType
into
an array
Data with which to extends the TcType
TcType
or undefined
if extension failedCreates an instance of Type STRING
or WSTRING
PLC Symbol, based on this TcType
Path of the created TcSymbol
Parent of the created TcSymbol
Memory location of created TcSymbol
in the Target PLC
If enabled, will produce debug information
TcSymbol
instance of a Symbol of type STRING
or WSTRING
Clones this TcType
and mutates it, with additional attributes from
the mutator
Will use the Attributes and Offset to create a mutation of this TcType
Creates an instance of TcStringType
with default values transformed to
raw data
The TcContext
, to which this Type belongs
The information, from which the TcType
is build
If enabled, will produce debug information
TcStringType
if it is not ignoredGenerated using TypeDoc
Class representing a
STRING
orWSTRING
Type in the Target PLC.


From the Death Certificate
for David C. Morris:
PERRY COUNTY HEALTH
DEPARTMENT Cannelton, Indiana, RECORD OF DEATH
This is to Certify, that our records show David C. Morris died January 21, 1916, at Leopld [sic?], Indiana. Age at death - 92 years. Sex - male. Color - white. Widowed. Primary cause of death given was LaGrippe. Signed William Lomax, Bristow, Indiana (physician or coroner). Place of burial Rhodes Cemetery, Bristow, RR. Date of burial - no date given. Funeral director - none. Signed Robert G. Gilbert, M.D. (Health-Officer) Cannelton, Indiana May 28, 1975 Note: Recorded locally in Book 988 Page 77 Certificate Number 6
On the back the
health department had typed: Date of
birth April 26, 1823, widowed, Wife's name was Margaret Ann, name of father was
Henry Gusler, father was born in Georgetown, D.C.; mother's name was Mary
Kinkade. He was born in Ohio."
Provided by Betty Latta Kitchen
Click here for the Short-Cut Table of Contents


Wubba Lubba Dub-Dub!!!
You guessed it right! Rick is saved!
Let's get schwifty!
Rick is in danger! Guess the correct word to save him. Hint: It's a parasite!
Hangman
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
hello
hints


MDE is an open-source, cross-platform MP4 metadata editor (metadata editor, MDE, get it?). Similar to programs like
Subler or
Wondershare's Video Convertor
but available across all platforms and completely open-source! I am building it with
ElectronJS,
Bootstrap, and
utilizing
AtomicParsley It is currently still in development, build 0.5.0 Banana, but should be in working condition if
you want to check out the github
repo. Read more about the development on my blog!


Want to get in touch with us? That's great! Give us a call or send us an email and we will get back to you as soon as possible!
0123456789
travelguide@goexplorar.com


| Possible Runtime Folders |
|
|
| /usr/lib |
|
|
|
No libvulkan.so files found |
|
| /usr/lib/x86_64-linux-gnu |
No such folder |
|
| /usr/lib64 |
|
|
| [0] |
/usr/lib64/libvulkan.so.1 |
libvulkan.so.1.0.51 |
| /usr/local/lib |
|
|
|
No libvulkan.so files found |
|
| /usr/local/lib64 |
|
|
|
No libvulkan.so files found |
|
| /home/tim/src/GameEngineFromScratch/External/VulkanSDK/<IP_ADDRESS>/x86_64/lib |
|
|
| [0] |
/home/tim/src/GameEngineFromScratch/External/VulkanSDK/<IP_ADDRESS>/x86_64/lib/libvulkan.so.1 |
libvulkan.so.1.0.57 |
| Runtime Folder Used By via |
/home/tim/src/GameEngineFromScratch/External/VulkanSDK/<IP_ADDRESS>/x86_64/lib |
|
| [0] |
/home/tim/src/GameEngineFromScratch/External/VulkanSDK/<IP_ADDRESS>/x86_64/lib/libvulkan.so.1 |
libvulkan.so.1.0.57 |
| Runtime Folder Used By via |
Failed to find Vulkan SO used for via |
|
| VULKAN_SDK |
/home/tim/src/GameEngineFromScratch/External/VulkanSDK/<IP_ADDRESS>/x86_64/etc/explicit_layer.d |
|
| [0] |
VkLayer_screenshot.json |
|
|
Name |
VK_LAYER_LUNARG_screenshot |
|
Description |
LunarG image capture layer |
|
API Version |
1.0.57 |
|
JSON File Version |
1.0.0 |
|
Library Path |
libVkLayer_screenshot.so |
| [1] |
VkLayer_unique_objects.json |
|
|
Name |
VK_LAYER_GOOGLE_unique_objects |
|
Description |
Google Validation Layer |
|
API Version |
1.0.57 |
|
JSON File Version |
1.1.0 |
|
Library Path |
libVkLayer_unique_objects.so |
| [2] |
VkLayer_object_tracker.json |
|
|
Name |
VK_LAYER_LUNARG_object_tracker |
|
Description |
LunarG Validation Layer |
|
API Version |
1.0.57 |
|
JSON File Version |
1.1.0 |
|
Library Path |
libVkLayer_object_tracker.so |
|
Device Extensions |
1 |
|
[0] |
VK_EXT_debug_marker |
|
Instance Extensions |
1 |
|
[0] |
VK_EXT_debug_report |
| [3] |
VkLayer_core_validation.json |
|
|
Name |
VK_LAYER_LUNARG_core_validation |
|
Description |
LunarG Validation Layer |
|
API Version |
1.0.57 |
|
JSON File Version |
1.1.0 |
|
Library Path |
libVkLayer_core_validation.so |
|
Device Extensions |
1 |
|
[0] |
VK_EXT_debug_marker |
|
Instance Extensions |
1 |
|
[0] |
VK_EXT_debug_report |
| [4] |
VkLayer_api_dump.json |
|
|
Name |
VK_LAYER_LUNARG_api_dump |
|
Description |
LunarG debug layer |
|
API Version |
1.0.57 |
|
JSON File Version |
1.0.0 |
|
Library Path |
libVkLayer_api_dump.so |
| [5] |
VkLayer_threading.json |
|
|
Name |
VK_LAYER_GOOGLE_threading |
|
Description |
Google Validation Layer |
|
API Version |
1.0.57 |
|
JSON File Version |
1.1.0 |
|
Library Path |
libVkLayer_threading.so |
|
Instance Extensions |
1 |
|
[0] |
VK_EXT_debug_report |
| [6] |
VkLayer_monitor.json |
|
|
Name |
VK_LAYER_LUNARG_monitor |
|
Description |
Execution Monitoring Layer |
|
API Version |
1.0.57 |
|
JSON File Version |
1.0.0 |
|
Library Path |
libVkLayer_monitor.so |
| [7] |
VkLayer_standard_validation.json |
|
|
Name |
VK_LAYER_LUNARG_standard_validation |
|
Description |
LunarG Standard Validation |
|
API Version |
1.0.57 |
|
JSON File Version |
1.1.1 |
|
Component Layers |
5 |
|
|
VK_LAYER_GOOGLE_threading |
|
|
VK_LAYER_LUNARG_parameter_validation |
|
|
VK_LAYER_LUNARG_object_tracker |
|
|
VK_LAYER_LUNARG_core_validation |
|
|
VK_LAYER_GOOGLE_unique_objects |
| [8] |
VkLayer_vktrace_layer.json |
|
|
Name |
VK_LAYER_LUNARG_vktrace |
|
Description |
Vktrace tracing library |
|
API Version |
1.0.57 |
|
JSON File Version |
1.0.0 |
|
Library Path |
libVkLayer_vktrace_layer.so |
| [9] |
VkLayer_parameter_validation.json |
|
|
Name |
VK_LAYER_LUNARG_parameter_validation |
|
Description |
LunarG Validation Layer |
|
API Version |
1.0.57 |
|
JSON File Version |
1.1.0 |
|
Library Path |
libVkLayer_parameter_validation.so |
|
Device Extensions |
1 |
|
[0] |
VK_EXT_debug_marker |
|
Instance Extensions |
1 |
|
[0] |
VK_EXT_debug_report |
| [10] |
VkLayer_device_simulation.json |
|
|
Name |
VK_LAYER_LUNARG_device_simulation |
|
Description |
LunarG device simulation layer |
|
API Version |
1.0.57 |
|
JSON File Version |
1.1.0 |
|
Library Path |
libVkLayer_device_simulation.so |
| Standard Paths |
|
|
| /etc/vulkan |
/etc/vulkan/explicit_layer.d |
|
| /etc/vulkan |
/etc/vulkan/explicit_layer.d |
No JSON files found |
| /usr/share/vulkan |
/usr/share/vulkan/explicit_layer.d |
|
| /usr/share/vulkan |
/usr/share/vulkan/explicit_layer.d |
No JSON files found |
| /usr/local/etc/vulkan |
/usr/local/etc/vulkan/explicit_layer.d |
No such folder |
| /usr/local/share/vulkan |
/usr/local/share/vulkan/explicit_layer.d |
No such folder |
| $HOME/.local/share/vulkan/explicit_layer.d |
/home/tim/.local/share/vulkan/explicit_layer.d |
No such folder |
| VK_LAYER_PATH |
|
|
| Path 0 |
/home/tim/src/GameEngineFromScratch/External/VulkanSDK/<IP_ADDRESS>/x86_64/etc/explicit_layer.d |
|
| [0] |
VkLayer_screenshot.json |
|
|
Name |
VK_LAYER_LUNARG_screenshot |
|
Description |
LunarG image capture layer |
|
API Version |
1.0.57 |
|
JSON File Version |
1.0.0 |
|
Library Path |
libVkLayer_screenshot.so |
| [1] |
VkLayer_unique_objects.json |
|
|
Name |
VK_LAYER_GOOGLE_unique_objects |
|
Description |
Google Validation Layer |
|
API Version |
1.0.57 |
|
JSON File Version |
1.1.0 |
|
Library Path |
libVkLayer_unique_objects.so |
| [2] |
VkLayer_object_tracker.json |
|
|
Name |
VK_LAYER_LUNARG_object_tracker |
|
Description |
LunarG Validation Layer |
|
API Version |
1.0.57 |
|
JSON File Version |
1.1.0 |
|
Library Path |
libVkLayer_object_tracker.so |
|
Device Extensions |
1 |
|
[0] |
VK_EXT_debug_marker |
|
Instance Extensions |
1 |
|
[0] |
VK_EXT_debug_report |
| [3] |
VkLayer_core_validation.json |
|
|
Name |
VK_LAYER_LUNARG_core_validation |
|
Description |
LunarG Validation Layer |
|
API Version |
1.0.57 |
|
JSON File Version |
1.1.0 |
|
Library Path |
libVkLayer_core_validation.so |
|
Device Extensions |
1 |
|
[0] |
VK_EXT_debug_marker |
|
Instance Extensions |
1 |
|
[0] |
VK_EXT_debug_report |
| [4] |
VkLayer_api_dump.json |
|
|
Name |
VK_LAYER_LUNARG_api_dump |
|
Description |
LunarG debug layer |
|
API Version |
1.0.57 |
|
JSON File Version |
1.0.0 |
|
Library Path |
libVkLayer_api_dump.so |
| [5] |
VkLayer_threading.json |
|
|
Name |
VK_LAYER_GOOGLE_threading |
|
Description |
Google Validation Layer |
|
API Version |
1.0.57 |
|
JSON File Version |
1.1.0 |
|
Library Path |
libVkLayer_threading.so |
|
Instance Extensions |
1 |
|
[0] |
VK_EXT_debug_report |
| [6] |
VkLayer_monitor.json |
|
|
Name |
VK_LAYER_LUNARG_monitor |
|
Description |
Execution Monitoring Layer |
|
API Version |
1.0.57 |
|
JSON File Version |
1.0.0 |
|
Library Path |
libVkLayer_monitor.so |
| [7] |
VkLayer_standard_validation.json |
|
|
Name |
VK_LAYER_LUNARG_standard_validation |
|
Description |
LunarG Standard Validation |
|
API Version |
1.0.57 |
|
JSON File Version |
1.1.1 |
|
Component Layers |
5 |
|
|
VK_LAYER_GOOGLE_threading |
|
|
VK_LAYER_LUNARG_parameter_validation |
|
|
VK_LAYER_LUNARG_object_tracker |
|
|
VK_LAYER_LUNARG_core_validation |
|
|
VK_LAYER_GOOGLE_unique_objects |
| [8] |
VkLayer_vktrace_layer.json |
|
|
Name |
VK_LAYER_LUNARG_vktrace |
|
Description |
Vktrace tracing library |
|
API Version |
1.0.57 |
|
JSON File Version |
1.0.0 |
|
Library Path |
libVkLayer_vktrace_layer.so |
| [9] |
VkLayer_parameter_validation.json |
|
|
Name |
VK_LAYER_LUNARG_parameter_validation |
|
Description |
LunarG Validation Layer |
|
API Version |
1.0.57 |
|
JSON File Version |
1.1.0 |
|
Library Path |
libVkLayer_parameter_validation.so |
|
Device Extensions |
1 |
|
[0] |
VK_EXT_debug_marker |
|
Instance Extensions |
1 |
|
[0] |
VK_EXT_debug_report |
| [10] |
VkLayer_device_simulation.json |
|
|
Name |
VK_LAYER_LUNARG_device_simulation |
|
Description |
LunarG device simulation layer |
|
API Version |
1.0.57 |
|
JSON File Version |
1.1.0 |
|
Library Path |
libVkLayer_device_simulation.so |
| vkEnumeratePhysicalDevices |
1 |
|
|
| [0] |
0x0x25c3da0 |
|
|
|
Vendor |
AMD [0x1002] |
|
|
Device Name |
Unknown AMD GPU |
|
|
Device ID |
0x692f |
|
|
Device Type |
Discrete GPU |
|
|
Driver Version |
1.5.0 |
|
|
API Version |
1.0.39 |
|
|
Queue Families |
3 |
|
|
[0] |
Queue Count |
1 |
|
|
Queue Flags |
GRAPHICS | COMPUTE | TRANSFER | SPARSE_BINDING |
|
|
Timestamp Valid Bits |
0x40 |
|
|
Image Granularity |
|
|
|
Width |
0x1 |
|
|
Height |
0x1 |
|
|
Depth |
0x1 |
|
[1] |
Queue Count |
8 |
|
|
Queue Flags |
COMPUTE | TRANSFER | SPARSE_BINDING |
|
|
Timestamp Valid Bits |
0x40 |
|
|
Image Granularity |
|
|
|
Width |
0x1 |
|
|
Height |
0x1 |
|
|
Depth |
0x1 |
|
[2] |
Queue Count |
2 |
|
|
Queue Flags |
TRANSFER | SPARSE_BINDING |
|
|
Timestamp Valid Bits |
0x40 |
|
|
Image Granularity |
|
|
|
Width |
0x8 |
|
|
Height |
0x8 |
|
|
Depth |
0x8 |
|
Memory Heaps |
3 |
|
|
[0] |
Property Flags |
DEVICE_LOCAL |
|
|
Heap Size |
3858759680 |
|
[1] |
Property Flags |
DEVICE_LOCAL |
|
|
Heap Size |
268435456 |
|
[2] |
Property Flags |
--NONE-- |
|
|
Heap Size |
4127195136 |
|
Memory Types |
4 |
|
|
[0] |
Property Flags |
DEVICE_LOCAL |
|
|
Heap Index |
0 |
|
[1] |
Property Flags |
HOST_VISIBLE | HOST_COHERENT |
|
|
Heap Index |
2 |
|
[2] |
Property Flags |
DEVICE_LOCAL | HOST_VISIBLE | HOST_COHERENT |
|
|
Heap Index |
1 |
|
[3] |
Property Flags |
HOST_VISIBLE | HOST_COHERENT | HOST_CACHED |
|
|
Heap Index |
2 |
|
Device Extensions |
10 |
|
|
[0] |
VK_KHR_sampler_mirror_clamp_to_edge |
Spec Vers 1 |
|
[1] |
VK_KHR_swapchain |
Spec Vers 68 |
|
[2] |
VK_AMD_rasterization_order |
Spec Vers 1 |
|
[3] |
VK_AMD_shader_ballot |
Spec Vers 1 |
|
[4] |
VK_AMD_shader_trinary_minmax |
Spec Vers 1 |
|
[5] |
VK_AMD_shader_explicit_vertex_parameter |
Spec Vers 1 |
|
[6] |
VK_AMD_gcn_shader |
Spec Vers 1 |
|
[7] |
VK_AMD_draw_indirect_count |
Spec Vers 1 |
|
[8] |
VK_AMD_negative_viewport_height |
Spec Vers 1 |
|
[9] |
VK_AMD_gpu_shader_half_float |
Spec Vers 1 |


PEPUP TODAY BLOG
ZUMBA - ZUMBA THE FIVE LETTER MAGIC WORD!
Beto Perez forgot his tape of aerobics music for a class he was teaching. He went to his car, listened to music – consisting of non-traditional salsa and merengue music – and improvised a class using this non-traditional aerobics music. This is now shaped up as ZUMBA. Zumba, the hybrid Latin dance workout is exceptional thanks to the fact that it made fitness accessible to multitudes of people. Since it incorporates elements of Latin dance into a workout, it seems less intimidating than most workouts out there. Why is that, you ask? Well, for starters, it’s basically dance, and who doesn’t like to dance! Even people with seven left feet will find themselves moving to Zumba beats that are reminiscent of genres like Salsa, Cumbia, Reggaeton and Hip-Hop. Lifting those feet, punching those feet and shaking that booty are all essential components of a Zumba workout. Of course, the other great thing about Zumba is that it can be customized for different audiences and to suit different requirements. Aqua Zumba, as the name suggests, is done with the help of water. Zumba Step is a micro-version dedicated to lower-body training. Zumba Gold is a certified fitness programme for the elderly, while Zumba Sentao makes use of chairs to tone and strengthen the body. Zumba is just like Disneyland - there’s something for everyone. There you have it - energetic and customizable to your needs, Zumba is an amazingly fun way to inject fitness into your life. Plus, you get to learn some really cool moves. It’s one hell of a bargain, if we ever saw one. Try out ZUMBA with Pepup.Today!
Tapering for a Marathon
An artist works tirelessly on his painting and before he unveils the curtain on his finished canvas, he puts finishing touches to it. A ‘Taper’ is an athlete’s way of putting the finishing touch on his hard work while training for a Marathon. Studies indicate that an efficient taper may last between one and four weeks. The optimal duration does not depend on age, experience or event distance. It depends on each athlete's adaptation and recovery profile. Some athlete’s recover faster than others; some have long-lasting training adaptations, whereas some others detrain quickly. However the three weeks tapering plan seems to be the most commonly used plan among marathoners. The final three weeks are the most important in any marathon-training program. Hence an efficient taper is both a Science and an Art. The Science of Taper shows that levels of muscle glycogen, enzymes, antioxidants, and hormones ,all depleted by high mileage, return to optimal ranges during a taper. The muscle damage that occurs during sustained training is also repaired. Muscle and connective tissues repair and strengthen. In addition the immune function and muscle strength improve, which reduces the odds that an athlete will catch a cold or get injured just before the race. While it is true that rested muscles increase in strength and power output, many of the biggest gains occur in the circulatory system, where total blood volume and red blood cell counts increase. Tapered athletes sometimes note increases in running economy, while storing glycogen more readily. When it comes to tapering ’ less is really more’. The Art of Taper is to learn to chill and relax and back off from training.  It is an art to learn to modify your running, thinking, and eating in those three crucial weeks before you toe the line. Athletes are afraid to reduce their intensity and volume of training just before the big race, as they fear losing fitness and gaining weight. A long distance runner has to realize that in those last few weeks , it's the rest, more than the work, that makes you strong. And you don't lose fitness in three weeks of tapering. In fact, studies show that your aerobic capacity, the best gauge of fitness, doesn't change at all. Tapering begins immediately upon completing your last longest training run .Tapering means reducing the volume of your weekly training mileage by 20 to 30 % EACH WEEK, from your highest volume week, for three weeks. For example if your highest weekly mileage was 64 kms, you would cut your mileage by 12 kms and mileage in WEEK 1 of your taper would be 52 kms. In addition to cutting mileage keep your run intensity to your goal race pace and no faster. It is best to cut out on cross training during the taper period. You may however do upper body strength training in Week 1 of taper. Do not train lower body or cycle or spin in the three weeks of taper. Swimming can be done moderately for first two weeks of taper for relaxation and drop it completely in the last week. Yoga and Pilates can be done in the first two weeks of taper and stop in the last week. Keep stretching and doing core exercises throughout your taper. During the taper period , it is necessary to make adjustments in your nutrition too. Increase protein intake in the first week of taper as the same is needed to repair muscle. It is important to increase your complex carbohydrates intake and reduce fat intake during the entire taper period. Drink a lot of fluids during these three weeks and reduce caffeine and alcohol consumption as they are diuretics. A marginal weight gain during this period is normal and this will come handy during the Marathon. Wishing all the BOSCH Marathon participants a strong training run!
5 things you must know before running the Marathon
First of all, congratulations! Congratulations on being a tiny set of people who happily wake up at 6:00 am on a Sunday morning to train while most of planet earth is asleep and their bodies are working hard to recover from all the trash that was put into the system Saturday night. Perhaps it is the runner's high (a colloquial term used to describe the feeling of extreme euphoria experienced during running) which drives you to spring out of bed at the crack of dawn. Irrespective of where your motivation comes from, know that your decision to run the marathon is inspiring more people than you think. Thus, for you, some guidelines as you move forward in your training: 1. Pre and post workout meals A fruit 30-minutes pre-workout and a meal immediately post workout is imperative for improved workout performance and optimal muscle repair and recovery 2.Strengthen back, legs and weight-bearing joints (knee, hips, spine) Let me elucidate this pointer via a quick story: Clients after a few weeks of a good food routine are keen to take things to the next level i.e. commence workouts. They start running and within a week or so, complain of an aching back, an aching ankle, an aching knee etc. “Running isn't good for me” is the prompt conclusion they inevitably come to. It's not the running silly! It's the fact that your back, legs, knees, hips etc. aren't strong enough to take the impact of the run. Do you see where I am going with this story? Marathon training isn't merely confined to teaching yourself how to sprint and how to run long distances. In fact, exercises to strengthen your body parts are just as important too! Set aside one training day for these so that you don't sustain injuries 3.If you haven't done so already, invest in a good pair of shoes Yes, an investment; that's what it is. Purchase as per your arch and don't sport a brand new pair right before the run. Ensure you have already ran in said shoes and are comfortable with them. If you already own a decent pair of shoes, check the outsole (material in contact with the ground) and the midsole (shoe cushioning) for cracks and fissures. If you spot any, maybe it's time for a new pair 4. Hydrate and Sleep Muscles can cramp due to dehydration which is the last thing you want. So continually sip water through the day and ensure you're adequately hydrated at all times. Your muscles won't recover adequately unless you get your sleep. So here's your early to bed excuse. 5. Stop obsessing over completion time The fact that you're training is in itself a huge accomplishment even though it may or may not seem like it to you. On the D-day, enjoy the run as opposed to obsessing over how much time it takes to complete it. So that's it, a smile on your face and a spring in your step (literally)! Good luck!


I have been doing research on Erowid and other related sites for the past few months on alternative highs. I have recently come under suspicion of using drugs at my place of work and am now liable to be submitted to random drug tests. This makes my usual favorites (weed, cocaine, ecstasy, opium) not safe to consume, under threat of ruining my life. So, I decided to bone up on my plants, read some Castenada books and find the stuff that made the Indians get high.
After much deliberation, my friend and I decided to buy some Morning Glory seeds from a store. We got twenty packs, about $35, some Heavenly Blue, some Flying Saucer, and a couple of mixed packs. Each pack contained from 50-60 seeds in it so me and my buddy split the sacks 10 & 10 and we washed all of the seeds. We were becoming lazy in our preparation so we used some body wash to clean them that didn't thoroughly rinse out.
Down the old hatches they went, we each consumed between 500-600 seeds that tasted slightly soapy. Almost immediately we felt a kind of soreness in our jaws. We didn't crush the seeds, just chewed them and swallowed. Within 45 minutes to an hour we felt queasy, not to the point of vomiting but definitely uncomfortable. My friend ate a full meal and said that helped the queasy feeling. I, on the other hand, did not feel like I could eat and probably suffered more because of it. After about another hour or so the nausea was gone and all that was left was a feeling of melting. Walking became effortless and the ground had a spongy quality to it that made sinking into it a definite option.
The peak didn't arrive until 4 hours after ingestion! This was great because the high was not unpleasant or too intense to maintain. I mean to say it wasn't LSD intense, coming in waves of surreal tsunamis. Instead the seeds seemed to maintain a constant 'pressure' on us and not wean or drop until after the peak. The visuals were mostly melters for me, but my friend had dramatic, but pleasant, hallucinations that weren't as fragile as pscilocybin ones.
Along with the melting sensation came a sensation of rotation around some unseen axis, or a kind of stretching around a circle. It was comparable to the feeling of being dropped suddenly, but gently, from a high place, like on the first hill of a roller coaster.
It is impossible to explain all of the effects I and my friend felt. Along with the physical and visual effects was a great mental exploration, comparable to LSD but not as frantic. I acquired an ability on my trip to wrap my mind around things like on acid but not so rushed, or not as nervous as on mushrooms. All in all, a very relaxed trip, but still, it took a great deal of work to get through it.
My suggestion to those who wish to try MG seeds is to try to find a natural retailer of them. The store- bought seeds are expensive and they are covered with pesticides and things to make foolish people puke. If you do buy them from the store don't make the mistake I did and use a harsh 'sticky' soap, use a light detergent of some kind and RINSE THOROUGHLY. This was probably why we got nauseous - we still had soap on the seeds when we ate them. I just ordered a pound of Heavenly Blues from a retailer out in California. I estimate that a pound of seeds will probably facilitate 50 trips or more.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Before Change
s3_client = boto3.client("s3")
result = s3_client.list_objects_v2(Bucket=args.s3_bucket)
if result["IsTruncated"]:
print("Too many objects! Need to paginate.")
return 1
contents_by_key = dict()
old_object_keys = set()
After Change
if not result["IsTruncated"]:
break
continuation_kw = dict(
ContinuationToken=result["NextContinuationToken"]
)
// Collect objects to be copied. Make sure there is nothing unexpected.
objects_to_copy = dict()
for user, package, obj_hash in old_object_keys:


Snack Security is a program forked from Adam Geitgey's Facial Recognition API. Built to protect snacks, the program plays an alarm and captures an image when an unknown face is detected in the frame. After capturing multiple images with the same unknown face, the program recognizes the face as "Unnamed" rather than "Unknown".


preprocessing.utils package¶
Submodules¶
preprocessing.utils.connection module¶
connection scripts2 to a remote MySQL db server
-
preprocessing.utils.connection.
get_engine
(user, ip, db, use_password='yes', driver='pymysql')[source]¶ returns engine instance connected to a given database
Parameters: - user (str) – username
- ip (str) – ip adress of the sql server
- db (str) – name of the database
- use_password (str, {‘yes’, ‘no’}, default=’yes) – ‘yes’ to use a password to connect, if ‘yes’, the password will have to be entered in the terminal
- driver (str, default=’pymysql’) – name of the driver used for MySQL-Python connexion, depends on your installation @see http://docs.sqlalchemy.org/en/latest/dialects/mysql.html for details
Returns: Return type: sqlalchemy.Engine instance
-
preprocessing.utils.connection.
sql2df
(engine, table)[source]¶ Builds a DataFrame using a table from the database to which engine is connected
Parameters: - engine (sqlalchemy.Engine) – Engine instance connected to a remote or local sql database
- table (str) – name of the table you wish to retrieve
Returns: Return type: pandas.DataFrame
Examples
# >>>uri =<EMAIL_ADDRESS>preprocessing.utils.fold module¶
As data may come from different sources, it is best to retrieve all the bases into one single dataframe that would enables fetching the features very easily, as well as the dates at which the events/measures occured.
Doing so allows to retrieve the full timelines of the patients and therefore complete various tasks.
The objective of this module is to parse the databases available in order to have each one of them organized as
key1 | key2 | feature_name | value | date
-
class
preprocessing.utils.fold.
Folder
(key1, key2, features, date, n_jobs=1)[source]¶ Bases:
object
This object enables “unfolding” the features of a DataFrame, which means for a df that has 5 feature columns for instance, the unfolding would result in two feature columns: one is for the feature name and the other is the feature value.
All the attributes are column names to indicate how to unfold the dataframe
Parameters: - key1 (str) – indicator of the primary key indicator
- key2 (str, (optionnal?)) – secondary key
- features (list) – column names that contain the feature
- date (str) – name of the date column,
- n_jobs (int) – number of CPUs to use for computation. If -1, all the available cores are used
preprocessing.utils.outliers module¶
Scripts to remove the outliers and na values from the different tables
To be used for the values that are mistyped
-
class
preprocessing.utils.outliers.
OutlierRemover
(dic_path, inplace=True)[source]¶ Bases:
object
removes outliers and replaces them by value given in dic_path or by imputing the column mean value
Parameters: - dic_path (str) – path to the dictionary containing outliers information
- inplace (bool, default=True) – True to perform the transformation inplace False to do it on a copy of the dataframe
-
preprocessing.utils.outliers.
impute_col
(X, lbound, ubound, impute)[source]¶ imputes missing and mistyped values of one col of the dataframe
Parameters: X (iterable, array-like) – column to which we want to impute missing values
name of the column
- lbound : float
- lower bound for normal values
- ubound : float
- upper bound for normal values
- impute : float or None
- if float is given, replaces outlier by the given value if None, the mean value is returned
Returns: df.col_name except its wrong values are imputed according to strategy Return type: df.Series
-
preprocessing.utils.outliers.
impute_df
(df, dic_path, inplace)[source]¶ cleans the df from missing/mistyped values
Parameters: - df (pd.DataFrame)
- dic_path (str) – path containing name of the columns to clean and the upper/lower limits to consider point as outlier and optionnal third value is the imputing value
- inplace (bool) – if True, performs the transformation inline
Returns: Return type: pd.DataFrame
preprocessing.utils.unfold module¶
unfolds merges dataframes into a big feature matrix All the features are labeled with a date and two keys for identification
Better explainations and schemas can be found on the repo wiki
-
class
preprocessing.utils.unfold.
Unfolder
(key1, key2, feature, value, date, n_jobs=1)[source]¶ Bases:
sklearn.base.BaseEstimator
Takes a dataframe[key1, key2, feature, value, date] to build a matrix of the parameters grouped by [key1, key2, date]
This object is to be used after a timeframe of the feature has been build to group them into a feature matrix. The idea is to facilitate the data preparation for a sequential learning task.
Parameters: - key1 (str) – primary key
- key2 (str) – secondary key
- feature (str) – name of the feature
- value (float) – value of the feature feature
- date (datetime) – date at which feature was measured
- n_jobs (int) – number of CPUs to use for computation. If -1, all the available cores are used
-
add_columns
(feature_name)[source]¶ adds a column of a given feature
This auxiliary function is to ease the use of multiprocess.pool.Pool
Parameters: feature_name (str) – name of the feature we are adding to the dataframe Returns: contains a single column feature_name that contains values or NaN depending on the presence of the feature for each row Return type: pandas.DataFrame
-
preprocessing.utils.unfold.
transform_and_label
(df, key1, key2, date, feature, value, estimator, return_estimator=False, **kwargs)[source]¶ Takes dataframe as input, applies transformation on value column and returns df with a new columns of the transformed feature
The transformation returns a copy of the input dataframe
Only implements unsupervised transformation
Parameters: - df (pandas.DataFrame) – should contain only one unique value in its feature column
- feature (str) – features names column
- value (str) – features values column
- estimator (sklearn.BaseEstimator) – sklearn compatible transformer that implements .fit() and .fold() methods
- return_estimator (bool) – if true, returns the trained estimator
- **kwargs (additional keyword arguments for estimator object)
Returns: same as df with additional rows for the transformed feature
Return type: pandas.DataFrame