PERLVMS
Section: Perl Programmers Reference Guide (1)Updated: 2009-07-17
Index Return to Main Contents
NAME
perlvms - VMS-specific documentation for PerlDESCRIPTION
Gathered below are notes describing details of Perl 5's behavior on VMS. They are a supplement to the regular Perl 5 documentation, so we have focussed on the ways in which Perl 5 functions differently under VMS than it does under Unix, and on the interactions between Perl and the rest of the operating system. We haven't tried to duplicate complete descriptions of Perl features from the main Perl documentation, which can be found in the [.pod] subdirectory of the Perl distribution.We hope these notes will save you from confusion and lost sleep when writing Perl scripts on VMS. If you find we've missed something you think should appear here, please don't hesitate to drop a line to<EMAIL_ADDRESS>Installation
Directions for building and installing Perl 5 can be found in the file README.vms in the main source directory of the Perl distribution..Organization of Perl Images
Core Images
During the installation process, three Perl images are produced. Miniperl.Exe is an executable image which contains all of the basic functionality of Perl, but cannot take advantage of Perl extensions. It is used to generate several files needed to build the complete Perl and various extensions. Once you've finished installing Perl, you can delete this image.Most of the complete Perl resides in the shareable image PerlShr.Exe, which provides a core to which the Perl executable image and all Perl extensions are linked. You should place this image in Sys$Share, or define the logical name PerlShr to translate to the full file specification of this image. It should be world readable. (Remember that if a user has execute only access to PerlShr, VMS will treat it as if it were a privileged shareable image, and will therefore require all downstream shareable images to be INSTALLed, etc.)
Finally, Perl.Exe is an executable image containing the main entry point for Perl, as well as some initialization code. It should be placed in a public directory, and made world executable. In order to run Perl with command line arguments, you should define a foreign command to invoke this image.
Perl Extensions
Perl extensions are packages which provide both XS and Perl code to add new functionality to perl. (XS is a meta-language which simplifies writing C code which interacts with Perl, see perlxs for more details.) The Perl code for an extension is treated like any other library module - it's made available in your script through the appropriate "use" or "require" statement, and usually defines a Perl package containing the extension.The portion of the extension provided by the XS code may be connected to the rest of Perl in either of two ways. In the static configuration, the object code for the extension is linked directly into PerlShr.Exe, and is initialized whenever Perl is invoked. In the dynamic configuration, the extension's machine code is placed into a separate shareable image, which is mapped by Perl's DynaLoader when the extension is "use"d or "require"d in your script. This allows you to maintain the extension as a separate entity, at the cost of keeping track of the additional shareable image. Most extensions can be set up as either static or dynamic.
The source code for an extension usually resides in its own directory. At least three files are generally provided: Extshortname.xs (where Extshortname is the portion of the extension's name following the last "::"), containing the XS code, Extshortname.pm, the Perl library module for the extension, and Makefile.PL, a Perl script which uses the "MakeMaker" library modules supplied with Perl to generate a Descrip.MMS file for the extension.
Installing static extensions
Since static extensions are incorporated directly into PerlShr.Exe, you'll have to rebuild Perl to incorporate a new extension. You should edit the main Descrip.MMS or Makefile you use to build Perl, adding the extension's name to the "ext" macro, and the extension's object file to the "extobj" macro. You'll also need to build the extension's object file, either by adding dependencies to the main Descrip.MMS, or using a separate Descrip.MMS for the extension. Then, rebuild PerlShr.Exe to incorporate the new code.Finally, you'll need to copy the extension's Perl library module to the [.Extname] subdirectory under one of the directories in @INC, where Extname is the name of the extension, with all "::" replaced by "." (e.g. the library module for extension Foo::Bar would be copied to a [.Foo.Bar] subdirectory).
Installing dynamic extensions
In general, the distributed kit for a Perl extension includes a file named Makefile.PL, which is a Perl program which is used to create a Descrip.MMS file which can be used to build and install the files required by the extension. The kit should be unpacked into a directory tree not under the main Perl source directory, and the procedure for building the extension is simply
$ perl Makefile.PL ! Create Descrip.MMS $ mmk ! Build necessary files $ mmk test ! Run test code, if supplied $ mmk install ! Install into public Perl tree
N.B. The procedure by which extensions are built and tested creates several levels (at least 4) under the directory in which the extension's source files live. For this reason if you are running a version of VMS prior to V7.1 you shouldn't nest the source directory too deeply in your directory structure lest you exceed RMS' maximum of 8 levels of subdirectory in a filespec. (You can use rooted logical names to get another 8 levels of nesting, if you can't place the files near the top of the physical directory structure.)
VMS support for this process in the current release of Perl is sufficient to handle most extensions. However, it does not yet recognize extra libraries required to build shareable images which are part of an extension, so these must be added to the linker options file for the extension by hand. For instance, if the PGPLOT extension to Perl requires the PGPLOTSHR.EXE shareable image in order to properly link the Perl extension, then the line "PGPLOTSHR/Share" must be added to the linker options file PGPLOT.Opt produced during the build process for the Perl extension.
By default, the shareable image for an extension is placed in the [.lib.site_perl.autoArch.Extname] directory of the installed Perl directory tree (where Arch is VMS_VAX or VMS_AXP, and Extname is the name of the extension, with each "::" translated to "."). (See the MakeMaker documentation for more details on installation options for extensions.) However, it can be manually placed in any of several locations:
- *
- the [.Lib.Auto.Arch$PVersExtname] subdirectory of one of the directories in @INC (where PVers is the version of Perl you're using, as supplied in $], with '.' converted to '_'), or
- *
- one of the directories in @INC, or
- *
- a directory which the extensions Perl library module passes to the DynaLoader when asking it to map the shareable image, or
- *
- Sys$Share or Sys$Library.
If the shareable image isn't in any of these places, you'll need to define a logical name Extshortname, where Extshortname is the portion of the extension's name after the last "::", which translates to the full file specification of the shareable image.
File specifications
Syntax
We have tried to make Perl aware of both VMS-style and Unix-style file specifications wherever possible. You may use either style, or both, on the command line and in scripts, but you may not combine the two styles within a single file specification. VMS Perl interprets Unix pathnames in much the same way as the CRTL (e.g. the first component of an absolute path is read as the device name for the VMS file specification). There are a set of functions provided in the "VMS::Filespec" package for explicit interconversion between VMS and Unix syntax; its documentation provides more details.We've tried to minimize the dependence of Perl library modules on Unix syntax, but you may find that some of these, as well as some scripts written for Unix systems, will require that you use Unix syntax, since they will assume that '/' is the directory separator, etc. If you find instances of this in the Perl distribution itself, please let us know, so we can try to work around them.
Also when working on Perl programs on VMS, if you need a syntax in a specific operating system format, then you need either to check the appropriate DECC$ feature logical, or call a conversion routine to force it to that format.
The feature logical name DECC$FILENAME_UNIX_REPORT modifies traditional Perl behavior in the conversion of file specifications from UNIX to VMS format in order to follow the extended character handling rules now expected by the CRTL. Specifically, when this feature is in effect, the "./.../" in a UNIX path is now translated to "[.^.^.^.]" instead of the traditional VMS "[...]". To be compatible with what MakeMaker expects, if a VMS path cannot be translated to a UNIX path, it is passed through unchanged, so "unixify("[...]")" will return "[...]".
The handling of extended characters is largely complete in the VMS-specific C infrastructure of Perl, but more work is still needed to fully support extended syntax filenames in several core modules. In particular, at this writing PathTools has only partial support for directories containing some extended characters.
There are several ambiguous cases where a conversion routine cannot determine whether an input filename is in UNIX format or in VMS format, since now both VMS and UNIX file specifications may have characters in them that could be mistaken for syntax delimiters of the other type. So some pathnames simply cannot be used in a mode that allows either type of pathname to be present. Perl will tend to assume that an ambiguous filename is in UNIX format.
Allowing ``.'' as a version delimiter is simply incompatible with determining whether a pathname is in VMS format or in UNIX format with extended file syntax. There is no way to know whether ``perl-5.8.6'' is a UNIX ``perl-5.8.6'' or a VMS ``perl-5.8;6'' when passing it to unixify() or vmsify().
The DECC$FILENAME_UNIX_REPORT logical name controls how Perl interprets filenames to the extent that Perl uses the CRTL internally for many purposes, and attempts to follow CRTL conventions for reporting filenames. The DECC$FILENAME_UNIX_ONLY feature differs in that it expects all filenames passed to the C run-time to be already in UNIX format. This feature is not yet supported in Perl since Perl uses traditional OpenVMS file specifications internally and in the test harness, and it is not yet clear whether this mode will be useful or useable. The feature logical name DECC$POSIX_COMPLIANT_PATHNAMES is new with the RMS Symbolic Link SDK and included with OpenVMS v8.3, but is not yet supported in Perl.
Filename Case
Perl follows VMS defaults and override settings in preserving (or not preserving) filename case. Case is not preserved on ODS-2 formatted volumes on any architecture. On ODS-5 volumes, filenames may be case preserved depending on process and feature settings. Perl now honors DECC$EFS_CASE_PRESERVE and DECC$ARGV_PARSE_STYLE on those systems where the CRTL supports these features. When these features are not enabled or the CRTL does not support them, Perl follows the traditional CRTL behavior of downcasing command-line arguments and returning file specifications in lower case only.N. B. It is very easy to get tripped up using a mixture of other programs, external utilities, and Perl scripts that are in varying states of being able to handle case preservation. For example, a file created by an older version of an archive utility or a build utility such as MMK or MMS may generate a filename in all upper case even on an ODS-5 volume. If this filename is later retrieved by a Perl script or module in a case preserving environment, that upper case name may not match the mixed-case or lower-case expections of the Perl code. Your best bet is to follow an all-or-nothing approach to case preservation: either don't use it at all, or make sure your entire toolchain and application environment support and use it.
OpenVMS Alpha v7.3-1 and later and all version of OpenVMS I64 support case sensitivity as a process setting (see "SET PROCESS /CASE_LOOKUP=SENSITIVE"). Perl does not currently suppport case sensitivity on VMS, but it may in the future, so Perl programs should use the "File::Spec-"case_tolerant> method to determine the state, and not the $^O variable.
Symbolic Links
When built on an ODS-5 volume with symbolic links enabled, Perl by default supports symbolic links when the requisite support is available in the filesystem and CRTL (generally 64-bit OpenVMS v8.3 and later). There are a number of limitations and caveats to be aware of when working with symbolic links on VMS. Most notably, the target of a valid symbolic link must be expressed as a UNIX-style path and it must exist on a volume visible from your POSIX root (see the "SHOW ROOT" command in DCL help). For further details on symbolic link capabilities and requirements, see chapter 12 of the CRTL manual that ships with OpenVMS v8.3 or later.Wildcard expansion
File specifications containing wildcards are allowed both on the command line and within Perl globs (e.g. "<*.c>"). If the wildcard filespec uses VMS syntax, the resultant filespecs will follow VMS syntax; if a Unix-style filespec is passed in, Unix-style filespecs will be returned. Similar to the behavior of wildcard globbing for a Unix shell, one can escape command line wildcards with double quotation marks """ around a perl program command line argument. However, owing to the stripping of """ characters carried out by the C handling of argv you will need to escape a construct such as this one (in a directory containing the files PERL.C, PERL.EXE, PERL.H, and PERL.OBJ):
$ perl -e "print join(' ',@ARGV)" perl.* perl.c perl.exe perl.h perl.obj
in the following triple quoted manner:
$ perl -e "print join(' ',@ARGV)" """perl.*""" perl.*
In both the case of unquoted command line arguments or in calls to "glob()" VMS wildcard expansion is performed. (csh-style wildcard expansion is available if you use "File::Glob::glob".) If the wildcard filespec contains a device or directory specification, then the resultant filespecs will also contain a device and directory; otherwise, device and directory information are removed. VMS-style resultant filespecs will contain a full device and directory, while Unix-style resultant filespecs will contain only as much of a directory path as was present in the input filespec. For example, if your default directory is Perl_Root:[000000], the expansion of "[.t]*.*" will yield filespecs like ``perl_root:[t]base.dir'', while the expansion of "t/*/*" will yield filespecs like ``t/base.dir''. (This is done to match the behavior of glob expansion performed by Unix shells.)
Similarly, the resultant filespec will contain the file version only if one was present in the input filespec.
Pipes
Input and output pipes to Perl filehandles are supported; the ``file name'' is passed to lib$spawn() for asynchronous execution. You should be careful to close any pipes you have opened in a Perl script, lest you leave any ``orphaned'' subprocesses around when Perl exits.You may also use backticks to invoke a DCL subprocess, whose output is used as the return value of the expression. The string between the backticks is handled as if it were the argument to the "system" operator (see below). In this case, Perl will wait for the subprocess to complete before continuing.
The mailbox (MBX) that perl can create to communicate with a pipe defaults to a buffer size of 512. The default buffer size is adjustable via the logical name PERL_MBX_SIZE provided that the value falls between 128 and the SYSGEN parameter MAXBUF inclusive. For example, to double the MBX size from the default within a Perl program, use "$ENV{'PERL_MBX_SIZE'} = 1024;" and then open and use pipe constructs. An alternative would be to issue the command:
$ Define PERL_MBX_SIZE 1024
before running your wide record pipe program. A larger value may improve performance at the expense of the BYTLM UAF quota.
PERL5LIB and PERLLIB
The PERL5LIB and PERLLIB logical names work as documented in perl, except that the element separator is '|' instead of ':'. The directory specifications may use either VMS or Unix syntax.The Perl Forked Debugger
The Perl forked debugger places the debugger commands and output in a separate X-11 terminal window so that commands and output from multiple processes are not mixed together.Perl on VMS supports an emulation of the forked debugger when Perl is run on a VMS system that has X11 support installed.
To use the forked debugger, you need to have the default display set to an X-11 Server and some environment variables set that Unix expects.
The forked debugger requires the environment variable "TERM" to be "xterm", and the environment variable "DISPLAY" to exist. "xterm" must be in lower case.
$define TERM "xterm" $define DISPLAY "hostname:0.0"
Currently the value of "DISPLAY" is ignored. It is recommended that it be set to be the hostname of the display, the server and screen in UNIX notation. In the future the value of DISPLAY may be honored by Perl instead of using the default display.
It may be helpful to always use the forked debugger so that script I/O is separated from debugger I/O. You can force the debugger to be forked by assigning a value to the logical name <PERLDB_PIDS> that is not a process identification number.
$define PERLDB_PIDS XXXX
PERL_VMS_EXCEPTION_DEBUG
The PERL_VMS_EXCEPTION_DEBUG being defined as ``ENABLE'' will cause the VMS debugger to be invoked if a fatal exception that is not otherwise handled is raised. The purpose of this is to allow debugging of internal Perl problems that would cause such a condition.This allows the programmer to look at the execution stack and variables to find out the cause of the exception. As the debugger is being invoked as the Perl interpreter is about to do a fatal exit, continuing the execution in debug mode is usally not practical.
Starting Perl in the VMS debugger may change the program execution profile in a way that such problems are not reproduced.
The "kill" function can be used to test this functionality from within a program.
In typical VMS style, only the first letter of the value of this logical name is actually checked in a case insensitive mode, and it is considered enabled if it is the value ``T'',``1'' or ``E''.
This logical name must be defined before Perl is started.
Command line
I/O redirection and backgrounding
Perl for VMS supports redirection of input and output on the command line, using a subset of Bourne shell syntax:- *
- "<file" reads stdin from "file",
- *
- ">file" writes stdout to "file",
- *
- ">>file" appends stdout to "file",
- *
- "2>file" writes stderr to "file",
- *
- "2>>file" appends stderr to "file", and
- *
- "2>&1" redirects stderr to stdout.
In addition, output may be piped to a subprocess, using the character '|'. Anything after this character on the command line is passed to a subprocess for execution; the subprocess takes the output of Perl as its input.
Finally, if the command line ends with '&', the entire command is run in the background as an asynchronous subprocess.
Command line switches
The following command line switches behave differently under VMS than described in perlrun. Note also that in order to pass uppercase switches to Perl, you need to enclose them in double-quotes on the command line, since the CRTL downcases all unquoted strings.On newer 64 bit versions of OpenVMS, a process setting now controls if the quoting is needed to preserve the case of command line arguments.
- -i
- If the "-i" switch is present but no extension for a backup copy is given, then inplace editing creates a new version of a file; the existing copy is not deleted. (Note that if an extension is given, an existing file is renamed to the backup file, as is the case under other operating systems, so it does not remain as a previous version under the original filename.)
- -S
- If the "-S" or "-"S"" switch is present and the script name does not contain a directory, then Perl translates the logical name DCL$PATH as a searchlist, using each translation as a directory in which to look for the script. In addition, if no file type is specified, Perl looks in each directory for a file matching the name specified, with a blank type, a type of .pl, and a type of .com, in that order.
- -u
- The "-u" switch causes the VMS debugger to be invoked after the Perl program is compiled, but before it has run. It does not create a core dump file.
Perl functions
As of the time this document was last revised, the following Perl functions were implemented in the VMS port of Perl (functions marked with * are discussed in more detail below):
file tests*, abs, alarm, atan, backticks*, binmode*, bless, caller, chdir, chmod, chown, chomp, chop, chr, close, closedir, cos, crypt*, defined, delete, die, do, dump*, each, endgrent, endpwent, eof, eval, exec*, exists, exit, exp, fileno, flock getc, getgrent*, getgrgid*, getgrnam, getlogin, getppid, getpwent*, getpwnam*, getpwuid*, glob, gmtime*, goto, grep, hex, ioctl, import, index, int, join, keys, kill*, last, lc, lcfirst, lchown*, length, link*, local, localtime, log, lstat, m//, map, mkdir, my, next, no, oct, open, opendir, ord, pack, pipe, pop, pos, print, printf, push, q//, qq//, qw//, qx//*, quotemeta, rand, read, readdir, readlink*, redo, ref, rename, require, reset, return, reverse, rewinddir, rindex, rmdir, s///, scalar, seek, seekdir, select(internal), select (system call)*, setgrent, setpwent, shift, sin, sleep, socketpair, sort, splice, split, sprintf, sqrt, srand, stat, study, substr, symlink*, sysread, system*, syswrite, tell, telldir, tie, time, times*, tr///, uc, ucfirst, umask, undef, unlink*, unpack, untie, unshift, use, utime*, values, vec, wait, waitpid*, wantarray, warn, write, y///
The following functions were not implemented in the VMS port, and calling them produces a fatal error (usually) or undefined behavior (rarely, we hope):
chroot, dbmclose, dbmopen, fork*, getpgrp, getpriority, msgctl, msgget, msgsend, msgrcv, semctl, semget, semop, setpgrp, setpriority, shmctl, shmget, shmread, shmwrite, syscall
The following functions are available on Perls compiled with Dec C 5.2 or greater and running VMS 7.0 or greater:
truncate
The following functions are available on Perls built on VMS 7.2 or greater:
fcntl (without locking)
The following functions may or may not be implemented, depending on what type of socket support you've built into your copy of Perl:
accept, bind, connect, getpeername, gethostbyname, getnetbyname, getprotobyname, getservbyname, gethostbyaddr, getnetbyaddr, getprotobynumber, getservbyport, gethostent, getnetent, getprotoent, getservent, sethostent, setnetent, setprotoent, setservent, endhostent, endnetent, endprotoent, endservent, getsockname, getsockopt, listen, recv, select(system call)*, send, setsockopt, shutdown, socket
The following function is available on Perls built on 64 bit OpenVMS v8.2 with hard links enabled on an ODS-5 formatted build disk. CRTL support is in principle available as of OpenVMS v7.3-1, and better configuration support could detect this.
link
The following functions are available on Perls built on 64 bit OpenVMS v8.2 and later. CRTL support is in principle available as of OpenVMS v7.3-2, and better configuration support could detect this.
getgrgid, getgrnam, getpwnam, getpwuid, setgrent, ttyname
The following functions are available on Perls built on 64 bit OpenVMS v8.2 and later.
statvfs, socketpair
- File tests
-
The tests "-b", "-B", "-c", "-C", "-d", "-e", "-f",
"-o", "-M", "-s", "-S", "-t", "-T", and "-z" work as
advertised. The return values for "-r", "-w", and "-x"
tell you whether you can actually access the file; this may
not reflect the UIC-based file protections. Since real and
effective UIC don't differ under VMS, "-O", "-R", "-W",
and "-X" are equivalent to "-o", "-r", "-w", and "-x".
Similarly, several other tests, including "-A", "-g", "-k",
"-l", "-p", and "-u", aren't particularly meaningful under
VMS, and the values returned by these tests reflect whatever
your CRTL "stat()" routine does to the equivalent bits in the
st_mode field. Finally, "-d" returns true if passed a device
specification without an explicit directory (e.g. "DUA1:"), as
well as if passed a directory.
There are DECC feature logical names AND ODS-5 volume attributes that also control what values are returned for the date fields.
Note: Some sites have reported problems when using the file-access tests ("-r", "-w", and "-x") on files accessed via DEC's DFS. Specifically, since DFS does not currently provide access to the extended file header of files on remote volumes, attempts to examine the ACL fail, and the file tests will return false, with $! indicating that the file does not exist. You can use "stat" on these files, since that checks UIC-based protection only, and then manually check the appropriate bits, as defined by your C compiler's stat.h, in the mode value it returns, if you need an approximation of the file's protections.
- backticks
- Backticks create a subprocess, and pass the enclosed string to it for execution as a DCL command. Since the subprocess is created directly via "lib$spawn()", any valid DCL command string may be specified.
- binmode FILEHANDLE
-
The "binmode" operator will attempt to insure that no translation
of carriage control occurs on input from or output to this filehandle.
Since this involves reopening the file and then restoring its
file position indicator, if this function returns FALSE, the
underlying filehandle may no longer point to an open file, or may
point to a different position in the file than before "binmode"
was called.
Note that "binmode" is generally not necessary when using normal filehandles; it is provided so that you can control I/O to existing record-structured files when necessary. You can also use the "vmsfopen" function in the VMS::Stdio extension to gain finer control of I/O to files and devices with different record structures.
- crypt PLAINTEXT, USER
-
The "crypt" operator uses the "sys$hash_password" system
service to generate the hashed representation of PLAINTEXT.
If USER is a valid username, the algorithm and salt values
are taken from that user's UAF record. If it is not, then
the preferred algorithm and a salt of 0 are used. The
quadword encrypted value is returned as an 8-character string.
The value returned by "crypt" may be compared against the encrypted password from the UAF returned by the "getpw*" functions, in order to authenticate users. If you're going to do this, remember that the encrypted password in the UAF was generated using uppercase username and password strings; you'll have to upcase the arguments to "crypt" to insure that you'll get the proper value:
sub validate_passwd { my($user,$passwd) = @_; my($pwdhash); if ( !($pwdhash = (getpwnam($user))[1]) || $pwdhash ne crypt("\U$passwd","\U$name") ) { intruder_alert($name); } return 1; }
- die
-
"die" will force the native VMS exit status to be an SS$_ABORT code
if neither of the $! or $? status values are ones that would cause
the native status to be interpreted as being what VMS classifies as
SEVERE_ERROR severity for DCL error handling.
When "PERL_VMS_POSIX_EXIT" is active (see ``$?'' below), the native VMS exit status value will have either one of the $! or $? or $^E or the UNIX value 255 encoded into it in a way that the effective original value can be decoded by other programs written in C, including Perl and the GNV package. As per the normal non-VMS behavior of "die" if either $! or $? are non-zero, one of those values will be encoded into a native VMS status value. If both of the UNIX status values are 0, and the $^E value is set one of ERROR or SEVERE_ERROR severity, then the $^E value will be used as the exit code as is. If none of the above apply, the UNIX value of 255 will be encoded into a native VMS exit status value.
Please note a significant difference in the behavior of "die" in the "PERL_VMS_POSIX_EXIT" mode is that it does not force a VMS SEVERE_ERROR status on exit. The UNIX exit values of 2 through 255 will be encoded in VMS status values with severity levels of SUCCESS. The UNIX exit value of 1 will be encoded in a VMS status value with a severity level of ERROR. This is to be compatible with how the VMS C library encodes these values.
The minimum severity level set by "die" in "PERL_VMS_POSIX_EXIT" mode may be changed to be ERROR or higher in the future depending on the results of testing and further review.
See ``$?'' for a description of the encoding of the UNIX value to produce a native VMS status containing it.
- dump
- Rather than causing Perl to abort and dump core, the "dump" operator invokes the VMS debugger. If you continue to execute the Perl program under the debugger, control will be transferred to the label specified as the argument to "dump", or, if no label was specified, back to the beginning of the program. All other state of the program (e.g. values of variables, open file handles) are not affected by calling "dump".
- exec LIST
- A call to "exec" will cause Perl to exit, and to invoke the command given as an argument to "exec" via "lib$do_command". If the argument begins with '@' or '$' (other than as part of a filespec), then it is executed as a DCL command. Otherwise, the first token on the command line is treated as the filespec of an image to run, and an attempt is made to invoke it (using .Exe and the process defaults to expand the filespec) and pass the rest of "exec"'s argument to it as parameters. If the token has no file type, and matches a file with null type, then an attempt is made to determine whether the file is an executable image which should be invoked using "MCR" or a text file which should be passed to DCL as a command procedure.
- fork
- While in principle the "fork" operator could be implemented via (and with the same rather severe limitations as) the CRTL "vfork()" routine, and while some internal support to do just that is in place, the implementation has never been completed, making "fork" currently unavailable. A true kernel "fork()" is expected in a future version of VMS, and the pseudo-fork based on interpreter threads may be available in a future version of Perl on VMS (see perlfork). In the meantime, use "system", backticks, or piped filehandles to create subprocesses.
- getpwent
- getpwnam
- getpwuid
- These operators obtain the information described in perlfunc, if you have the privileges necessary to retrieve the named user's UAF information via "sys$getuai". If not, then only the $name, $uid, and $gid items are returned. The $dir item contains the login directory in VMS syntax, while the $comment item contains the login directory in Unix syntax. The $gcos item contains the owner field from the UAF record. The $quota item is not used.
- gmtime
- The "gmtime" operator will function properly if you have a working CRTL "gmtime()" routine, or if the logical name SYS$TIMEZONE_DIFFERENTIAL is defined as the number of seconds which must be added to UTC to yield local time. (This logical name is defined automatically if you are running a version of VMS with built-in UTC support.) If neither of these cases is true, a warning message is printed, and "undef" is returned.
- kill
-
In most cases, "kill" is implemented via the undocumented system
service <$SIGPRC>, which has the same calling sequence as <$FORCEX>, but
throws an exception in the target process rather than forcing it to call
$EXIT. Generally speaking, "kill" follows the behavior of the
CRTL's "kill()" function, but unlike that function can be called from
within a signal handler. Also, unlike the "kill" in some versions of
the CRTL, Perl's "kill" checks the validity of the signal passed in and
returns an error rather than attempting to send an unrecognized signal.
Also, negative signal values don't do anything special under VMS; they're just converted to the corresponding positive value.
- qx//
- See the entry on "backticks" above.
- select (system call)
- If Perl was not built with socket support, the system call version of "select" is not available at all. If socket support is present, then the system call version of "select" functions only for file descriptors attached to sockets. It will not provide information about regular files or pipes, since the CRTL "select()" routine does not provide this functionality.
- stat EXPR
- Since VMS keeps track of files according to a different scheme than Unix, it's not really possible to represent the file's ID in the "st_dev" and "st_ino" fields of a "struct stat". Perl tries its best, though, and the values it uses are pretty unlikely to be the same for two different files. We can't guarantee this, though, so caveat scriptor.
- system LIST
-
The "system" operator creates a subprocess, and passes its
arguments to the subprocess for execution as a DCL command.
Since the subprocess is created directly via "lib$spawn()", any
valid DCL command string may be specified. If the string begins with
'@', it is treated as a DCL command unconditionally. Otherwise, if
the first token contains a character used as a delimiter in file
specification (e.g. ":" or "]"), an attempt is made to expand it
using a default type of .Exe and the process defaults, and if
successful, the resulting file is invoked via "MCR". This allows you
to invoke an image directly simply by passing the file specification
to "system", a common Unixish idiom. If the token has no file type,
and matches a file with null type, then an attempt is made to
determine whether the file is an executable image which should be
invoked using "MCR" or a text file which should be passed to DCL
as a command procedure.
If LIST consists of the empty string, "system" spawns an interactive DCL subprocess, in the same fashion as typing SPAWN at the DCL prompt.
Perl waits for the subprocess to complete before continuing execution in the current process. As described in perlfunc, the return value of "system" is a fake ``status'' which follows POSIX semantics unless the pragma "use vmsish 'status'" is in effect; see the description of $? in this document for more detail.
- time
- The value returned by "time" is the offset in seconds from 01-JAN-1970 00:00:00 (just like the CRTL's times() routine), in order to make life easier for code coming in from the POSIX/Unix world.
- times
- The array returned by the "times" operator is divided up according to the same rules the CRTL "times()" routine. Therefore, the ``system time'' elements will always be 0, since there is no difference between ``user time'' and ``system'' time under VMS, and the time accumulated by a subprocess may or may not appear separately in the ``child time'' field, depending on whether times keeps track of subprocesses separately. Note especially that the VAXCRTL (at least) keeps track only of subprocesses spawned using fork and exec; it will not accumulate the times of subprocesses spawned via pipes, system, or backticks.
- unlink LIST
-
"unlink" will delete the highest version of a file only; in
order to delete all versions, you need to say
1 while unlink LIST;
You may need to make this change to scripts written for a Unix system which expect that after a call to "unlink", no files with the names passed to "unlink" will exist. (Note: This can be changed at compile time; if you "use Config" and $Config{'d_unlink_all_versions'} is "define", then "unlink" will delete all versions of a file on the first call.)
"unlink" will delete a file if at all possible, even if it requires changing file protection (though it won't try to change the protection of the parent directory). You can tell whether you've got explicit delete access to a file by using the "VMS::Filespec::candelete" operator. For instance, in order to delete only files to which you have delete access, you could say something like
sub safe_unlink { my($file,$num); foreach $file (@_) { next unless VMS::Filespec::candelete($file); $num += unlink $file; } $num; }
(or you could just use "VMS::Stdio::remove", if you've installed the VMS::Stdio extension distributed with Perl). If "unlink" has to change the file protection to delete the file, and you interrupt it in midstream, the file may be left intact, but with a changed ACL allowing you delete access.
This behavior of "unlink" is to be compatible with POSIX behavior and not traditional VMS behavior.
- utime LIST
- This operator changes only the modification time of the file (VMS revision date) on ODS-2 volumes and ODS-5 volumes without access dates enabled. On ODS-5 volumes with access dates enabled, the true access time is modified.
- waitpid PID,FLAGS
-
If PID is a subprocess started by a piped "open()" (see open),
"waitpid" will wait for that subprocess, and return its final status
value in $?. If PID is a subprocess created in some other way (e.g.
SPAWNed before Perl was invoked), "waitpid" will simply check once per
second whether the process has completed, and return when it has. (If
PID specifies a process that isn't a subprocess of the current process,
and you invoked Perl with the "-w" switch, a warning will be issued.)
Returns PID on success, -1 on error. The FLAGS argument is ignored in all cases.
Perl variables
The following VMS-specific information applies to the indicated ``special'' Perl variables, in addition to the general information in perlvar. Where there is a conflict, this information takes precedence.- %ENV
-
The operation of the %ENV array depends on the translation
of the logical name PERL_ENV_TABLES. If defined, it should
be a search list, each element of which specifies a location
for %ENV elements. If you tell Perl to read or set the
element "$ENV{"name"}", then Perl uses the translations of
PERL_ENV_TABLES as follows:
-
- CRTL_ENV
- This string tells Perl to consult the CRTL's internal "environ" array of key-value pairs, using name as the key. In most cases, this contains only a few keys, but if Perl was invoked via the C "exec[lv]e()" function, as is the case for CGI processing by some HTTP servers, then the "environ" array may have been populated by the calling program.
- CLISYM_[LOCAL]
- A string beginning with "CLISYM_"tells Perl to consult the CLI's symbol tables, using name as the name of the symbol. When reading an element of %ENV, the local symbol table is scanned first, followed by the global symbol table.. The characters following "CLISYM_" are significant when an element of %ENV is set or deleted: if the complete string is "CLISYM_LOCAL", the change is made in the local symbol table; otherwise the global symbol table is changed.
- Any other string
- If an element of PERL_ENV_TABLES translates to any other string, that string is used as the name of a logical name table, which is consulted using name as the logical name. The normal search order of access modes is used.
-
PERL_ENV_TABLES is translated once when Perl starts up; any changes you make while Perl is running do not affect the behavior of %ENV. If PERL_ENV_TABLES is not defined, then Perl defaults to consulting first the logical name tables specified by LNM$FILE_DEV, and then the CRTL "environ" array.
In all operations on %ENV, the key string is treated as if it were entirely uppercase, regardless of the case actually specified in the Perl expression.
When an element of %ENV is read, the locations to which PERL_ENV_TABLES points are checked in order, and the value obtained from the first successful lookup is returned. If the name of the %ENV element contains a semi-colon, it and any characters after it are removed. These are ignored when the CRTL "environ" array or a CLI symbol table is consulted. However, the name is looked up in a logical name table, the suffix after the semi-colon is treated as the translation index to be used for the lookup. This lets you look up successive values for search list logical names. For instance, if you say
$ Define STORY once,upon,a,time,there,was $ perl -e "for ($i = 0; $i <= 6; $i++) " - _$ -e "{ print $ENV{'story;'.$i},' '}"
Perl will print "ONCE UPON A TIME THERE WAS", assuming, of course, that PERL_ENV_TABLES is set up so that the logical name "story" is found, rather than a CLI symbol or CRTL "environ" element with the same name.
When an element of %ENV is set to a defined string, the corresponding definition is made in the location to which the first translation of PERL_ENV_TABLES points. If this causes a logical name to be created, it is defined in supervisor mode. (The same is done if an existing logical name was defined in executive or kernel mode; an existing user or supervisor mode logical name is reset to the new value.) If the value is an empty string, the logical name's translation is defined as a single NUL (ASCII 00) character, since a logical name cannot translate to a zero-length string. (This restriction does not apply to CLI symbols or CRTL "environ" values; they are set to the empty string.) An element of the CRTL "environ" array can be set only if your copy of Perl knows about the CRTL's "setenv()" function. (This is present only in some versions of the DECCRTL; check $Config{d_setenv} to see whether your copy of Perl was built with a CRTL that has this function.)
When an element of %ENV is set to "undef", the element is looked up as if it were being read, and if it is found, it is deleted. (An item ``deleted'' from the CRTL "environ" array is set to the empty string; this can only be done if your copy of Perl knows about the CRTL "setenv()" function.) Using "delete" to remove an element from %ENV has a similar effect, but after the element is deleted, another attempt is made to look up the element, so an inner-mode logical name or a name in another location will replace the logical name just deleted. In either case, only the first value found searching PERL_ENV_TABLES is altered. It is not possible at present to define a search list logical name via %ENV.
The element $ENV{DEFAULT} is special: when read, it returns Perl's current default device and directory, and when set, it resets them, regardless of the definition of PERL_ENV_TABLES. It cannot be cleared or deleted; attempts to do so are silently ignored.
Note that if you want to pass on any elements of the C-local environ array to a subprocess which isn't started by fork/exec, or isn't running a C program, you can ``promote'' them to logical names in the current process, which will then be inherited by all subprocesses, by saying
foreach my $key (qw[C-local keys you want promoted]) { my $temp = $ENV{$key}; # read from C-local array $ENV{$key} = $temp; # and define as logical name }
(You can't just say $ENV{$key} = $ENV{$key}, since the Perl optimizer is smart enough to elide the expression.)
Don't try to clear %ENV by saying "%ENV = ();", it will throw a fatal error. This is equivalent to doing the following from DCL:
DELETE/LOGICAL *
You can imagine how bad things would be if, for example, the SYS$MANAGER or SYS$SYSTEM logical names were deleted.
At present, the first time you iterate over %ENV using "keys", or "values", you will incur a time penalty as all logical names are read, in order to fully populate %ENV. Subsequent iterations will not reread logical names, so they won't be as slow, but they also won't reflect any changes to logical name tables caused by other programs.
You do need to be careful with the logical names representing process-permanent files, such as "SYS$INPUT" and "SYS$OUTPUT". The translations for these logical names are prepended with a two-byte binary value (0x1B 0x00) that needs to be stripped off if you wantto use it. (In previous versions of Perl it wasn't possible to get the values of these logical names, as the null byte acted as an end-of-string marker)
-
- $!
- The string value of $! is that returned by the CRTL's strerror() function, so it will include the VMS message for VMS-specific errors. The numeric value of $! is the value of "errno", except if errno is EVMSERR, in which case $! contains the value of vaxc$errno. Setting $! always sets errno to the value specified. If this value is EVMSERR, it also sets vaxc$errno to 4 (NONAME-F-NOMSG), so that the string value of $! won't reflect the VMS error message from before $! was set.
- $^E
-
This variable provides direct access to VMS status values
in vaxc$errno, which are often more specific than the
generic Unix-style error messages in $!. Its numeric value
is the value of vaxc$errno, and its string value is the
corresponding VMS message string, as retrieved by sys$getmsg().
Setting $^E sets vaxc$errno to the value specified.
While Perl attempts to keep the vaxc$errno value to be current, if errno is not EVMSERR, it may not be from the current operation.
- $?
-
The ``status value'' returned in $? is synthesized from the
actual exit status of the subprocess in a way that approximates
POSIX wait(5) semantics, in order to allow Perl programs to
portably test for successful completion of subprocesses. The
low order 8 bits of $? are always 0 under VMS, since the
termination status of a process may or may not have been
generated by an exception.
The next 8 bits contain the termination status of the program.
If the child process follows the convention of C programs compiled with the _POSIX_EXIT macro set, the status value will contain the actual value of 0 to 255 returned by that program on a normal exit.
With the _POSIX_EXIT macro set, the UNIX exit value of zero is represented as a VMS native status of 1, and the UNIX values from 2 to 255 are encoded by the equation:
VMS_status = 0x35a000 + (unix_value * 8) + 1.
And in the special case of unix value 1 the encoding is:
VMS_status = 0x35a000 + 8 + 2 + 0x10000000.
For other termination statuses, the severity portion of the subprocess' exit status is used: if the severity was success or informational, these bits are all 0; if the severity was warning, they contain a value of 1; if the severity was error or fatal error, they contain the actual severity bits, which turns out to be a value of 2 for error and 4 for severe_error. Fatal is another term for the severe_error status.
As a result, $? will always be zero if the subprocess' exit status indicated successful completion, and non-zero if a warning or error occurred or a program compliant with encoding _POSIX_EXIT values was run and set a status.
How can you tell the difference between a non-zero status that is the result of a VMS native error status or an encoded UNIX status? You can not unless you look at the ${^CHILD_ERROR_NATIVE} value. The ${^CHILD_ERROR_NATIVE} value returns the actual VMS status value and check the severity bits. If the severity bits are equal to 1, then if the numeric value for $? is between 2 and 255 or 0, then $? accurately reflects a value passed back from a UNIX application. If $? is 1, and the severity bits indicate a VMS error (2), then $? is from a UNIX application exit value.
In practice, Perl scripts that call programs that return _POSIX_EXIT type status values will be expecting those values, and programs that call traditional VMS programs will either be expecting the previous behavior or just checking for a non-zero status.
And success is always the value 0 in all behaviors.
When the actual VMS termination status of the child is an error, internally the $! value will be set to the closest UNIX errno value to that error so that Perl scripts that test for error messages will see the expected UNIX style error message instead of a VMS message.
Conversely, when setting $? in an END block, an attempt is made to convert the POSIX value into a native status intelligible to the operating system upon exiting Perl. What this boils down to is that setting $? to zero results in the generic success value SS$_NORMAL, and setting $? to a non-zero value results in the generic failure status SS$_ABORT. See also ``exit'' in perlport.
With the "PERL_VMS_POSIX_EXIT" logical name defined as ``ENABLE'', setting $? will cause the new value to be encoded into $^E so that either the original parent or child exit status values
0 to 255 can be automatically recovered by C programs expecting _POSIX_EXIT behavior. If both a parent and a child exit value are non-zero, then it will be assumed that this is actually a VMS native status value to be passed through. The special value of 0xFFFF is almost a NOOP as it will cause the current native VMS status in the C library to become the current native Perl VMS status, and is handled this way as it is known to not be a valid native VMS status value. It is recommend that only values in the range of normal UNIX parent or child status numbers, 0 to 255 are used.The pragma "use vmsish 'status'" makes $? reflect the actual VMS exit status instead of the default emulation of POSIX status described above. This pragma also disables the conversion of non-zero values to SS$_ABORT when setting $? in an END block (but zero will still be converted to SS$_NORMAL).
Do not use the pragma "use vmsish 'status'" with "PERL_VMS_POSIX_EXIT" enabled, as they are at times requesting conflicting actions and the consequence of ignoring this advice will be undefined to allow future improvements in the POSIX exit handling.
In general, with "PERL_VMS_POSIX_EXIT" enabled, more detailed information will be availble in the exit status for DCL scripts or other native VMS tools, and will give the expected information for Posix programs. It has not been made the default in order to preserve backward compatibility.
N.B. Setting "DECC$FILENAME_UNIX_REPORT" implicitly enables "PERL_VMS_POSIX_EXIT".
- $|
- Setting $| for an I/O stream causes data to be flushed all the way to disk on each write (i.e. not just to the underlying RMS buffers for a file). In other words, it's equivalent to calling fflush() and fsync() from C.
Standard modules with VMS-specific differences
SDBM_File
SDBM_File works properly on VMS. It has, however, one minor difference. The database directory file created has a .sdbm_dir extension rather than a .dir extension. .dir files are VMS filesystem directory files, and using them for other purposes could cause unacceptable problems.Revision date
Please see the git repository for revision history.AUTHOR
Charles Bailey<EMAIL_ADDRESS>Craig Berry<EMAIL_ADDRESS>Dan Sugalski<EMAIL_ADDRESS>John Malmberg<EMAIL_ADDRESS>Index
- NAME
- DESCRIPTION
- Installation
- Organization of Perl Images
- File specifications
- PERL5LIB and PERLLIB
- The Perl Forked Debugger
- PERL_VMS_EXCEPTION_DEBUG
- Command line
- Perl functions
- Perl variables
- Standard modules with VMS-specific differences
- Revision date
- AUTHOR
This document was created by man2html, using the manual pages.
Time: 05:29:09 GMT, December 24, 2015


x
Akshay Kore | Portfolio
Lookup Mumbai
Research internship for an immersive installation with Ar. Preeti Sanghi (JSW Foundation) in collaboration with Sarah Kenderdine at The Chhatrapati Shivaji Maharaj Vastu Sangrahalaya (CSMVS) in Mumbai, formerly known as the Prince of Wales Museum.
The internship involved research and fieldwork for a fulldome new media installation at the CSMVS Museum. I was responsible for the design and fabrication of certain parts of the installation along with the background research of buildings, photography permissions for a number of buildings in Mumbai that were to be documented. 360 Degree images of buildings in Mumbai with noteworthy ceilings were taken and projected on a fulldome to create an immersive experience.
Immersive, New media, Visualization, Research, Museum, CSMVS, Mumbai, Fieldwork, Lookup, Ceilings, JSW Foundation, Sarah Kenderdine, Preeti Sanghi, Architecture, Exhibition, Installation, The Chhatrapati Shivaji Maharaj Vastu Sangrahalaya, Prince of Wales Museum
<< Previous
Next >>
This work by Akshay Kore is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License


Example of modal just in CSS. I use the pseudo selector ":target" for modal action.
This works in IE9+ and all modern browsers.
View Pure CSS Components project.
https://www.w3schools.com/cssref/sel_target.asp
https://davidwalsh.name/css-target
One modal example here! :D


Blog
Four Signs Your Child Is in a Failing School District
In these days of Common Core State Standards and continuing attacks on public education by billionaires and their bought-and-paid-for legislators, parents need a few guidelines on how to tell if their child is in a failing school district. It has nothing to do with low scores on state-mandated standardized tests and more to do with the culture in the school district.
Here are 4 signs that your child is in a failing school district:
- The large majority of your teachers have less than five years of experience
The best schools have solid veteran teaching forces, mixing in talented newcomers each year as teachers retire or move into administration or other job opportunities.  That makes it that much harder to understand why so many state legislatures are appropriating millions for inexperienced Teach for America instructors instead of spending that money to keep their best teachers in the classroom.
- Teachers are overwhelmed with requests for data
Any time teachers are spending more time providing data for the bean counters in administration, it is a good indication that your school has gone astray. Most of that data is supplied through the use of one practice standardized test after another. In recent years, the situation has grown worse with many school districts adding costly practice tests given multiple times during the year. These not only take away from instructional time, but they also strip the children of any love of learning and they provide overly generous fees to the testing companies. What is worse, the expensive practice tests, whether students do well on them or not, provide no guarantee of success on the high stakes test at the end of the school year.
- Teachers receive no support from administrators on discipline issues
In our ravenous quest for more and more data, one of the worst things that has occurred was the decision to measure a school’s safety by its numbers of incidents, referrals, and suspensions. It was a natural progression for administrators, both at upper and lower levels, to find ways to game the system and avoid climbing statistics. In some schools, this has been done by encouraging teachers to handle every kind of situation in their classrooms and not involve the principal’s office. Teachers receive the message that they are the ones who will suffer if students are given referrals. Because of that, behavior that would have been met with an instant office referral only a few years ago, is allowed to continue in the classroom and creates even more distractions for teachers and students.
- Professional development is limited to indoctrination and data
An alarming trend the past few years has been the transition of professional development from learning techniques that will help the teacher to improve teaching and classroom management techniques to attempts to forcefully install a culture that would seem more desirable in a business than in an institution of learning. Much of this has come from the proliferation of consultants and motivational speakers who latched on to public schools after the implementation of No Child Left Alive and have yet to loosen their grip.


Floated cards without markup for rows
1. Card
Normal content.
2. Card
This content is longer then the content in other cards in this section.
3. Card
Normal content.
4. Card
This card is in trouble.
5. Card
This card is in trouble.
Floated cards in separate rows
1. Card
Normal content.
2. Card
This content is longer then the content in other cards in this section.
3. Card
Normal content.
4. Card
This card is ok in separate row.
5. Card
This card is ok in separate row.
Tabled cards
1. Card
Normal content.
2. Card
This content is longer then the content in other cards in this section.
3. Card
Normal content.
4. Card
This card is different.
5. Card
Normal content.
Inlined cards
1. Card
Normal content.
2. Card
This content is longer then the content in other cards in this section.
3. Card
Normal content.
4. Card
This card is in trouble.
5. Card
This card is in trouble.
Multi-columned cards
1. Card
Normal content.
2. Card
This content is longer then the content in other cards in this section.
3. Card
Normal content.
4. Card
This card is in trouble.
5. Card
This card is in trouble.
Flexed cards
1. Card
Normal content.
2. Card
This content is longer then the content in other cards in this section.
3. Card
Normal content.
4. Card
This card is in trouble.
5. Card
This card is in trouble.
Grided cards
1. Card
Normal content.
2. Card
This content is longer then the content in other cards in this section.
3. Card
Normal content.
4. Card
This card is in trouble.
5. Card
This card is in trouble.


--- layout: core title: Home ---
PRESCIENT (Potential eneRgy undeRlying Single-Cell gradIENTs) is a tool for simulating cellular differentiation trajectories with arbitrary cell state intializations. PRESCIENT frames differentiation as a diffusion process given by a stochastic ODE with a drift parameter given by a generative neural network. PRESCIENT models can simulate cellular differentiation trajectories for out-of-sample (i.e. not seen during training) cells, enabling robust fate prediction and perturbational analysis. Here, we package PRESCIENT as a command-line tool and PyPI package.
We recommend using pip to install PRESCIENT. For a stable version:
pip install prescient
For the latest version:
pip install git+https://github.com/gifford-lab/prescient.git
Source code available at:
github.com/gifford-lab/prescient
Generative modeling of single-cell time series with PRESCIENT enables prediction of cell trajectories with interventions
by Grace Hui-Ting Yeo, Sachit D. Saksena, and David K. Gifford
Code and notebooks for paper analyses and figures avalable at:
github.com/gifford-lab/prescient-analysis


THE SILENCE OF THE LAMBS A review in the public domain by The Phantom<EMAIL_ADDRESS>The Phantom has always wanted to do a TV-style two-word review, suitable for prominent display on a theater marquee. So how about, "'SILENCE' IS GOLDEN!" Truly, the Phantom feels like Roger Ebert already. But in fairness, Jonathan Demme's new thriller, based on the novel by Thomas Harris, is a knockout, better even than the Phantom himself had hoped for.
Good reviews are always the most difficult kind for the Phantom to write; it's as difficult to be clever when the Phantom is praising something as it is for him to be fair when he's casting another horrible horror film to the wolves. Reviewing a turkey like POPCORN was easy; reviewing SILENCE will be much more difficult. But let's give it a try, starting with the script, based on Thomas Harris' excellent psychological thriller. Harris does psychological thrillers about as well as anyone, and in THE SILENCE OF THE LAMBS he brought back one of his most memorable characters, Dr. Hannibal Lecter, the brilliant but insane psychiatrist who we first met in RED DRAGON (which was also turned into a fine, though largely overlooked, film called MANHUNTER by the talented and stylish director of Miami Vice fame, Michael Mann).
Dr. Lecter has the knack of getting inside of people's heads -- and also the rest of their bodies; he wasn't nicknamed "Hannibal the Cannibal" for nothing. Although Lecter was not the focus of RED DRAGON, SILENCE spends most of its time exploring him and his relationship to Clarice Starling, a young FBI trainee sent to get Lecter to help an investigation into a series of brutal murders by someone the press has dubbed "Buffalo Bill." Harris' novel spent about as much time with Lecter as it did with Buffalo Bill, and in turning it into a film, Demme's decision to concentrate on Lecter and relegate the scenes involving Bill to the obligatory "final confrontation" at the film's end is an inspired one. Adapting any novel is difficult, if only because it involves reducing what might be a week's worth of entertainment for the average reader to a script which can fit comfortably inside of two hours. But it's even more difficult when the novel spends so much time with three very compelling characters. Given the need to distill Harris' novel down to its essence and yet make SILENCE more than just another run-of-the-mill thriller, Demme chooses to use Buffalo Bill more as a convenient excuse than as a character; although he doesn't ignore Bill altogether, he exists as little more than the subject of Lecter and Starling's conversations -- and the reason they keep having conversations -- until quite near the very end of the film.
Had Demme had lesser actors with which to work, or had Harris' novel been less literate and more exploitative than it was, this decision might well have backfired, since it forces a change in tone -- from exciting manhunt to scenes of static conversation -- that is risky at best. When Michael Mann directed MANHUNTER, he chose to make a straightforward adaptation of Harris' RED DRAGON. In the process, he created a gripping, scary, and effective thriller, but at some level it differed little from the hundreds of other thrillers that had come before it. In that film, an FBI investigator is recalled to help track a serial killer because the FBI knows that he has a knack for thinking like the sociopaths he tracks. Harris spent more time on this theme than did Mann, and as a consequence MANHUNTER is a much more ordinary thriller than is SILENCE. This is not to say that MANHUNTER isn't worth seeing or that it's boring or predictable; on the contrary, Mann fashioned a supremely enjoyable and stylish film from Harris' very good source material. But the focus of that film was very much on the hunt; although Mann spends some time exploring what it means to be able to think like a serial killer, the theme is largely discarded once the film gets going and Mann gets into the heat of the chase.
Demme, however, very nearly discards the heat of the chase in favor of what might be called a very warped MY DINNER WITH ANDRE. Realizing that in Jodie Foster and Anthony Hopkins he had two exceptional actors, Demme opts to concentrate on their relationship. And from the very first meeting, it's obvious that he made the right choice. Stories involving pretty young investigators and brutal killers are nearly as common in the theaters as they are on television; but thrillers that put a camera motionless in a cell and record the conversations between someone as intense as Hannibal Lecter and someone as determined as Clarice Starling are rare to the point of nonexistence. It occurred to the Phantom that not since John McNaughton's HENRY: PORTRAIT OF A SERIAL KILLER has a filmmaker had the talent and the courage to assume that his audience wasn't full of drooling PREDATOR 2 fans (though the Phantom has yet to meet one, he assumes that they must exist somewhere). To do what he did, Demme had to assume instead that there were real, thinking people out there who would find the tension in the scenes between Lecter and Starling as intense and scary as any standard issue "killer stalking helpless woman through dark basement" scene. Of course, in the end Demme does hedge his bets a bit, but by the time the film changes its focus to Buffalo Bill, everyone in the audience feels lucky to have been able to spend some time with Hannibal and Clarice.
Of course, the best script in the world won't help a film if its actors have less range than their guns. Fortunately, both Jodie Foster and Anthony Hopkins give all-out performances that are exactly right for what Demme wants to do with the film. When the Phantom first read Harris' novel, he didn't have clear mental pictures of either Clarice Starling or Hannibal Lecter; now that he's seen the film, however, it will be as difficult to picture them as anyone other than Foster and Hopkins as it is to picture anyone other than Alec Guinness as George Smiley when reading John Le Carre's novels. Jodie Foster has the toughest job of it, which is why her performance is so much more impressive. Starling's role throughout the story is very reactive, and she spends much of the film providing a foil for Lecter. But although much of her character development is excised in the film, Foster gives Clarice Starling real substance, and she manages to make Starling not just sympathetic, but a real person to whom the audience has no trouble relating.
Anthony Hopkins, on the other hand, gives a truly brilliant and captivating performance as Hannibal Lecter, one that is every bit as good as Jodie Foster's; it is as much to his credit as it is to Harris' that by the end of the film we feel we "know" Lecter and maybe even like him a little bit. Hopkins stares at Clarice -- and at us -- with a hunger and an intensity that's more than a little unsettling. As Harris wrote the character, Lecter is supposed to be incredibly smart, fast and cool, and Hopkins' Lecter more than lives up to Harris' description. He always looks to us like a coiled spring or an brilliant and self-possessed snake, ready to strike at the first opportunity. And when Demme gets the camera right up into Hopkins' face, we see what Clarice sees -- the slicked back hair, the expressionless face, the dead and unblinking eyes -- and we feel what she feels: that perhaps the thick, bulletproof plastic separating her from Lecter might not be as effective as it first seems. From the very first moments of their first meeting, Lecter gets both Starling and the audience under his spell, and whenever the film returns to Lecter, all thoughts of the rest of the plot or even of any other characters melt away as we become completely absorbed in Hopkins' performance.
That, however, also points out a problem with the film, for as much as we would like to linger with Lecter and Starling and learn more about what makes each of them tick, Demme must inevitably return to what is, after all, the film's plot. Demme is able to pull off these shifts between Lecter and the investigation (using Starling as the link between them) until the film's end, at which time he becomes a prisoner of the need to resolve everything one way or another. As unusual as SILENCE is as a thriller, it is ultimately a mass-market Hollywood film -- once all is said and done, SILENCE is not another HENRY. But the need to return to Buffalo Bill and to provide the film with a satisfactory resolution is but a minor problem, and one that we only notice because the film up until that point had been so exceptional. In MANHUNTER, such resolution seemed perfectly in character, since the film is really about a manhunt; but in SILENCE, the 20 or 30 minutes that Demme needs to force-feed us the shaky plot points and fairly incredible coincidences and contrivances necessary to end the film seems like time stolen from the wonderful, intriguing, and startling Hannibal Lecter -- and from Anthony Hopkins' show-stopping performance.
But that is truly a minor nit to pick. On the whole, SILENCE succeeds both as an adaptation of a well-known and widely-read novel and as a film in its own right. In fact, it's not clear to the Phantom who will enjoy SILENCE more: people who have read the novel or people who haven't. Although the former may enjoy the last half of the film more than the latter -- if only because they won't have to rely on the overly-rushed explanations and the too-brief character sketch of Buffalo Bill -- they will also be at a disadvantage in knowing what to expect from Dr. Lecter. People who see the film first will be going in cold and will be able to enjoy both Hopkins' and Foster's performances without any preconceived ideas or expectations. In any event, at the performance the Phantom attended, it seemed that none of the seven or eight hundred people in the audience was disappointed with the film, and more than a few gave it a round of applause as the credits rolled. The Phantom himself looks forward to seeing it again in the coming weeks; as much as he enjoyed Harris' novel, he thinks he enjoyed Hopkins' performance even more.
What more is there to say? The film is simply excellent and well worth seeing. For phans who haven't yet read Harris' novel, the Phantom recommends that they first see the film, then wait a while and give the novel a try. But if you've already read the novel, see the film anyway, if only to enjoy the film's beautiful and stylish look, Demme's tight and effective direction, and of course Foster and Hopkins' stellar performances. SILENCE is a film to be savored, a true rarity: an "A" picture in a "B" movie genre.
: The Phantom<EMAIL_ADDRESS>: {cmcl2,uunet}! esquire! baumgart
.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


THERMOSTAT
Temperature setting:
˚C
PowerSave Status
Energy Use
Thresholds for energy use
High
25˚C or above
Medium
18-24˚C
Low
Lower than 18˚C
Current temperature in London
˚C
London
Manchester
Leeds
Liverpool


|
TLx493D 3D Hall Sensor Generic Library
1.3
Generic library for the TLx493D 3D Hall sensor family
|
TLE493D-A2B6/-W2B6 abstraction. More...
#include <stdint.h>
#include <stdbool.h>
#include "../TLx493D.h"
#include "driver/TLE_AW2B6_defines.h"
Go to the source code of this file.
Classes | |
| struct | TLE493D_data_t |
| Data structure containing information about the internal state of a sensor. Also used to identify a sensor on a bus. More... | |
Functions | |
| int32_t | TLE493D_AW2B6_init (TLE493D_data_t *data, uint8_t i2c_addr) |
| Initialize the sensor having the specified I2C address by reading the internal registers and disabling periodic interrupt pulses. More... | |
| uint8_t | TLE493D_AW2B6_get_FP_bit (TLE493D_data_t *data) |
| uint8_t | TLE493D_AW2B6_get_CP_bit (TLE493D_data_t *data) |
| int32_t | TLE493D_AW2B6_set_operation_mode (TLE493D_data_t *data, TLV493D_op_mode_t mode) |
| Set the operation mode of the sensor. | |
| int32_t | TLE493D_AW2B6_read_frame (TLE493D_data_t *data, TLx493D_data_frame_t *frame) |
| Read a data frame from the sensor. An ADC sampling must be completed before calling this method. | |
| int32_t | TLE493D_AW2B6_WU_enable (TLE493D_data_t *data, uint16_t wu_xl, uint16_t wu_xh, uint16_t wu_yl, uint16_t wu_yh, uint16_t wu_zl, uint16_t wu_zh) |
| Enable the Wake Up mode (available only on the -W2B6 hardware version) with the provided upper and lower limits. | |
| int32_t | TLE493D_AW2B6_WU_disable (TLE493D_data_t *data) |
| Disable the Wake Up mode. | |
| int32_t | TLE493D_AW2B6_set_IIC_address (TLE493D_data_t *data, TLE493D_address_t i2c_addr) |
| Set a new I2C address for the sensor. | |
| int32_t | TLE493D_AW2B6_magnetic_tmp_comp (TLE493D_data_t *data, TLE493D_magnetic_comp_t sens) |
| Set the magnetic temperature compensation mode. | |
| int32_t | TLE493D_AW2B6_set_high_sensitivity (TLE493D_data_t *data, bool on) |
| Double the measurement sensitivity(when on=true). This will decrease the ADC integration speed. | |
| int32_t | TLE493D_AW2B6_set_angle_mode (TLE493D_data_t *data, bool on) |
| Enable/Disable angle mode. In order to enable angle mode, the temperature measurement must be disabled. | |
| int32_t | TLE493D_AW2B6_set_temp_measure (TLE493D_data_t *data, bool on) |
| Enable/Disable temperature measurement. | |
| int32_t | TLV493D_A1B6_set_lowpower_update_frequency (TLE493D_data_t *data, TLE493D_lp_update_freq_t freq) |
| Set the update frequency while in LOW POWER Mode. | |
| int32_t | TLV493D_A1B6_set_trigger_mode (TLE493D_data_t *data, TLE493D_Config_trigger_mode_t mode) |
| Set trigger mode. Note that the TLE493D_AW2B6_Config_TRIG_R0 mode is momentarily not safe to use in this software implementation. | |
| TLV493D_sensor_type_t | TLE493D_get_hw_version (TLE493D_data_t *data) |
| Return hardware version of the TLE493D. | |
| void | TLE493D_AW2B6_get_data (TLE493D_data_t *dest) |
| Copy the data stored in the library to the dest structure. | |
| int32_t | TLE493D_AW2B6_set_data (TLE493D_data_t *src) |
| Copy the data from src to the library and the sensor. | |
TLE493D-A2B6/-W2B6 abstraction.
Abstracts the basic functions of the TLE493D-A1B6/-W2B6 and offers a way to store the internal state of the sensor registers.
| uint8_t TLE493D_AW2B6_get_CP_bit | ( | TLE493D_data_t * | data | ) |
Compute the value of the CP bit using the internal register state of the sensor
| uint8_t TLE493D_AW2B6_get_FP_bit | ( | TLE493D_data_t * | data | ) |
Compute the value of the FP bit using the internal register state of the sensor
| int32_t TLE493D_AW2B6_init | ( | TLE493D_data_t * | data, |
| uint8_t | i2c_addr | ||
| ) |
Initialize the sensor having the specified I2C address by reading the internal registers and disabling periodic interrupt pulses.
| data | Structure to copy the values of the internal registers to. If data is NULL, the internal library data structure will be used instead. This approach support only one sensor, and for a bus of several sensors, a different data structure should be used for each one of them. |
| i2c_addr | The initial address of the sensor. Sensors may have different fused default addresses. |


Knuth [182] is an excellent reference for the material presented in this chapter. Basic properties of series can be found in any good calculus book, such as Apostol [18] or Thomas and Finney [296].


Govt looking at gold policy: Finmin official
Niti Aayog has submitted a detailed report on gold policy and it is being examined, Joint Secretary in the Department of Economic Affairs Surinder Pal Singh said at an event here.
by PTIThe government is working on an integrated gold policy, which is expected to be released soon, a senior finance ministry official said on Friday. The policy is aimed at promoting growth of the yellow metal industry and exports of jewellery.
Niti Aayog has submitted a detailed report on gold policy and it is being examined, Joint Secretary in the Department of Economic Affairs Surinder Pal Singh said at an event here.
"Government is definitely looking into it. Definitely there will be a gold policy," he said.
The domestic industry has demanded a cut in import duty on gold to 4 per cent from the current 12.5 per cent.
Currently, there is no gold policy despite the fact that India is the largest consumer and importer of the precious metal.
The then finance minister Arun Jaitley had announced formulation of a comprehensive gold policy to develop the yellow metal as an asset class.


Introduction to Machine Learning with TensorFlow
21 Nov 2017Introduction
Welcome to Machine Learning with TensorFlow, an easy to follow book / blog about understanding machine learning concepts and their implementation in Python and TensorFlow. My goal is to create an intuitive explanation of machine learning methods, paired with practical knowledge of implementation with TensorFlow. This book does assume some small working knowledge of programming, but Python specific syntax will be briefly introduced as needed. In addition, some mathematics background will be useful, in particular linear algebra and calculus, but is not needed to follow the intuition and implementation. Resources to review relevant math concepts will be provided as required.
What exactly is machine learning?
Though the exact definition of machine learning is up for debate, we can roughly define machine learning as “a field of computer science that gives computers the ability to learn without being explicitly programmed” (Wikipedia). Traditionally, programming has been used to great effect to solve problems which have explicit steps. For example, consider the problem of determining if a number \(n\) is prime. We can easily determine if \(n\) is prime using fairly simple steps: check if \(n\) is divisible by \(2\), check if \(n\) is divisible by \(3\), \(\cdots\), check if \(n\) is divisible by \(n-1\). If \(n\) is divisible by any of these, then \(n\) is not prime, and otherwise it is prime. With traditional programming we then need to write these specific steps (an algorithm) in a programming language that our computer can interpret, and we have a working program which can classify numbers as prime much faster than a human ever could.
However, some tasks seem difficult or impossible to solve using specific steps like above. Rather than classifying prime numbers, let us instead try to classify images of dogs as either a Golden Retriever or Poodle.
| Golden Retriever | Poodle |
|---|---|
Most people would easily be able to differentiate the two breeds above, and accurately dogs of those breeds. But, can you explain how you came to this conclusion, in very specific steps? Perhaps, one might say that the hair of the Golden Retriever seems less curly, but then one would need to explain how to determine that the hair is less curly. There does not seem to exist a natural way to describe the curliness of hair in specific steps. Maybe, the shape of facial features such as nose shape are useful for determining dog breed, but it still seems nearly impossible to describe a precise algorithm that uses this data.
Qualitatively, humans do not seem to comprehend the beed of a dog by performing some precise algorithm, and this suggests that a computer program to solve this problem should not either. By using machine learning, we can use data to help the computer learn to recognize a dog breed, objects in general, human speech, etc., without explicitly programming it.
So, what is TensorFlow, and why do we need it?
Without diving into the details of various machine learning methods, I’ll generally state that there could be a fairly significant amount of math involved. Not necessarily super difficult math, but some pretty cumbersome math. Roughly, TensorFlow takes care of the calculus grunt work for us: instead of spending a ton of time finding messy derivatives and many lines of code to compute them, TensorFlow lets us focus on the fairly elegant work of defining our machine learning methods, and the more important math necessary to obtain intuition.
So, without further ado, we can get started by installing Python, TensorFlow, and a few other useful tools. Just follow the appropriate directions for your operating system.


Germany
POLTERABEND
This is usually the night before the wedding when the couple throws a party for friends to basically smash a bunch of porcelain for good luck. At the end of all the dish-breaking the bride and groom generally work together to clean it up - as they should for everything else for the rest of their lives.
BAUMSTAMM SäGEN
After the ceremony, the couple embarks on their first real challenge together: sawing a log of wood in half. With one on each side of the saw, the bride and groom work together to sever the chunk of wood, hopefully proving their strength as a couple.
WALTZ
The first dance of the couple as husband and wife is generally a waltz. Sometimes, the guests join the couple in the last part of the song (so bring your best waltz steps!)
HONKS AND RIBBONS
The bride carries lengths of white ribbon with her bouquet, and after the church ceremony is over and the guests are leaving the church, she hands each driver a ribbon that they tie to the radio antenna. On their way to the party, drivers honk their horns to celebrate the union.
Mexico
LA VÍBORA DE LA MAR
Halfway during the celebration, a brief pause is made and the ladies (your girls and older ladies included) are called to the dance floor to hold hands, form a line and dance around the venue and through the bridge that the couple makes with their arms. Then she throws the bouquet to the single ladies.
LAZO
The "lazo" or lasso represents "unity" and is used during the ceremony. The godparents wrap it around the couple as a symbol of the love that tie them together and the responsibility that marriage implies. Some couples decorate it with flowers representing fertility and joy.
MANTEADA
The male guests organize to throw the groom into the air several times. Ideally, they will try to not let him fall (!).
TORNABODA
Food is always abundant in a Mexican wedding, but a special tradition is to serve "breakfast" in the middle of the night so the guests can recharge and keep dancing. The "chilango" breakfast (from Mexico City) has chilaquiles, and the Yucatecan one has "lime soup" and "yucatecan pork".


gas AGNR adsorption band energy carrier sensor molecules {border-style molecule px;} velocity #ffffff;} structure charge properties Fig. molecular based gap graphene concentration effect Ismail adsorption, calculated electrical model simulation Ahmadi Phys characteristics detection increase Eq. Fermi Figure addition, adsorption. armchair bare carbon density effects electron nanoribbon proposed px; unit value {font-family Based Liu Mulliken analysis decrease font-size high hopping results shows surface used using AGNR, Beilstein GNRs Sens Table as: different double; function integral level matrix molecules. states valence wave (eV) DOS Furthermore, United adsorbed bond border-color border-width calculate carriers lead modelling presented properties. relation sensors solid; {font-style {font-weight (AGNR) ./bjnano.. ./j.snb... ./physrevb.. Actuators, Anwar C–C GNR Lett Modeling Nanotechnol Pourasl Rahmani Research Rev Sensor States Therefore, Wang [], acceptor bold cell change chemical comparison conductance conduction considering courier; current current–voltage donor electrons em; experimental extracted gap, gap. hand, indicates investigate material model, modulate molecule. nth number obtained parameter parameters physical pt;} respectively. sensitivity shown studies study transfer variation


{% extends "form_base.html" %} {% block title %}
Please use the navigation bar to view updated dashboards or submit new data


After the patch i cant sort to see only the pistols/shotguns/PDW on the "Weapons" tab.
The buttons are gone
Guess you guys are already aware, just confirming.
BB 13.07.2012 - BBLog 2.2.1 released
Chrome 21.0.1180.75 m
ORFK
Global Moderator
by me everythink works well...
have you installed plugins or other addons?
Topicstarter
JATF
I have also the B+
Its weird, i tried on firefox and its working
On Chrome that is with problem, i tried to cleaning the cache, cookies and desintalling it, its weird that even when the extension is not installed, it keeps showing the BBLOG options.
Any hint on what i can do to fix that?
ORFK
Global Moderator
So if B+ is not activated you can select the weapons?
Topicstarter
JATF
I just reinstalled the Chrome and now is working fine.
Really appreciate ur help ORFK!!! Tks a lot for ur time! xD


CrimPapers
Articles published on 25 June 2018
On 25 June 2018, 8 new articles were published in 8 journals.
Learning to Be A ‘safe’ Ex-Con: Race, Symbolic Violence and Discipline in Prisoner Re-Entry by Deirdre Caputo-Levine
The Differential Effects of Prison Contact on Parent–child Relationship Quality and Child Behavioral Changes by Danielle L. Haverkate, Kevin A. Wright
The Prominence of Fraud in New South Wales Metropolitan Media Reporting
Does Increasing Women's Education Reduce Their Risk of Intimate Partner Violence? Evidence From An Education Policy Reform by Abigailweitzman
Complainant Emotional Expressions and Perceived Credibility: Exploring the Role of Perceivers’ Facial Mimicry and Empathy by Karl Ask
“We Are More Than Crime Fighters”: Social Media Images of Police Departments by Xiaochen Hu, Kourtnie Rodgers, Nicholas P. Lovrich
A Study of Non-Urgent Demand to Identify Opportunities For Demand Reduction
Considering Forensic Science: Individual Differences, Opposing Expert Testimony and Juror Decision Making by Charlotte Scobie, C. Semmler, M. Proeve


|
Assimp
5.0.1, master @ cd42b955
|
Data structure for a mesh in HL1 MDL files. More...
Public Attributes | |
| int32_t | numnorms |
| The number of normals in the mesh. More... | |
| int32_t | numtris |
| Can be interpreted as the number of triangles in the mesh. More... | |
| int32_t | skinref |
| The skin index. More... | |
| int32_t | triindex |
| Offset to the start of the tris sequence. More... | |
| int32_t | unused |
| Was "normindex". More... | |
Data structure for a mesh in HL1 MDL files.
| int32_t Assimp::MDL::HalfLife::Mesh_HL1::numnorms |
The number of normals in the mesh.
| int32_t Assimp::MDL::HalfLife::Mesh_HL1::numtris |
Can be interpreted as the number of triangles in the mesh.
| int32_t Assimp::MDL::HalfLife::Mesh_HL1::skinref |
The skin index.
| int32_t Assimp::MDL::HalfLife::Mesh_HL1::triindex |
Offset to the start of the tris sequence.
| int32_t Assimp::MDL::HalfLife::Mesh_HL1::unused |
Was "normindex".


?

ANN
Name:
Dendropanax
qrandiflorus
Britton
Locality:
Douglas
Castle
district*
Yo/^
botanical
®arde^
NEW
YORK
BOTANICAL
GARDEN
Altitude:
2200-2400
ft*
Date:
April
4,
1976
Habitat:
Idoodsd
rocky
limestone
hilltop*
Notes:
Arborescent
shrub
3*5
m*
tall;
fls*
green.
Collector:
George
R*
Proctor
No.
35683
01500621
Legend -
Level of confidence that token is an accurately-transcribed word
extremely low
very low
low
undetermined
medium
high
very high


Getting the 16-inch MacBook Pro? Here’s how to wipe your MacBook before selling or giving it away
by Michael PotuckIf you’ve just picked up the 16-inch MacBook Pro or you’re going to soon, and you’re going to sell/give away your existing Mac notebook, follow along for how to wipe your MacBook and reinstall a fresh copy of macOS.
Before jumping right in to wipe your MacBook, make sure that you have a current backup. You’ll also want to sign out of any connected accounts.
To head off issues down the line, deauthorize your Mac in the Music app (or iTunes). Navigate to whichever one you have and in the menu bar click on Account → Authorizations → Deauthorize This Computer.
It’s also good to sign out of iCloud, iMessage, and FaceTime manually. It doesn’t hurt to sign out of any other accounts under System Preferences → Internet Accounts, too.
Also, if you want to have a bootable version of Catalina on a USB drive, check out our video tutorial. It isn’t required to wipe and reinstall macOS on your Mac, but it can be handy.
And if you plan on selling your MacBook on your own, it’s probably a good idea to have the butterfly keyboard replaced for free if you haven’t already.
How to wipe your MacBook before selling or giving it away
Boot into macOS Recovery
macOS Recovery will install a different version of macOS depending on the key combination you use when starting up your Mac (no installation discs or macOS loaded onto an external drive is needed). Hold down one of the following key combinations right after powering on your Mac, and let go when you see the globe or Apple logo.
- ⌘R (Command R) = Reinstall the latest macOS that was installed on your Mac, without upgrading to a later version.
- ⌥⌘R (Option Command R) = Upgrade to the latest macOS that is compatible with your Mac
As Apple notes on its support page, “if you’re selling or giving away a Mac that is using OS X El Capitan or earlier, use Option-Command-R to make sure that the installation isn’t associated with your Apple ID.” This also installs the latest available software.
For this walkthrough, I’ve used ⌥⌘R, which will use macOS Recovery over the internet and reinstall the latest macOS version (this option requires a Wi-Fi connection).
Loading time for macOS Recovery will vary depending on your internet connection. When the process is complete, you’ll see the macOS Utilities window.
Erase your startup disk (hard drive/solid state drive)
- Click Disk Utility in the utilities window, then click Continue.
- Select your startup disk in the sidebar of Disk Utility (click the top item like Apple SSD, as in the image shown below, not the volume name, Macintosh HD)
- Click Erase in the top area of the utility window (if you don’t see or can’t select erase, click the volume name beneath the disk name (Macintosh HD), then try again)
- Enter a name for the disk (Macintosh HD is the default on a new Mac), use Mac OS Extended (Journaled) for formatting, and GUID Partition Map for scheme
- Click Erase (once complete, in the menu bar click Disk Utility → Quit Disk Utility to return to the macOS Utilities window)
Reinstall macOS
- Back on the main macOS Utilities window, click on Reinstall macOS
- Follow the prompts and select which disk you’d like to install macOS (if you have multiple drives)
- Plug in your power cable if you’re using a MacBook
- Click Install
- If you have an SSD you may see a 10-20 minute installation estimate, if you have an HDD likely longer
- When the installation is complete you’ll see the welcome screen with the region selector. If keeping your Mac, continue on with the setup process. If selling or giving your Mac to someone else, use the keyboard shortcut ⌘Q to quit the setup assistant and power your Mac down.
Read more 9to5Mac tutorials:
AirPods Pro:
- Shopping for AirPods Pro? Here’s how to find available stock without waiting weeks
- How to clean your dirty AirPods Pro and charging case
- AirPods Pro: How to customize Force Sensor controls
- AirPods Pro: How to use Ear Tip Fit Test and change tips
- AirPods Pro: How to use noise cancellation and Transparency mode
- AirPods Pro vs Powerbeats Pro: How specs, size, price, and more compare
- What’s the difference in AirPods and AirPods Pro? Here’s how size, price, and features compare
iPhone & iPad:
- How to quickly select, move, and delete notes on iPhone and iPad with two-finger tap
- How to remove Memoji Stickers from your iPhone keyboard
- How to use the Deep Fusion iPhone 11 and iPhone 11 Pro camera feature
- iOS 13: How to use custom fonts on iPhone and iPad
- How to edit messages on iPhone and iPad with two-finger tap
- How to use the ‘Remind when messaging’ feature on iPhone, iPad, and Mac
- How to make subtasks and sublists with Reminders in iOS 13 and macOS Catalina
- How to get started with and use ‘Sign in with Apple’ on iPhone, iPad, and Mac
- How to use the ultra wide camera on iPhone 11 and iPhone 11 Pro
Mac:
- Selling your MacBook? Here’s how to repair the butterfly keyboard for free and get more money
- How to check iPad and Mac Sidecar requirements
- How to get your Mac ready for macOS Catalina
- How to create a bootable macOS Catalina 10.15 USB install drive [Video]
- How to sync iPhone and iPad to your Mac in macOS Catalina without iTunes
FTC: We use income earning auto affiliate links. More.


Explore a vibrant world rich with the beauty of nature – but inhabited by awe-inspiring, highly advanced machines. As a young machine hunter named Aloy, you must unravel the mysteries of this world and discover your own destiny.
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
Lorem ipsum dolor sit amet, consectetur adipisicing elit.


--- layout: page permalink: /index.html ---
{{ site.description_long }} The goal of this effort—led by the i2b2 international academics users group—is to inform doctors, epidemiologists and the public about COVID-19 patients with data acquired through the health care process.
{% assign paper-01 = site.publications | where: "slug", "paper-01" | first %} Results from the first phase of data acquisition and analysis have been submitted to medRxiv as a preprint, "{{ paper-01.title }}."
If you are interested in joining the 4CE project, please visit the join page.


job6.html here.
- Area Code:
- Area Code 6
- Date Posted:
- 2013 June 21
- Dice ID:
- Dice ID 6 from dd
- Length:
- Length 6
- Location:
- Location 6
- Pay Rate:
- Pay Rate 6
- Position ID:
- Position ID 6
| Skills: |
Skills 6 |
Job Status:
Job Status 6
- Telecommute:
- Telecommute 6
- Travel Required:
- Travel Required 6


Literate Testing in R
26 Oct 2013This past summer I attended the French R meeting in Lyon. But that's secondary for this story. The important part happened while I was on the train on my way to Lyon.
As I was reviewing a couple of my functions, I noticed that I was getting sick. Not from motion sickness but from the way I was validating the arguments of the functions. One of the functions required a positive integer as an input.
R has the function is.integer(x)
to check if x
is an integer. The problem is
that if you type is.integer(1)
you would get FALSE
as an answer. The reason
is because 1 is not stored as an integer in R, but as a double. If you want an integer
then you should use 1L. Now, if you type is.integer(1L)
the answer is TRUE
.
So, what does this have to do with my story? Well, if I want to validate whether a given
object x
is a positive integer, I could write the following line:
# check if x is a positive integer
if (mode(x) == "numeric" && x > 0 && x %% 1 == 0) TRUE else FALSE
What if I could simply write something like this:
# test if x is a positive integer
is_positive_integer(x)
Isn't this much better and simpler, not to mention more understandable? Hell yes! So why
not to have more functions like is_positive_integer(x)
to test specific features
of some common R objects?
I spent the rest of my ride to Lyon, and the next couple of days creating tester, an R package that provides a wide range of functions that will allow you to test characteristics of common R objects ... in a more human readable way following the so called Literate Programming paradigm of Donald Knuth.
To give you a better idea of tester
, here are some of the functions that you can
find to make your life easier when testing the behavior of different R objects. The main
goal is to provide tools for checking arguments of functions in a more human readable way.
Testing numbers
Some of the functions related to different types of numbers:
is_positive()
is_negative()
is_integer()
is_natural()
is_odd()
is_even()
is_decimal()
is_scalar()
Testing vectors
Some of the functions related to vectors:
is_vector()
is_numeric_vector()
is_string_vector()
is_logical_vector()
is_not_vector()
Testing matrices
Some of the functions related to matrices:
is_matrix()
is a matrixis_numeric_matrix()
is a numeric matrixis_string_matrix()
is a character matrixis_logical_matrix()
is a logical matrixis_not_matrix()
is not a matrixis_square_matrix()
is a square matrixis_diagonal()
is a diagonal matrixis_triangular()
is a triangular matrix
Testing data frames
Some of the functions related to data frames:
is_dataframe()
is_numeric_dataframe()
(is a numeric data frame)is_string_dataframe()
(is a character data frame)is_not_dataframe()
Testing matrices and data frames
Some of the functions related to both matrices and data frames:
is_tabular()
(is a matrix or data frame)is_not_tabular()
(is not matrix neither a data frame)has_dimension()
lacks_dimension()
is_one_dim()
has_rownames()
lacks_rownames()
has_colnames()
lacks_colnames()
In summary
As you can tell, tester
offers you several functions with simple memorable names
that are easy for us (human beings) to understand what the computer is doing. If you are
interested in the package, let me tell you that there are many more functions, and you
can also find an introductory
vignette.
Let us change our traditional attitude to the construction of programs: Instead of imaging that our main task is to instruct a computer what to do, let us concentrate rather on explaining to human beings what we want a computer to do.
Donald Knuth, Literate Programming


PSALMS 77
A psalm written by Asaph for Jeduthun, the choir director
1 I will cry out to God;
I will cry aloud to him, and he will listen to me.
2 At the time that I had trouble, I prayed to the Lord;
all during the night I lifted up my hands while I prayed,
but nothing could comfort me.
3 When I thought about God, I despaired;
when I meditated about him, I grew discouraged.
4 All during the night he prevented me from sleeping;
I was so worried that I did not know what to say.
5 I thought about days that had passed;
I remembered what had happened in previous years.
6 I spent all the night thinking about things;
I meditated, and this is what I asked myself:
7 "Will the Lord always reject me?
Will he never again be pleased with me?
8 Has he stopped faithfully loving me?
Will he not do for me what he promised to do?
9 God promised to act mercifully toward me; has he forgotten that?
Because he is angry with me, has he decided not to be kind to me?"
10 I said, "What causes me to be sad the most is that
it seems that God, who is greater than any other god, is no longer using his power for us."
11 But then, Yahweh, I recall your great deeds;
I remember the wonderful things that you did in the past.
12 I meditate on all that you have done,
and I think about your mighty acts.
13 God, everything that you do is amazing;
there is certainly no god who is great like you are!
14 You are God, the one who performs miracles;
you showed to the people of many people groups that you are powerful.
15 By your power you rescued your people from Egypt;
you saved those who were descendants of Jacob and his son Joseph.
16 It was as though the waters saw you and became very afraid,
and even the deepest part of the water shook.
17 Rain poured down from the clouds;
it thundered very loudly,
and lightning flashed in all directions.
18 Thunder crashed in the whirlwind—your voice!
Lightning lit up,
and the earth shook violently.
19 Then you walked through the sea
in a path that you made through the deep water,
but your footprints could not be seen.
20 You led your people as a shepherd leads his flock of sheep
while Moses and Aaron were the leaders of your people.


--- title: New Technology Study Group date: '2004-12-06T06:37:00.000-05:00' author: John tags: - General modified_time: '2010-09-04T16:34:12.502-04:00' blogger_id: tag:blogger.com,1999:blog-2811308028656623966.post-2000179777893748963 blogger_orig_url: http://pragmatic-software.blogspot.com/2004/12/new-technology-study-group.html ---
This Wednesday we will be covering virtual machine technology from 5:00 p.m. until 6:00 p.m. I will give an overview of Virtual PC 2004 and Virtual Server 2005 as well as drilling down on various details and how I use them. Since I've only ever tried the VM Ware demos a couple of times, I would be interested if somebody who's using their products could offer comparisons and contrasts to VPC.
Looking forward to seeing everybody then. Don't forget to bring a “non-dessert“ dish and stay for the annual holiday pot-luck gathering.


This project is a fork of the ReScript compiler with a focus on compatibility with the wider OCaml ecosystem. A small write-up with more details on the motivation behind this project can be found in this blog post.
You will need esy package manager to
obtain OCaml and Melange sources.
See esy
installation instructions here.
Clone the basic template: https://github.com/melange-re/melange-basic-template
Run esy
from the command line to install all dependencies.
Run esy x node _build/default/src/Main.bs.js
to see the result of the script running.