text:
Welcome to the website of the Needham Public Schools! I hope you will find the information you need to learn about the people, programs, and activities that make our school system a dynamic learning experience for all students.
The Needham Public Schools has identified the core values of Scholarship, Citizenship, Community, and Personal Growth as being fundamental to our mission. These values provide a foundation for educating our children and support district goals and plans. I encourage you to review our 2019 Performance Report to better understand the beliefs and goals that guide our work with Needham's students.
Through this website, the Needham Public Schools commits itself to share timely information to students, parents, staff, and community members who depend on updated and helpful information and assistance. I invite you to join the superintendent's listserve to receive periodic emails about various school programs and events. Please join now!
Additionally, the Needham School Committee wishes to hear from members of the community about issues and concerns critical to the schools and its many programs. You may contact them at firstname.lastname@example.com and ask a question or make a comment.
We are proud of our school district and are happy to share information about the Needham Public Schools with you.


text:
Injury surveillance guidelines
Injuries, unintentional or intentional, constitute a major public health problem, killing more than 5 million people worldwide each year and causing many more cases of disability. People from all economic groups suffer fatal injuries, but death rates due to injury tend to be higher in those in the lower income groups. The poor are also less likely to make a full recovery following an injury.
Historically, the injury problem has been neglected, largely because injuries were viewed as accidents or random events. Today, however, injuries are known to be preventable. The use of seat belts, car seats for children, designated drivers, fencing around water areas, flame-resistant clothing and smoke detectors, together with early childhood education and family counselling to prevent violence have all proved to be effective measures for preventing injuries.
To date, injury prevention has tended to be an issue only in wealthier countries. The highest rates of death and permanent disability due to injury are, however, currently found in the poorer nations; it is these countries therefore that have the most urgent need for prevention strategies that are appropriate, cost-efficient and effective. In this context, "appropriate" means taking into account the complexities of the problem, the availability of resources and, furthermore, what strategies have been shown to work elsewhere.
To develop effective prevention strategies, most countries need better information. In particular, countries need to know about the numbers and types of injuries that occur and about the circumstances in which those injuries occur. Such information will indicate how serious the injury problem is, and where prevention measures are most urgently needed.
To assist, the Injuries and Violence Prevention Department of the World Health Organization (WHO) has collaborated with agencies from all continents to develop the tools needed for collecting data on injuries. The first product of this collaboration is the International Classification for External Causes of Injuries (ICECI), a detailed classification scheme for injuries that complements the existing International Classification of Diseases (ICD). It provides guidance, to both dedicated researchers and practitioners in the field, on how to classify and code data on injuries according to agreed international standards.
The present manual is also aimed at researchers and practitioners and its purpose is to provide practical advice on how to develop information systems for the collection of systematic data on injuries. It is the result of collaboration between experts from the WHO and the US Centers for Disease Control and Prevention (CDC) who work, or have worked, in settings where resources, including trained staff and electronic equipment, are limited. In addition, experts from other organizations in more than 50 countries have commented on draft versions of the manual. The work has taken two years to complete.
Although the primary objective was to produce a manual applicable to all settings, it is hoped that the manual will be especially useful to those in settings where resources are scarce. The manual thus shows how to set up systems for collecting, coding and processing data even if there is no electronic equipment, few staff, and/or staff with many other demands on their time and no expertise in research. We hope it will lead to better information on injuries and, in turn, to prevention programmes which reduce the incidence of death and disability due to injuries.
Dr Etienne Krug
Director, Injuries and Violence Prevention Department
World Health Organization

subset: commoncrawl


text:
If finding a job is tough for any young adult in South Florida these days, imagine the challenge for those with autism and other developmental disabilities.
The Dan Marino Foundation is starting a program to reduce those hurdles.
A new jobs-development program will allow high school graduates with autism and other developmental disabilities to obtain college-level skills and internships to secure work.
The state has allocated $1 million for the venture through the Agency for Persons with Disabilities, which now is focusing more on preparing the disabled for the workplace.
The foundation, launched by Miami Dolphins football star Dan Marino after the birth of his autistic son Michael, expects to help 40 to 60 young adults in the new program in its first year, which will start in October. Applications for the program are available online at http://www.marinocampus.org. The deadline for applying is July 26.
The program should expand to 120 to 150 students starting October 2014, after the nonprofit completes refurbishing and licensing of its downtown Fort Lauderdale facilities, said Jordan T. Knab, dean of the Dan Marino Campus at 400 N. Andrews Ave.
Studies show an urgent need for the training. In Broward, nearly half of intellectually-disabled students that complete high school are neither employed nor attending post-secondary classes a year after they finish high school, Knab said.
The new program will feature four tracks for eligible Florida residents ages 18 to 28: work-study, entrepreneurship, information technology and hospitality. Each includes personalized instruction, mentoring and internships aimed to help the students secure work for at least 20 hours a week.
The entrepreneurship track, for example, might include classes on how to sell a student's artwork. The IT track might include Microsoft certification to help students get jobs checking for errors in software code.
"Even for jobs in warehouses, people now need to know basic applications and programs," Knab said.
Training also will include work on social skills, often a difficult area for the autistic. Teachers and older peers will help students with skills such as what's appropriate to communicate without being too honest, or how to recognize sarcasm and innuendo. The autistic tend to understand language literally, he said.
Training also will use specialized software. Virtual Reality software, for example, lets students simulate interviews, so they can practice how to respond to questions. That allows you "to do it over and over again — without wearing out the staff," said Knab.
Tamarac resident Michelle Canazaro, 24, wishes she had access to such customized help.
Diagnosed with autism at age 10, the high school graduate became the only autistic student in her class at Atlantic Technical College in Coconut Creek. She earned a certificate there as an administrative assistant, mastering such skills as typing, filing and Microsoft programs.
But finding a job proved difficult. She worked for almost a year at a Goodwill Industries warehouse scanning documents, then spent months seeking something else.
Now she is thrilled with her first office job — working at the Dan Marino Foundation. She said she feels more confident, less shy, more able to make eye contact and more open to share since she found work in an office, doing what she likes.
"I think they will have it a lot easier than me. I did it on my own," said Canazaro of students in the new program. "They'll be in a nice environment, using new computers with touchscreens and learning transportation a lot easier than I did.
"It will not feel like you were left behind."
The foundation began offering summer employment programs for the developmentally disabled in 2008, working with local companies, government offices and nonprofits and placing more than 300 youth in summer job since then. The youth worked for 30 hours a week in jobs that ranged from retail to hotels, government to restaurants, said Susan Morantes, admissions director for the Marino campus.
It then expanded its outreach for job placement year-round, with financial help through the Children's Services Council of Broward County. But the need for training for good jobs was clear, she said.
The foundation is investing $10 million to buy and develop its new site in downtown Fort Lauderdale, chosen in part because of the proximity to a main bus terminal and ease of transportation for students. When licensing is complete, it intends to be called the Dan Marino College, said Morantes.
firstname.lastname@example.com, 305-810-5009


text:
- Special Considerations
MQSeries::QueueManager - OO interface to the MQSeries Queue Manager
use MQSeries qw(:functions);
use MQSeries::QueueManager;
# Simplest, trivial usage
my $qmgr = MQSeries::QueueManager->
new(QueueManager => 'some.queue.manager' ) ||
die("Unable to connect to queue manager\n");
# The best way to do error checking. Handle the object
# instantiation and connection to the queue manager independently.
my $qmgr = MQSeries::QueueManager->new
QueueManager => 'some.queue.manager',
AutoConnect => 0,
) || die "Unable to instantiate MQSeries::QueueManager object\n";
$qmgr->Connect() ||
die("Unable to connect to queue manager\n" .
"CompCode => " . $qmgr->CompCode() . "\n" .
"Reason => " . $qmgr->Reason() .
" (", MQReasonToText($qmgr->Reason()) . ")\n");
# Advanced usage. Enable the connection timeout, and connection
# retry logic.
my $qmgr = MQSeries::QueueManager->new
QueueManager => 'some.queue.manager',
AutoConnect => 0,
ConnectTimeout => 120,
RetryCount => 60,
RetrySleep => 10,
) || die "Unable to instantiate MQSeries::QueueManager object\n";
$qmgr->Connect() ||
die("Unable to connect to queue manager\n" .
"CompCode => " . $qmgr->CompCode() . "\n" .
"Reason => " . $qmgr->Reason() .
" (", MQReasonToText($qmgr->Reason()) . ")\n";
# Avoid a channel table file or MQSERVER variable and specify
# the client connect options directly.
my $qmgr = MQSeries::QueueManager->new
QueueManager => 'some.queue.manager',
ClientConn => { 'ChannelName' => 'FOO',
'TransportType' => 'TCP', # Default
'ConnectionName' => "hostname(1414)",
'MaxMsgLength' => 16 * 1024 * 1024,
) || die("Unable to connect to queue manager\n");
# Put a message under syncpoint, then commit/backout (in most cases,
# a Put is done using an MQSeries::Queue object instead)
my $msg = MQSeries::Message->new(Data => $msg_data);
$qmgr->Put1(Message => $msg,
Queue => 'SOME.QUEUE.NAME',
Sync => 1,
if (some_other_work_succeeds()) {
} else {
# MQ v7: perform multiple asynchronous Put1 operations,
# then check if any of them ran into issues. Asnchronous
# puts can also be performed from a queue objects, and are
# allowed with syncpoint.
foreach my $msg_data (@data_to_be_sent) {
my $msg = MQSeries::Message->new(Data => $msg_data);
$qmgr->Put1(Message => $msg,
Queue => 'SOME.QUEUE.NAME',
PutMsgOpts => { Options => (MQSeries::MQPMO_ASYNC_RESPONSE |
my $status = $qmgr->StatusInfo();
The MQSeries::QueueManager object is an OO mechanism for connecting to an MQSeries queue manager, and/or opening and inquiring a queue manager object.
This module is used together with MQSeries::Queue, MQSeries::Message and MQSeries::Properties, and the other MQSeries::* modules. These objects provide a simpler, higher level interface to the MQI.
This module also provides special support for connect timeouts (for interrupting MQCONNX() calls that may hang forever), as well as connect retry logic, which will retry failed MQCONNX() calls for a specific list of reason codes.
See the "Special Considerations" section for a discussion of these advanced, but powerful, features.
The constructor takes a hash as an argument, with the following keys:
Key Value
=== =====
QueueManager String
Carp CODE reference
AutoConnect Boolean
AutoCommit Boolean
ConnectTimeout Numeric
ConnectTimeoutSignal String
GetConvert CODE reference
PutConvert CODE reference
RetrySleep Numeric
RetryCount Numeric
RetryReasons HASH Reference
CompCode Reference to Scalar Variable
Reason Reference to Scalar Variable
- QueueManager
This is simply the name of the Queue Manager to which to connect. This is passed directly to the MQCONNX() call as-is.
Normally, this is simply the name of the queue manager to which you wish to connect, but if the "default" queue manager is to be used, then this can either be the empty string "", or simply omitted entirely.
- Carp
This key specifies a code reference to a routine to replace all of the carp() calls in the API, allowing the user of the API to trap and handle all of the error message generated internally, or simply redirect how they get logged.
For example, one might want everything to be logged via syslog:
sub MyLogger { my ($message) = @_; foreach my $line (split(/\n+/, $message)) { syslog("err", $line); } }
Then, one tells the object to use this routine:
my $qmgr = MQSeries::QueueManager->new ( QueueManager => 'some.queue.manager', Carp => \&MyLogger, ) || die("Unable to connect to queue manager.\n");
The default, as one might guess, is Carp::carp();
- AutoConnect
This is an optional parameter that defaults to true. If the value of this argument is false, then the constructor will not automatically call the
Connect()method, allowing the developer to call it explicitly, and thus independently error check object instantiation and the connection to the queue manager. See the section on Error Handling in Special Considerations.
- AutoCommit
If the value of this argument is true, then pending transactions will be committed during object destruction. If it is false, then pending transactions will be backed out before disconnecting from the queue manager during object destruction.
See the section on "AutoCommit" in "Special Considerations".
- ClientConn
For client connections, the connection details must be provided somehow. By default, the client channel table file (AMQCLCHL.TAB) or MQSERVER environment variable is used. This optional parameter allows you to specify the details in your code (possibly read from some sort of configuration file or directory service).
ClientConnparameter is a hash reference of which the
MaxMsgLengthare most relevant. See the description of the
MQCDparameter structure in the Application Programming Reference guide for details on the other fields.
- SSLConfig
For client connections using SSL, the SSL key repository must be specified. Than can be done usign the
MQSSLKEYRenvironment variable, but also using the
MQSCOdata structured specified on the MQCONNX. The
SSLConfigparameters provides a way to specify the key repositority, and overrides the
MQSSLKEYRenvironment variable. The example below shows how it can be used:
my $qmgr = MQSeries::QueueManager-> new(QueueManager => 'some.queue.manager', SSLConfig => { 'KeyRepository' => '/var/mqm/ssl/key' }, );
SSLConfigoption is usually combined with the
ClientConnparameter documented above.
- SecurityParms
In MQ v6 and above, security parameters can be specified. The example below shows how it can be used:
my $qmgr = MQSeries::QueueManager-> new(QueueManager => 'some.queue.manager', SecurityParms => { 'AuthenticationType' => MQSeries::MQZAT_INITIAL_CONTEXT, 'CSPUserId' => $userid, 'CSPPassword' => $passwd, }, );
By default, no authentication takes place, and channel security exits can be used.
SecurityParmsparameter is a hash reference with members
CSPPassword. See the description of the
MQCSPparameter structure in the Application Programming Reference guide for details on the other fields.
- ConnectTimeout
If this value is given, it must be a positive integer. This is the time, in seconds, in which an MQCONNX() must complete before the MQI call will be interrupted. The default value is zero, which means the MQCONNX() call will not be interrupted.
There are outage scenarios, in the experience of the author, where the MQCONNX() call will block indefinitely and never return. This happens when a queue manager is "hung", and completely unresponsive, in some cases.
This feature should be used with caution, since it is implemented using a SIGALRM handler, and the alarm() system call. See the section on "Connection Timeouts" in "Special Considerations".
Attempts to use this feature on unsupported platforms that do not support signals will generate a warning, and be silently ignored.
- ConnectTimeoutSignal
By default, the ConnectTimeout mechanism is implemented using a signal handler for SIGUSR1, but the signal used to interrupt the MQCONNX() call can be customized using this attribute.
The signal handler installed by this API is done using local(), so the effects of the handler will only override the applications handler during the call to MQCONNX().
The string used for this attribute should be the short hand name of the signal, for example, to set the signal to SIGUSR2:
my $qmgr = MQSeries::QueueManager->new ( QueueManager => 'FOO', ConnectTimeout => 300, ConnectTimeoutSignal => 'USR2', ) || die;
- RetryCount
This is an integer value, and specifies the maximum number of times to retry the connection, before failing. The default is 0.
- RetrySleep
This is an integer value, and specified the number of seconds to sleep between retries. The maximum timeout for an outage is the product of the RetrySleep and RetryCount parameters. The default is 0.
- PutConvert, GetConvert
These are CODE references to subroutines which are used to convert the data in a MQSeries::Message object prior to passing it to the MQPUT MQI call, or convert the data retreived from the queue by the MQGET MQI call before inserting it into a MQSeries::Message object.
These must be CODE references, or the new() constructor will fail. A properly written conversion routine will be passed a single scalar value and return a single scalar value. In the event of an error, the conversion routine should return 'undef'.
The example shown in the synopsis shows how one might use a pair of home grown encryption and decryption subroutines to keep data in clear text in core, but encrypted in the contents of the message on the queue. This is probably not the most hi-tech way to encrypt MQSeries data, of course.
The MQSeries::Message::Storable class provides an example of how to subclass MQSeries::Message to have this type of conversion handled transparently, in the class definition.
- CompCode, Reason
When the constructor encounters an error, it returns nothing, and you can not make method calls off of a non-existent object. Thus, you do not have access to the CompCode() and Reason() method calls. If you want to extract these values, you will have to pass a scalar reference value to the constructor, for example:
my $CompCode = MQSeries::MQCC_FAILED; my $Reason = MQSeries::MQRC_UNEXPECTED_ERROR; my $qmgr = MQSeries::QueueManager->new ( QueueManager => 'some.queue.manager', CompCode => \$CompCode, Reason => \$Reason, ) || die "Unable to connect to QueueManager: CompCode => $CompCode, Reason => $Reason\n";
But, this is ugly (authors' opinion, but then, we get to write the docs, too). Use the
AutoConnectoption instead to separate
- RetryCount
The call to MQCONNX() (implemented via the Connect() method), can be told to retry the failure for a specific list of reason codes. This functionality is only enabled if the RetryCount is non-zero. By default, this value is zero, and thus retries are disabled.
- RetrySleep
This argument is the amount of time, in seconds, to sleep between subsequent retry attempts.
- RetryReasons
This argument is either an ARRAY or HASH reference indicating the specific reason code for which retries will be attempted. If given as an ARRAY, the elements are simply the reason codes, and if given as a HASH, then the keys are the reason codes (and the values ignored).
This method takes no arguments, and merely calls MQCONNX() to connect to the queue manager. The various options are all set via the MQSeries::QueueManager constructor (see above).
This method is called automatically by the constructor, unless the
AutoConnect argument is specified and set to false.
Note that this is a new method as of the 1.06 release, and is provided to enable more fine grained error checking. See the ERROR HANDLING section.
This method takes no arguments, and merely calls MQDISC() to disconnect from the queue manager.
It is important to note that normally, this method need not be called, since it is implicitly called via the object destructor. If the Disconnect() call errors need to be handled, then it can be done explicitly. See the ERROR HANDLING section.
This method takes no arguments, and merely calls MQBACK. It returns true on success, and false on failure.
This method takes no arguments, and merely calls MQCMIT. It returns true on success, and false on failure.
This method wraps the MQPUT1 call. The arguments are a hash, with the following key/value pairs (required keys are marked with a '*'):
Key Value
=== =====
Message* MQSeries::Message object
Queue String, or ARRAY reference (distribution list)
QueueManager String
ObjDesc HASH reference
PutMsgOpts HASH Reference
PutMsgRecs ARRAY Reference
Sync Boolean
PutConvert CODE reference
Properties HASH Reference or MQSeries::Properties object
The return value is true or false, depending on the success of the underlying MQPUT1() call. If the operation fails, then the Reason() and CompCode() methods will return the appropriate error codes, if the error was an MQSeries error.
If a PutConvert() method failed before the actual MQPUT1() function was called, then the Reason() code will be MQRC_UNEXPECTED_ERROR, and the PutConvertReason() will be true. All of the PutConvert() methods supplied with the various MQSeries::Message subclasses in this distribution will generate some form of error via carp (or the Carp attribute of the objects, if overridden).
- Message
This argument is the message to be placed onto the queue. The value must be an MQSeries::Message object.
- Queue
This is the queue, or list of queue if using a distribution list, to which to put the message. If it is a single queue, then this value is a string, naming the queue. If it is a distribution list, then this value is an ARRAY reference, listing the target queues. There are three ways to specify the list.
The list may be a simple array of strings:
$qmgr->Put1( Message => $message, Queue => [qw( QUEUE1 QUEUE2 QUEUE3 )], )
or, it can be an array of arrays, each one specifying the queue and queue manager name of the target queue:
$qmgr->Put1( Message => $message, Queue => [ [qw( QUEUE1 QM1 )], [qw( QUEUE2 QM2 )], [qw( QUEUE3 QM3 )], ], )
or finally, it can be an array of hash references, each naming the queue and queue manager:
$qmgr->Put1( Message => $message, Queue => [ { ObjectName => 'QUEUE1', ObjectQMgrName => 'QM1', }, { ObjectName => 'QUEUE2', ObjectQMgrName => 'QM2', }, { ObjectName => 'QUEUE3', ObjectQMgrName => 'QM3', }, ], )
In the latter two cases, the queue manager names are optional. Which method to use is largely a choice of style.
- QueueManager
Note that this key is only relevant when not using distribution lists. This identifies the queue manager of the target queue, to which the message is being written. This is an optional key.
- ObjDesc
The entire ObjDesc structure passed to the underlying MQPUT1() call can be specified via this key. In this case, the Queue and/or QueueManager are simply ignored. Use of this key would be considered somewhat non-conventional, as the OO API is attempting to hide the complexity of these underlying data structures.
However, this allows the developer access to the entire ObjDesc, if necessary.
- PutMsgOpts
This argument forces the developer to specify the complete PutMsgOpts structure, and will override the use of convenience flags, such as Sync. Similar to the use of ObjDesc, this is non-conventional, but provided to allow access to the complete API, if necessary.
- PutMsgRecs
This argument is relevant only when using distribution lists.
The value is an ARRAY reference, specifying the put message records for the individual queues in the distribution list. Normally, these are specified as part of the PutMsgOpts, but this API attempts to hide the complexity of the PutMsgOpts structure from the user.
When using distribution lists, PutMsgRecs are often necessary to control how the MsgId, CorrelId, and three other specific fields in the MsgDesc are handled.
For details, see the MQPUT() and MQPUT1() documentation in MQSeries(3).
- Sync
This is a flag to indicate that the Syncpoint option is to be used, and the message(s) not committed to the queue until an MQBACK or MQCOMM call is made. These are both wrapped with the Backout() and Commit() methods respectively.
The value is simply interpreted as true or false.
- PutConvert
See the new() constuctor documentation for the verbose details. This can be specified for just the Put1() method in the event that a converted message format needs to be put to a queue on a MQSeries::QueueManager object for which default conversion routines have not been installed.
If you have a QueueManager for which all of the Queue use the same message formats, then you can simply specify the PutConvert and GetConvert CODE references once, when the MQSeries::QueueManager object is instantiated. Alternately, you may be specifying the conversion routined for only a few specific queues. In the latter case, it is entirely possible that you will need to specify PutConvert when performing an MQPUT1 MQI call via the Put1() method.
- Properties
This parameter is only supported if the module has been compiled with the MQ v7 libraries. It allows properties to be specified with the message. This can be used for selectors or for publish/subscribe.
The Properties parameter can be a hash reference or an MQSeries::Properties object. If it is a hash reference, it can be specified in two ways: as key/value pairs, or with property options.
Specifying the proeprties as key/value pairs is straightforward:
Properties => { 'perl.MQSeries.label' => 'important', 'perl.MQSeries.customer' => 'BigCompany', }
In this case, the property values are specified to MQ as strings, which is usually the correct thing to do. However, property options can be specified if so desired:
Properties => { 'perl.MQSeries.label' => 'important', 'perl.MQSeries.price' => { Type => MQSeries::MQTYPE_FLOAT64, Value => '8.99', }, 'perl.MQSeries.count' => { Type => MQSeries::MQTYPE_INT32, Value => 12, }, }
In addition to Name and Value, you can also specify Encoding and CCSID.
This method returns status information and is only supported if the module has been compiled for MQ v7. It returns information on previous asynchronous put operations, which can be queue manager Put1 operations or queue Put operations.
The StatusInfo method takes no parameters and returns a hash reference matching the MQSTS data structure. (See the Application Programming Reference for details, or run Data::Dumper on the return value.)
This method returns the MQI Completion Code for the most recent MQI call attempted.
This method returns the MQI Reason Code for the most recent MQI call attempted.
This method returns a true of false value, indicating if a PutConvert method failed or not. Similar to the MQRC reason codes, false indicates success, and true indicates some form of error. If there was no PutConvert method called, this will always return false.
This method call returns an array reference, and each member of the array is a Response Record returned as a possible side effect of calling a Put1() method to put a message to a distribution list.
The individual records are hash references, with two keys: CompCode and Reason. Each provides the specific CompCode and Reason associated with the put of the message to each individual queue in the distribution list, respectively.
This method takes two optional (but typically not necessary) arguments, and calls MQOPEN() on the Queue Manager, in order to enable the Inquire method. The arguments are a has, with the following keys:
Key Value
=== =====
Options MQOPEN 'Options' Values
ObjDesc HASH reference (MQOD structure)
The Options default to MQOO_INQUIRE|MQOO_FAIL_IS_QUIESCING, which is usually correct. Note that you can not call MQSET() on a queue manager, so MQOO_SET is meaningless, as are most of the other options. Advanced users can set this as they see fit.
The ObjDesc argument is also not terribly interesting, as you most of the values have reasonable defaults for a queue manager. Again, the API supports advanced users, so you can set this as you see fit. The keys of the ObjDesc hash are the fields in the MQOD structure.
This method returns a true of false values depending on its success or failure. Investigate the CompCode() and Reason() for MQSeries-specific error codes.
This method takes no arguments, and merely calls MQCLOSE() to close the actual queue manager object. This is meaningful only if the queue manager has been Open()ed for use by Inquire().
It is important to note that normally, this method need not be called, since it is implicitly called via the object destructor, if necessary. If the Close() call errors need to be handled, then it can be done explicitly. See the ERROR HANDLING section.
This method is an interface to the MQINQ() API call, however, it takes more convenient, human-readable strings in place of the C macros for the selectors, as well as supports more readable strings for some of the data values as well.
For example, to query the Platform and DeadLetterQName of a queue manager:
my %qmgrattr = $qmgr->Inquire( qw(Platform DeadLetterQName) );
The argument to this method is a list of "selectors", or QueueManager attributes, to be queried. The following table shows the complete set of possible keys, and their underlying C macro.
Note that this list is all-inclusive, and that many of these are not supported on some of the MQSeries releases or platforms. Consult the IBM documentation for such details.
Key Macro
=== =====
AccountingConnOverride MQIA_ACCOUNTING_CONN_OVERRIDE,
AccountingInterval MQIA_ACCOUNTING_INTERVAL,
ActivityRecording MQIA_ACTIVITY_RECORDING,
AlterationDate MQCA_ALTERATION_DATE,
AlterationTime MQCA_ALTERATION_TIME,
AdoptNewMCACheck MQIA_ADOPTNEWMCA_CHECK,
AdoptNewMCAType MQIA_ADOPTNEWMCA_TYPE,
AlterationTime MQCA_ALTERATION_TIME,
AuthorityEvent MQIA_AUTHORITY_EVENT,
BridgeEvent MQIA_BRIDGE_EVENT,
ChannelAutoDef MQIA_CHANNEL_AUTO_DEF,
ChannelAutoDefEvent MQIA_CHANNEL_AUTO_DEF_EVENT,
ChannelAutoDefExit MQCA_CHANNEL_AUTO_DEF_EXIT,
ChannelEvent MQIA_CHANNEL_EVENT,
ChannelInitiatorControl MQIA_CHINIT_CONTROL,
ChannelMonitoring MQIA_MONITORING_CHANNEL,
ChannelStatistics MQIA_STATISTICS_CHANNEL,
ChinitAdapters MQIA_CHINIT_ADAPTERS,
ChinitDispatchers MQIA_CHINIT_DISPATCHERS,
ChinitServiceParm MQCA_CHINIT_SERVICE_PARM,
ChinitTraceAutoStart MQIA_CHINIT_TRACE_AUTO_START,
ChinitTraceTableSize MQIA_CHINIT_TRACE_TABLE_SIZE,
ClusterSenderMonitoringDefault MQIA_MONITORING_AUTO_CLUSSDR,
ClusterSenderStatistics MQIA_STATISTICS_AUTO_CLUSSDR,
ClusterWorkLoadData MQCA_CLUSTER_WORKLOAD_DATA,
ClusterWorkLoadExit MQCA_CLUSTER_WORKLOAD_EXIT,
ClusterWorkLoadLength MQIA_CLUSTER_WORKLOAD_LENGTH,
CLWLMRUChannels MQIA_CLWL_MRU_CHANNELS,
CLWLUseQ MQIA_CLWL_USEQ,
CodedCharSetId MQIA_CODED_CHAR_SET_ID,
CommandEvent MQIA_COMMAND_EVENT,
CommandInputQName MQCA_COMMAND_INPUT_Q_NAME,
CommandLevel MQIA_COMMAND_LEVEL,
CommandServerControl MQIA_CMD_SERVER_CONTROL,
ConfigurationEvent MQIA_CONFIGURATION_EVENT,
CPILevel MQIA_CPI_LEVEL,
CreationDate MQCA_CREATION_DATE,
CreationTime MQCA_CREATION_TIME,
DeadLetterQName MQCA_DEAD_LETTER_Q_NAME,
DefXmitQName MQCA_DEF_XMIT_Q_NAME,
DistLists MQIA_DIST_LISTS,
DNSGroup MQCA_DNS_GROUP,
ExpiryInterval MQIA_EXPIRY_INTERVAL,
IGQUserId MQCA_IGQ_USER_ID,
IGQPutAuthority MQIA_IGQ_PUT_AUTHORITY,
InhibitEvent MQIA_INHIBIT_EVENT,
IntraGroupQueueing MQIA_INTRA_GROUP_QUEUING,
IPAddressVersion MQIA_IP_ADDRESS_VERSION,
ListenerTimer MQIA_LISTENER_TIMER,
LocalEvent MQIA_LOCAL_EVENT,
LoggerEvent MQIA_LOGGER_EVENT,
LUGroupName MQCA_LU_GROUP_NAME,
LUName MQCA_LU_NAME,
LU62ARMSuffix MQCA_LU62_ARM_SUFFIX,
LU62Channels MQIA_LU62_CHANNELS,
MaxActiveChannels MQIA_ACTIVE_CHANNELS,
MaxChannels MQIA_MAX_CHANNELS,
MaxHandles MQIA_MAX_HANDLES,
MaxMsgLength MQIA_MAX_MSG_LENGTH,
MaxPriority MQIA_MAX_PRIORITY,
MaxPropertiesLength MQIA_MAX_PROPERTIES_LENGTH,
MaxUncommittedMsgs MQIA_MAX_UNCOMMITTED_MSGS,
MQIAccounting MQIA_ACCOUNTING_MQI,
MQIStatistics MQIA_STATISTICS_MQI,
MsgMarkBrowseInterval MQIA_MSG_MARK_BROWSE_INTERVAL,
OutboundPortMax MQIA_OUTBOUND_PORT_MAX,
OutboundPortMin MQIA_OUTBOUND_PORT_MIN,
Parent MQCA_PARENT,
PerformanceEvent MQIA_PERFORMANCE_EVENT,
Platform MQIA_PLATFORM,
PubSubMaxMsgRetryCount MQIA_PUBSUB_MAXMSG_RETRY_COUNT,
PubSubMode MQIA_PUBSUB_MODE,
PubSubNPInputMsg MQIA_PUBSUB_NP_MSG,
PubSubNPResponse MQIA_PUBSUB_NP_RESP,
PubSubSyncPoint MQIA_PUBSUB_SYNC_PT,
QMgrDesc MQCA_Q_MGR_DESC,
QMgrIdentifier MQCA_Q_MGR_IDENTIFIER,
QMgrName MQCA_Q_MGR_NAME,
QSharingGroupName MQCA_QSG_NAME,
QueueAccounting MQIA_ACCOUNTING_Q,
QueueMonitoring MQIA_MONITORING_Q,
QueueStatistics MQIA_STATISTICS_Q,
ReceiveTimeout MQIA_RECEIVE_TIMEOUT,
ReceiveTimeoutMin MQIA_RECEIVE_TIMEOUT_MIN,
ReceiveTimeoutType MQIA_RECEIVE_TIMEOUT_TYPE,
RemoteEvent MQIA_REMOTE_EVENT,
RepositoryName MQCA_REPOSITORY_NAME,
RepositoryNamelist MQCA_REPOSITORY_NAMELIST,
SecurityCase MQIA_SECURITY_CASE,
SharedQQMgrName MQIA_SHARED_Q_Q_MGR_NAME,
SSLCRLNamelist MQCA_SSL_CRL_NAMELIST,
SSLCryptoHardware MQCA_SSL_CRYPTO_HARDWARE,
SSLEvent MQIA_SSL_EVENT,
SSLFipsRequired MQIA_SSL_FIPS_REQUIRED,
SSLKeyRepository MQCA_SSL_KEY_REPOSITORY,
SSLKeyResetCount MQIA_SSL_RESET_COUNT,
SSLTasks MQIA_SSL_TASKS,
StartStopEvent MQIA_START_STOP_EVENT,
StatisticsInterval MQIA_STATISTICS_INTERVAL,
SyncPoint MQIA_SYNCPOINT,
TCPChannels MQIA_TCP_CHANNELS,
TCPKeepAlive MQIA_TCP_KEEP_ALIVE,
TCPStackType MQIA_TCP_STACK_TYPE,
TCPName MQCA_TCP_NAME,
TraceRouteRecording MQIA_TRACE_ROUTE_RECORDING,
TreeLifeTime MQIA_TREE_LIFE_TIME,
TriggerInterval MQIA_TRIGGER_INTERVAL,
The return value of this method is a hash, whose keys are those given as arguments, and whose values are the queried queue manager attributes. In almost all cases, the values are left unmolested, but in the following case, the values are mapped to more readable strings.
- Platform (integer)
Key Macro === ===== MVS MQPL_MVS NSK MQPL_NSK OS2 MQPL_OS2 OS400 MQPL_OS400 UNIX MQPL_UNIX Win16 MQPL_WINDOWS Win32 MQPL_WINDOWS_NT
This method can be used to query the ObjDesc data structure. If no argument is given, then the ObjDesc hash reference is returned. If a single argument is given, then this is interpreted as a specific key, and the value of that key in the ObjDesc hash is returned.
NOTE: This method is meaningless unless the queue manager has been MQOPEN()ed via the Open() method.
Special Considerations
Normally, when you have pending transactions (i.e. MQPUT() and/or MQGET() calls with syncpoint), they will be automatically committed when MQDISC() is called. The MQSeries::QueueManager object destructor, in an attempt to make things easy for the programmer, automatically calls MQDISC() for you. The result is that transactions will be automatically committed when the application exits in any way that allows the object destruction to occur.
This behavior is somewhat counter intuitive, as you would expect transactions to be backed out unless you explicitly say otherwise (i.e. call MQCMIT(), or in this context, the Commit() method call).
As of the 1.12 release of the MQSeries Perl API, this behavior is under the control of the developer. The AutoCommit argument to the object constructor is a Boolean value that specifies whether AutoCommit is on or off. If enabled, then a pending transaction will be committed before disconnecting. If disabled, then the transaction will be backed out, and only if the backout succeeds will we cleanly disconnect.
NOTE: The default behavior was backwards compatible in the 1.12 release, meaning that AutoCommit is enabled by default. However, if you do not specify the AutoCommit behavior explicitly, then the automatic commit of a pending transaction will generate a warning when the object is destroyed. This is because we (the MQSeries Perl API authors) feel that depending on this functionality is dangerous.
ANOTHER NOTE: The default behavior did change with the 1.13 release, and AutoCommit now defaults to 0, not 1, making the intuitive behavior the default.
Connection Timeout Support
There are known outage scenarios wherein the queue manager will be in a "hung" state, where it is entirely unresponsive, but still up and running. Attempts to connect to such a queue manager can block indefinetely, with the MQCONNX() call never returning, until the queue manager is shutdown and restarted. Normally, applications can not trap this error, since they will be stuck in the MQCONNX() call, forever.
By setting the ConnectTimeout argument to the MQSeries::QueueManager constructor, a time limit on MQCONNX() can be imposed, and applications will be able to detect this situation, and take action, if so desired.
This functionality is implemented by forking a child process, which sleeps for the duration of the ConnectTimeout, and then sends a signal to the parent to interrupt the MQCONNX() call. If the MQCONNX() call succeeds before the timeout is reached, then the parent kill the child with the same signal.
By default, SIGUSR1 is used, and the handlers are installed locally, so there should be no conflict with any signal handlers installed by the application, unless you really need your own SIGUSR1 to be enabled during the MQCONNX() call. You can customize the signal used via the ConnectTimeoutSignal argument.
If the timeout occurs, it will be considered a retryable error. (See the next section).
NOTE: This functionality is only supported on platforms that support fork(), and signals, of course. Win32 is not supported, since it does not support sending signals to other processes.
Connection Retry Support
Normally, when MQCONNX() fails, the method that called it (Connect() or new()) also fails. It is possible to have the Connect() method retry the MQCONNX() call for a specific set of reason codes.
By default, the retry logic is disabled, but it can be enabled by setting the RetryCount to a non-zero value. The list of reason codes defaults to a few reasonable values, but a list of retryable codes can be specified via the RetryReasons argument.
You are probably wondering why this logic is useful for MQCONNX(). The choice of the default RetryReasons is not without its own reason.
Consider an application that loses its connection to its queue manager, and thus crashes and restarts. It may very well attempt to reconnect before the queue manager has recovered, and this support allows the application to retry the connection for a while, until it succeeds.
Alternately, consider an application that is started at boot time, possible in parallel with the queue manager. If the application comes up before the queue manager, the MQCONNX() call will fail. Retrying this initial connection will make the application startup more robust.
This makes it easier to have applications recover from queue manager failures, or that have more robust startup logic, but note that this retry logic only applies to the initial connection. Reconnecting at arbitrary points in the code is far more complex, and it left as a (painful) exercise to the reader.
Error Handling
Most methods return a true or false value indicating success of failure, and internally, they will call the Carp subroutine (either Carp::Carp, or something user-defined) with a text message indicating the cause of the failure.
In addition, the most recent MQI Completion and Reason codes will be available via the CompCode() and Reason() methods:
When distribution lists are used, then it is possible for a list of reason codes to be returned by the API. Normally, these are buried inside the ObjDesc strucure, but they are also available via the
method. In this case, the $queue->Reason() will always return MQRC_MULTIPLE_REASONS. The return value of the Reasons() method is an array reference, and each array item is a hash reference with two keys: CompCode and Reason. These correspond, respectively, with the CompCode and Reason associated with the individual queues in the distribution list.
For example, the Reason code associated with the 3rd queue in the list would be:
In the case of the constructor new(), which returns nothing when it fails, these methods are not available. Most applications will not need to handle the specific CompCode and Reason when the instantiation fails, but if necessary, these can be obtained in one of two ways.
The older method, which is supported for backwards compabitility but strongly discouarged, is to pass references to scalar variables to new(). See the new() documentation above for more details.
The newer method would be to explicitly call the Open() method, and error check it yourself. This will mean that the constructor will now fail only if there is an error processing the constructor arguments, as opposed to an error in the MQSeries infrastructure.
Some examples should make this clear.
The simplest way to create an MQSeries::QueueManager object is:
my $qmgr = MQSeries::QueueManager->new
QueueManager => 'some.queue.manager',
) || die;
But in this case, the connection to the queue manager could fail, and your application will not be able to determine why.
In order to explicitly have access to the CompCode and Reason one would do the following:
my $qmgr = MQSeries::QueueManager->new
QueueManager => 'some.queue.manager',
AutoConnect => 0,
) || die "Unable to instantiate MQSeries::QueueManager object\n";
# Call the Connect method explicitly
unless ( $qmgr->Connect() ) {
die("Connection to queue manager failed\n" .
"CompCode => " . $qmgr->CompCode() . "\n" .
"Reason => " . $qmgr->Reason() . "\n");
Conversion Precedence
Once you have read all the MQSeries::* documentation, you might be confused as to how the various PutConvert/GetConvert method arguments and constructor arguments interact with the MQSeries::Message PutConvert() and GetConvert() methods.
The following is the precedence of the various places you can specify a PutConvert or GetConvert subroutine, from highest to lowest:
[A] Put(), Get(), and Put1() method arguments
[B] MQSeries::Message PutConvert() and GetConvert() methods
[C] MQSeries::Queue object defaults (set as arguments to new())
[C] MQSeries::QueueManager object defaults (set as arguments to new())
The cleanest way to code these is probably (and here your mileage will vary wildly with your tastes) to implement a subclass of MQSeries::Message which provides the appropriate GetConvert() and PutConvert() methods, one seperate class for each type of data conversion which is necessary.
Then the conversion happens "under the covers" when message objects of that class are put to or gotten from a queue.
MQSeries(3), MQSeries::Queue(3), MQSeries::Message(3), MQSeries::Properties(3)


text:
BOGOTA, Colombia - Colombia's main rebel movement said Friday that it has been holding a U.S. veteran of the Afghan conflict for nearly a month and offered to release him to a humanitarian commission.
The Revolutionary Armed Forces of Colombia, or FARC, identified the man as Kevin Scott Sutay and said in a statement on its website that it "captured" him on June 20 in the town of Retorno in the country's southeast.
No U.S. citizen had been reported missing in Colombia and a U.S. Embassy spokeswoman said she did not immediately have any information on the case.
The FARC did not explain the circumstances of Sutay's "capture" but said it proved that the U.S. has "mercenaries in the country." The rebels said Sutay had been in the nearby town of San Jose de Guaviare, where a Colombian military base is.
The U.S. military has long assisted Colombia's armed forces and at any given time has dozens of uniformed personnel as well as civilian contractors in the country.
Three U.S. military contractors held by the FARC for more than six years were rescued in 2008 along with former presidential candidate Ingrid Betancourt and a group of Colombian soldiers and police.
The FARC said Sutay identified himself as a 2010-11 veteran of the Afghan war who was an anti-mining and explosives specialist in the U.S. Navy until March of this year.
It said Sutay's passport says he was born in New York City. It published what it said was the passport number and date of issue. It also said he arrived in Colombia on June 8 after traveling through Mexico, Honduras, Costa Rica, Nicaragua and Panama.
The group said it would free Sutay as a good-faith gesture in light of peace talks going on in Cuba to end Colombia's nearly half-century-old conflict. Those talks began in November and the U.S. government has been wholly supportive of them.
The FARC asked that a commission be convened led by former Sen. Piedad Cordoba, who has in the past brokered prisoner releases, and include a delegate of the International Committee of the Red Cross.
Associated Press writer Frank Bajak in Lima, Peru, contributed to this report.


text:
As someone with 200 books within arms reach of my desk, without counting those in the bookshelf behind me, I obviously have a fondness for the written word. When reading a particular text closely however, what advantages are there to an electronic format over a physical format? While portability of an electronic text is often cited as an advantage, as the ereader can hold multiple books in a relatively small space, I believe that the true strength of an electronic text is the search functionality. With proper bookmarking, one can quickly refer to key sections of the text, and search for other similar passages.
This isn't really a new technique. Many popular academic texts have comprehensive indices and supplementary notes, and with a little work, one can mark passages in any physical book for later reference. In some ways, this actually helps one understand the text at a deeper level, as it requires a deeper engagement with the text.
Another key aspect of using an electronic text is an easy way to mark up the text, and make meaningful notes. While I don't usually mark up fiction I'm reading for fun, my academic texts have lines underlined, words circled and squared, and margin notes. This is something I've started recently, especially for passages I'm trying to more deeply understand.
If I was studying a book with an electronic edition, it would be great if I could highlight, or otherwise mark up the text, and have my selections exported to my word processor for essay writing, with full citation support in whatever format I require (MLA is the citation format I most often use for writing in the humanities). I would love for the pagination of the online version to reflect a print version, even if it is displayed in a different format on the device. Sadly, not all texts are available in ebook format, and when they are, there are often regional restrictions on availability. Robert Fagles' contemporary translation of The Odyssey is available on Amazon.ca in print, but the Kindle edition on Amazon.com is unavailable to Canadians. A sad state of affairs, and not likely Amazon's fault, as there are licensing restrictions put in place by the rights holders.
I'm pleased that a number of scholarly presses and consortiums are planning changes and advances in etext publishing, as reported on sites such as Library Journal. I'm generally pleased by what I've heard about these initiatives, I only wish they were available now.


text:
GARY BALLANCE has been chosen as the man to succeed Andrew Gale as captain of Yorkshire, the former skipper himself succeeding Jason Gillespie as first-team coach only last month.
The 27-year-old left-hander - who has endured a difficult tour of India after being dropped from the Test line-up after struggling in Bangladesh - will be in control on the field across all three formats in 2017 for Yorkshire.
The Yorkshire Post's cricket writer Chris Waters joins host Phil Harrison to discuss the appointment and why Yorkshire have pursued this option since Gale's move 'upstairs'.
• PLAY or download to any device
• Listen or subscribe free in iTunes
We also discuss the forthcoming fifth TYest match for England in Chennai against India and what has gone so wrong on the current tour which leaves Alastair Cook's team 3-0 down going into the fifth and final encounter with Virat Kohli's men before they head home for Christmas.
Is there a way back in for Yorkshire's new captain to prove he can still cut it international level and what ar England's middle-order options going forward. We also discuss how long Cook will continue as England captain, with the five-day team not in action again until July next year when South Africa visit England.
READ MORE; The Chosen One: Yorkshire captaincy too good to turn down for honoured batsman Ballance
READ MORE: Perfect match: Gary Ballance and Andrew Gale seen as ideal partnership for Yorkshire CCC
READ MORE: Gary Ballance - an insight into Yorkshire's new captain
Follow us on Twitter via @CricketTalkYPN or give us a like on our YPSport Facebook page HERE
Yorkshire Post - Sport
Get the latest news from The Yorkshire Post on social media
Like the Yorkshire Post Sport Facebook page
Follow @YPSport on Twitter
See our snaps at @YPSport on Instagram


text:
There's rich, and then there's the superyacht rich.
And yachts don't get any more super than Roman Abramovich's 553-foot long $1 billion plus flagship the Eclipse.
The Eclipse is currently docked at Manhattan's Pier 90.
The following photos show a bit of what more than $1 billion plus buys in a personal motor yacht these days.


text:
Imagine it's 1801 and the President of the United States, Thomas Jefferson, faces electronic media scrutiny and DNA analysis. Consider these facts and what might have been...
This is all true...
Thomas Jefferson had barely taken office as the third President of the United States when rumors of his questionable private life began to circulate in the Capitol. The source of these sordid tales was a former associate of Jefferson, a political opportunist named James Thomson Callender.
Callender had published a book in the summer of 1800, a virulent attack against Jefferson's Federalist enemies entitled The Prospect Before Us which was written with considerable assistance from Jefferson. The author of the Declaration of Independence said, "Such papers cannot fail to produce the best effect. They inform the thinking part of the nation."
But Jefferson found himself backing away from Callender when the diatribe went to press. It was more hysterical than factual, and Jefferson felt Callender's efforts might prove to be counterproductive.
The Federalists were furious. More than furious. Determined to stop anti-Federalist attacks by any means at their disposal. Callender was accused of treasonous behavior and charged under the Sedition Act. A bloodthirsty jury found him guilty, levied a heavy fine and threw him in a Richmond jail.
The imprisoned Callender found himself playing the role of martyr and, in fact, his incarceration no doubt helped Jefferson's election in the fall of 1800. Callender smelled opportunity.
The newly elected president immediately pardoned Callender but was wary of the man as well. Jefferson increasingly feared the dark side of his former friend and worried how Callender might attempt to exploit his new-found popularity.
Jefferson arranged for Callender's fine to be paid with privately collected funds from political friends, but Callender wanted more. Now he was demanding a political appointment (postmaster at Richmond) and Jefferson balked. Jefferson would not be blackmailed, although he was wide open to it. Jefferson had a secret and Callender was about to reveal it.
Her name was Sally Hemmings and she was the President of the United States' private property. She was a slave, 30 years younger than Jefferson, and the mother to four of his children.
Anyone who had ever seen the children could not help but notice the striking resemblance to the president. It was a relationship that the widowed Jefferson seemed incapable of stopping, even as rumors of his forbidden romance circulated locally. Now Callender went to the national media...
And what might have been (in a 21st Century world)?
The story first broke on the Drudge Report. Callender appeared on the Fox News show with his allegations and by the following morning every other news program in the country was carrying the scandalous tale. Jefferson's supporters appeared in his behalf, angrily denying the allegations. Jefferson's close friend Meriwether Lewis called Callender's expose' "filth, blasphemy, lies and pollution." Allies of the president lashed back at Callender with sordid tales of their own about the scandalmonger. But Jefferson remained silent on the issue.
Further details of the Hemmings Affair became public. Lurid stories of her trip to France with Mr. Jefferson in 1796 became common knowledge to the American people. Former friends and employees of the president came forth on national television to describe the remarkable physical similarities of the Hemmings children to Jefferson. Geraldo revealed that the oldest boy's name was Tom.
And now CNN produced John Walker. Once a neighboring farmer in Virginia, Walker came forth with new allegations. He claimed that years earlier while he was away from the plantation, Jefferson had, not once, but twice attempted to seduce his own wife. She had apparently rebuffed Jefferson's amorous advances. Still Walker demanded an apology from Jefferson. All the networks offered the president air time to state his case. He refused.
Federalists on Capitol Hill demanded that Jefferson make a full disclosure and legislators began to speak of the president's "fitness to hold office." In the South, pro-slavery politicians likened the president's relationship with Ms. Hemmings to having a relationship with a monkey. "Is this not like being with an animal?"
Finally the embattled Jefferson released a statement through his press secretary. It said simply:
"You will perceive that I plead guilty to one of their charges, that when young and single, I offered love to a handsome lady (Mrs. Walker). I acknowledge its incorrectness. It is the only one of the allegations founded in truth against me."
The media and the federalists went wild. "Incorrect"? screamed the opposition. He seduces a man's wife? His friend's wife? And he calls it "incorrect'? Where is the contrition? The regret?
And what of the Hemmings matter? On MSNBC Abigail Adams, wife of the former president, now raised the issue of DNA testing. "If Mr. Jefferson is truly not the father of these fair-skinned slaves, then let him prove it."
The ball was now in the president's court. A week passed. Two weeks. The government was in gridlock. Jefferson was eager to press forward with other matters which he deemed to be far more important to the republic and the future of the United Sates than the details of his personal life. An opportunity had come to buy a vast portion of the North American continent west of the Mississippi River from the French. But he needed congressional approval. And such approval was doubtful at a time like this. The offer came and went.
Finally, faced with impeachment, Jefferson addressed the nation. It was true, he said, that he had sought comfort and love with a young woman who resided at his Monticello plantation. And yes, DNA analysis would confirm that the children in question were his own. He asked for the country's understanding and urged that its government return to "the work of the people."
But the federalists smelled blood and seven weeks later, hounded to the point of physical and emotional collapse by the relentless eye of the media, Thomas Jefferson resigned the office of president and returned home to his Virginia farm. He died there just a year later, some say of a broken heart.
A year later, the former Vice President, Aaron Burr, led a successful coup against the government, splitting the country in two. And in 1812, Great Britain reclaimed the fragmented remnants of what was once the United States in a war that lasted less than seven weeks. The Experiment in Democracy had failed.
(Jim Stiles is publisher of the "Canyon Country Zephyr -- Planet Earth Edition" now exclusively online. He is also the author of "Brave New West." Both can be found at www.canyoncountryzephyr.com. Stiles lives in San Juan County and can be reached at email@example.com.)


text:
Warnemünde Local History Museum near Rostock is located in a fisherman's cottage dating back to 1767.
The permanent exhibition at Villa Schöningen in Potsdam is dedicated to the symbolic and historical significance of Glienicke Bridge, which used to be a crossing point between West Berlin and East Germany.
In the summer of 1945 the old rectory in Potsdam was captured by the Soviet military counter-intelligence agency and converted into an interrogation facility.
In 1826, as a tribute to his friend the Russian Tsar Alexander I, Kaiser Friedrich Wilhelm III built the Russian enclave of Alexandrowka in Potsdam .
Where can you look a mammoth in the eye? Get lost in the world of the whales? See a native American on horseback? Explore the infinite reaches of space?
The Friedenssaal in Munster's historical town hall is one of the highlights of any visit to the city.
Founded in 1852, the Central Romano-Germanic Museum in Mainz showcases exhibits from the Stone Age to the Middle Ages in their historical context.
Located in the Golden Horse Barracks building, the Mainz State Museum is one of the oldest museums in Germany.
To nyttige hurtigtaster for å zoome i nettleseren:
Mer hjelp får du fra nettleserleverandøren ved å klikke på ikonet:


text:
HARRISBURG, Pa. (AP) - Barely a week since Republican U.S. Rep. Jim Gerlach announced he plans to retire, one would-be GOP successor for the southeastern Pennsylvania seat said Tuesday he has decided not to run while another said he will make his intentions public soon.
Chester County Republican Party Chairman Val DiGiorgio said he decided against running because of the burden it would place on his family and that he will support an expected bid by Ryan Costello, the chairman of the Chester County Commission.
Costello, 37, a lawyer with offices in Phoenixville and Pottstown, has not announced his candidacy but said Tuesday he will disclose his plans 'very shortly.'
Also Tuesday, at least three Democrats said they are considering campaigns in the 6th Congressional District, which includes portions of Chester, Montgomery, Berks and Lebanon counties.
Mike Parrish, a Chester County businessman and former Army aviator, launched his campaign Tuesday. State Rep. Mark Rozzi of Berks County said he has formed an exploratory committee. And Dr. Manan Trivedi, a physician and Iraq war veteran who ran unsuccessfully for the seat in 2010 and again in 2012, said he is 'seriously looking' at a third campaign.
Gerlach, a sixth-term congressman who is one of a shrinking number of Republican moderates in the U.S. House, said last week he is not running for re-election. He plans to retire at the end his current two-year term in January 2015.
Republican-drawn redistricting changes that took effect after the 2012 election shifted a portion of the 6th District into conservative Lebanon County for the first time to make it friendlier to a Republican candidate.
As a result, GOP voter registration rose to 44 percent of registered voters, from 39 percent, while Democratic voter registration shrank to 40 percent, from 45 percent, according to figures from state Senate Republican mapmakers.
'We should be able to hold it,' said Republican Party Chairman Rob Gleason said of Gerlach's seat.
Republicans and Democrats will choose their nominees in the May 20 primary. Pennsylvania currently has 18 representatives in the U.S. House, including 13 Republicans and five Democrats.
___Associated Press writer Marc Levy in Harrisburg contributed to this report.


text:
Candy Land Carabiner-Really Works!
Remove game pieces from side drawer and open box lid. Two players play their gingerbread men at start.
Players take turns drawing cards that direct their gingerbread man through Candy Land. Be the first to reach the last green space or move beyond the last green space to the home sweet home candy house and you win! ("Limited Gameplay")


text:
"There are many scary things about big-wave surfing. But perhaps what captures people's imagination (and fears) the most is the prospect of being "caught inside." It's the avalanche dilemma: What do you do when a forty- foot wall of whitewater is about to mow you over? Run? Stay put? Let out a faint cry for help? In this case, it's dive as deeply as you can in the few seconds you have. Unfortunately, these avalanches run deep, extending fingers of turbulence to depths up to twenty feet under a fifty- to sixty-foot wave. Make it below those fingers and it's as tranquil as a swimming pool. Get caught, and you'll be tossed around like a toddler in a tornado, released only when the wave decides to let you go. Even worse? Gasping to the surface and facing another one right behind it."
Discover Magazine


text:
No registration necessary. Alcoholics Anonymous meets every Saturday morning at 11 am and every Sunday morning at 8:30 am in Conference Room C, Doylestown Hospital. For more information, call 215-345-1548.
Alcoholics Anonymous is a fellowship of men and women who share their experience, strength and hope with each other so that they may solve their common problem and help others to recover from alcoholism. The only requirement for membership is a desire to stop drinking. There are no dues or fees for AA membership; we are self-supporting through our own contributions. AA is not allied with any sect, denomination, politics, organization or institution; does not wish to engage in any controversy; neither endorses nor opposes any causes. Our primary purpose is to stay sober and help other alcoholics to achieve sobriety. For more information, call 215-345-1548
Disclaimer: Event registration data is stored on Eventbrite, a secure non-Doylestown Health site. All financial transactions associated with the event registration data take place on a secure server, which encrypts the details of registration transactions. After registering for an event, you will receive an email confirming the order details.
Keywords: Support Groups, Health and Wellness


text:
Save More with AMTA
$4.99 Shipping
| To Order 1-888-918-2253
Save More with AMTA
$4.99 Shipping
| To Order 1-888-918-2253
Essential for my daily therapy. Cannot do without it!
I have been a long time consumer of Soothing Touch massage lotions. I had hoped this would be a herbal alternative to Tiger Balm. I was sadly mistaken. The small bottle I purchased to sample would have led me to buy more, even though it was a little pricy, had the product actually worked. Maybe it was a bad batch but there was absolutely no heat what so ever. I tried it on myself before asking a few clients to try just in case my skin wasn't sensitive to it. They all said the same. I will certainly not purchase this again.
I purchased 4 different heat products to compare them: Sombra Warm Therapy, CryoDerm Heat, Prossage Heat and Soothing Touch Herbal Heat. Sombra won, hands down, for overall use. It warmed up quickly, has a nice scent, and kept the heat for a reasonable time.
CryoDerm came in a fast second. The heat held longer than Sombra, and felt deeper, but the scent tends more towards the mediciney side. I found it also heated up hours after I applied it when damp heat was applied to the area. I didn't mind that effect, but was glad to know it could happen.
Prossage was my third choice. It held heat longer than Sombra, and was fairly comparable to CryoDerm, but the scent is horrible. I might use this on myself (just to avoid throwing product out), but not on my clients.
I had high hopes for Soothing Touch as it seems to rely more on essential oils than on camphor and menthol. It has a lovely scent, but the effects weren't as deep or as long lasting as the other products. Also, it says on the bottle "a warming gel for pre-sports warm up". Perhaps this would be perfect for sports massage, but I'm not sure it's what I would use for deeper tissue issues.
The Occupational Safety and Health Administration requires that MSDS/SDS be available to employees for potentially harmful substances handled in the workplace under the Hazard Communication regulation.
Soothing Touch® Herbal Heat Topical Pain Relief Gel


text:
July 1, 2009 -- A vast number of common gene variants come together in a perfect storm to increase risk of schizophrenia and bipolar disorder, new studies reveal.
Because schizophrenia tends to run in families, researchers have long sought a "schizophrenia gene." But scientists now realize that most inherited disease factors aren't single genes, but combinations of different genes.
These combinations can be quite complex. Now modern technology -- and DNA samples from huge numbers of people -- allow researchers to scan the entire human genome for differences between people with and without specific diseases.
Three such genome-wide studies -- involving large, international teams of scientists -- appear in the July 2 issue of Nature.
The studies point to single genetic variants involved in immune responses and in brain development. None of these genes increases schizophrenia risk by itself, but the changes come together to exert a powerful effect.
"Cumulatively they play a major role, accounting for at least one-third -- and probably much more -- of disease risk," Harvard's Shaun Purcell, PhD, co-leader of one of the research teams, says in a news release.
Interestingly, people with bipolar disorder have many of the same genetic changes seen in people with schizophrenia. This suggests these two distinct mental disorders may be linked.
There's still a lot more work to do. It's not at all clear why this constellation of changes predisposes a person to mental illness. And while knowledge of these changes offers insights into the biology of schizophrenia and bipolar disorder, the findings cannot be used as a genetic test to diagnose these diseases or predict risk.