text:
Q: How to detect USB cable disconnect in blocking read() call? I have a smart energy meter which sends energy consumption data every second. The daemon program I've written (C++/C Arch Linux) to read the data doesn't exit when the USB cable is disconnected and stalls indefinitely in the blocking read() call.
How to interrupt a blocking read() call (i.e. fail with EINTR instead of waiting for the next char)?
I extensively searched Google and looked here in SO and could not find an answer to this problem.
Details:

*

*Smartmeter project source on Github

*IR dongle with FT232RL USB to UART bridge

*Datagrams have fixed length of 328 bytes sent every second

*Read method detects beginning \ and end ! markers of a datagram

*sigaction to catch CTRL+C SIGINT and SIGTERM signals

*termios is setup to do blocking read() with VMIN = 1 and VTIME = 0.

Tried:

*

*Playing with VMIN and VTIME

*Removed SA_RESTART

Possible solution:

*

*Use a non-blocking read method, maybe with select() and poll()

*Or VMIN > 0 (datagram is longer than 255 characters and I would need to read the datagram in smaller chunks)

*Not sure how to handle datagram begin/end detection and the one second interval between datagrams for a non-blocking read method

EDIT: The code below now buffers the read() call into an intermediate buffer of 255 bytes (VMIN = 255 and VTIME = 5) adapted from here. This avoids the small overhead of calling read() for every char. In practise this doesn't make a difference compared to reading one char at a time though. Read() still doesn't exit gracefully on cable disconnect. The daemon needs to be killed with kill -s SIGQUIT $PID. SIGKILL has no effect.
main.cpp:
volatile sig_atomic_t shutdown = false;

void sig_handler(int)
{
  shutdown = true;
}

int main(int argc, char* argv[])
{
  struct sigaction action;
  action.sa_handler = sig_handler;
  sigemptyset(&action.sa_mask);
  action.sa_flags = SA_RESTART;
  sigaction(SIGINT, &action, NULL);
  sigaction(SIGTERM, &action, NULL);

  while (shutdown == false)
  {
      if (!meter->Receive())
      {
        std::cout << meter->GetErrorMessage() << std::endl;
      return EXIT_FAILURE;
      }
  }

Smartmeter.cpp:
bool Smartmeter::Receive(void)
{
  memset(ReceiveBuffer, '\0', Smartmeter::ReceiveBufferSize);
  if (!Serial->ReadBytes(ReceiveBuffer, Smartmeter::ReceiveBufferSize))
  {
    ErrorMessage = Serial->GetErrorMessage();
    return false;
  }
}

SmartMeterSerial.cpp:
#include <cstring>
#include <iostream>
#include <thread>
#include <unistd.h>
#include <termios.h>
#include <sys/file.h>
#include <sys/ioctl.h>
#include "SmartmeterSerial.h"

const unsigned char SmartmeterSerial::BufferSize = 255;

SmartmeterSerial::~SmartmeterSerial(void)
{
  if (SerialPort > 0) {
    close(SerialPort);
  }
}

bool SmartmeterSerial::Begin(const std::string &device)
{
  if (device.empty()) {
    ErrorMessage = "Serial device argument empty";
    return false;
  }
  if ((SerialPort = open(device.c_str(), (O_RDONLY | O_NOCTTY))) < 0)
  {
    ErrorMessage = std::string("Error opening serial device: ")
      + strerror(errno) + " (" + std::to_string(errno) + ")";
    return false;
  }
  if(!isatty(SerialPort))
  {
    ErrorMessage = std::string("Error: Device ") + device + " is not a tty.";
    return false;
  }
  if (flock(SerialPort, LOCK_EX | LOCK_NB) < 0)
  {
    ErrorMessage = std::string("Error locking serial device: ")
      + strerror(errno) + " (" + std::to_string(errno) + ")";
    return false;
  }
  if (ioctl(SerialPort, TIOCEXCL) < 0)
  {
    ErrorMessage = std::string("Error setting exclusive access: ")
      + strerror(errno) + " (" + std::to_string(errno) + ")";
    return false;
  }

  struct termios serial_port_settings;

  memset(&serial_port_settings, 0, sizeof(serial_port_settings));
  if (tcgetattr(SerialPort, &serial_port_settings))
  {
    ErrorMessage = std::string("Error getting serial port attributes: ")
      + strerror(errno) + " (" + std::to_string(errno) + ")";
    return false;
  }

  cfmakeraw(&serial_port_settings);

  // configure serial port
  // speed: 9600 baud, data bits: 7, stop bits: 1, parity: even
  cfsetispeed(&serial_port_settings, B9600);
  cfsetospeed(&serial_port_settings, B9600);
  serial_port_settings.c_cflag |= (CLOCAL | CREAD);
  serial_port_settings.c_cflag &= ~CSIZE;
  serial_port_settings.c_cflag |= (CS7 | PARENB);

  // vmin: read() returns when x byte(s) are available
  // vtime: wait for up to x * 0.1 second between characters
  serial_port_settings.c_cc[VMIN] = SmartmeterSerial::BufferSize;
  serial_port_settings.c_cc[VTIME] = 5;

  if (tcsetattr(SerialPort, TCSANOW, &serial_port_settings))
  {
    ErrorMessage = std::string("Error setting serial port attributes: ")
      + strerror(errno) + " (" + std::to_string(errno) + ")";
    return false;
  }
  tcflush(SerialPort, TCIOFLUSH);

  return true;
}

char SmartmeterSerial::GetByte(void)
{
  static char buffer[SmartmeterSerial::BufferSize] = {0};
  static char *p = buffer;
  static int count = 0;

  if ((p - buffer) >= count)
  {
    if ((count = read(SerialPort, buffer, SmartmeterSerial::BufferSize)) < 0)
    {
      // read() never fails with EINTR signal on cable disconnect
      ErrorMessage = std::string("Read on serial device failed: ")
        + strerror(errno) + " (" + std::to_string(errno) + ")";
      return false;
    }
    p = buffer;
  }
  return *p++;
}

bool SmartmeterSerial::ReadBytes(char *buffer, const int &length)
{
  int bytes_received = 0;
  char *p = buffer;
  bool message_begin = false;

  tcflush(SerialPort, TCIOFLUSH);

  while (bytes_received < length)
  {
    if ((*p = GetByte()) == '/')
    {
      message_begin = true;
    }
    if (message_begin)
    {
      ++p;
      ++bytes_received;
    }
  }
  if (*(p-3) != '!')
  {
    ErrorMessage = "Serial datagram stream not in sync.";
    return false;
  }
  return true;
}

Many thanks for your help.

A: While the code below is not a solution to the original question on how to interrupt a blocking read() call, at least it would be a vialble workaround for me. With VMIN = 0 and VTIME = 0 this is now a non-blocking read():
bool SmartmeterSerial::ReadBytes(char *buffer, const int &length)
{
  int bytes_received = 0;
  char *p = buffer;
  tcflush(SerialPort, TCIOFLUSH);
  bool message_begin = false;
  const int timeout = 10000;
  int count = 0;
  char byte;

  while (bytes_received < length)
  {
    if ((byte = read(SerialPort, p, 1)) < 0)
    {
      ErrorMessage = std::string("Read on serial device failed: ")
        + strerror(errno) + " (" + std::to_string(errno) + ")";
      return false;
    }
    if (*p == '/')
    {
      message_begin = true;
    }
    if (message_begin && byte)
    {
      ++p;
      bytes_received += byte;
    }
    if (count > timeout)
    {
      ErrorMessage = "Read on serial device failed: Timeout";
      return false;
    }
    ++count;
    std::this_thread::sleep_for(std::chrono::microseconds(100));
  }

  if (*(p-3) != '!')
  {
    ErrorMessage = "Serial datagram stream not in sync.";
    return false;
  }
  return true;
}

However, I am still curious to know if it is actually possible to interrupt a blocking `read()´ as this workaround is constantly polling the serial port.
I believe reading one char at a time is not a problem as the received bytes from the UART are buffered by the OS - but constantly polling the buffer with read() is! Maybe I'll try a ioctl(SerialPort, FIONREAD, &bytes_available) before read(), although I don't know if this would actually make a difference.
Any suggestions?

redpajama_set_name: RedPajamaStackExchange


text:
Aric Almirola Same Track, Much Different Race at Charlotte
Aric Almirola and the No. 10 Smithfield Ford Mustang team for Stewart-Haas Racing (SHR) will head back to Charlotte (N.C.) Motor Speedway Wednesday night for its second of back-to-back races at the 1.5-mile oval.
Almirola and the No. 10 Smithfield Ford team endured a difficult evening at Sunday's Coca-Cola 600. After starting in the rear from adjustments made on the car after slight contact with the wall in qualifying, the No. 10 team persevered and made its way back to the top-10 after 398 laps. On the final restart, Almirola was shuffled to the middle lane with no help and finished 16th. If it weren't for the final caution, Almirola would have been the highest-finishing SHR driver and third-highest Ford driver.
As the Smithfield Ford team heads back to the 1.5-mile oval, it will take some things it learned from Sunday night's race and apply it to Wednesday night's 208-lap race, which is nearly half of the Coca Cola 600's.
"Sunday was a long day," Almirola said. "We battled loose-handling conditions, then neutral, then extremely tight conditions with those long runs and it made it so difficult to pass. We won't have those same issues coming back here on Wednesday with the stage lengths being so much shorter, so that's something that we'll have to adapt to. It's nearly half of Sunday's race, so you're going to see completely different strategies from teams."
Almirola will again run a special red, white and blue patriotic paint scheme with Smithfield adorning the hood. Smithfield Foods Inc., who will sponsor Almirola's car this weekend and at the majority of races this season, is an American food company with agricultural roots and a global reach. Its 40,000 U.S. employees are dedicated to producing "Good food. Responsibly®," and have made it one of the world's leading vertically integrated protein companies.
Last weekend, Almirola ran the same patriotic paint scheme that featured United States Army SPC Seth Blevins, who paid the ultimate sacrifice in 2011 in Eastern Kunar Province, Afghanistan, when his vehicle struck an improvised explosive device.
"It was a big deal," Almirola said. "I was honored to have him and his family on my car. We get to do whatever we want, whenever we want, because he paid the ultimate sacrifice."
The 36-year-old Almirola has eight NASCAR Xfinity Series starts at Charlotte and garnered one top-five finish, three top-10s and has completed 99.4 percent of all possible laps. He also has two Charlotte starts in the NASCAR Gander RV & Outdoors Truck Series, which both resulted in top-10 finishes.
Almirola has three top-10s this season and sits 10th in the driver standings with 208 points – 83 behind first-place SHR teammate Kevin Harvick.
After a rollercoaster of difficulties and perseverance Sunday night, Almirola has a simple approach to his second Charlotte race in three days.
"We'll regroup and get 'em on Wednesday night," he said. "We did it in Darlington."
« NCS: Brad Keselowski wins Coca-Cola 600 in overtime Kyle Busch Wednesday Night Lights »

redpajama_set_name: RedPajamaCommonCrawl


Rob Kardashian after just four months of dating.
"I don't think meals have any business being deductible. I'm for separation of calories and corporations."
Tagged Blac Chyna, Blac Chyna Outfits, Blac Chyna Pregnant. Bookmark the permalink.


text:
Home / India / Indian Railways to arrange 800 beds for Delhi's Covid-19 treatment
Indian Railways to arrange 800 beds for Delhi's Covid-19 treatment
DRDO too extends hand of support with its decision to add 250 ICU beds to the existing ones
The Union health ministry has delivered 35 BIPAP machines to DRDO Covid facility near the Delhi airport, the official said.
Representative file picture
| New Delhi | Published 18.11.20, 03:47 PM
In a bid to help Delhi in its fight against the rising cases of Coronavirus, Indian Railways have decided to make available coaches with 800 beds at a station here to be used as Covid care-cum-isolation facilities while as many as 45 doctors and 160 paramedics of the paramilitary forces are on standby in the national capital for deployment on Covid-19 duties, the Union Ministry of Home Affairs (MHA) said on Wednesday.
The Defence Research and Development Organisation (DRDO) is going to add 250 ICU beds to the existing 250 in addition to creating 35 BIPAP beds in the next 3-4 days at its Covid-19 hospital near the Delhi airport, a home ministry spokesperson said.
These developments come in the wake of 12 decisions taken at a high-level meeting chaired by Union Home Minister Amit Shah on Sunday after Delhi saw fresh spike in Covid-19 cases.
The spurt in coronavirus cases in Delhi has been witnessed since October 28 when the daily rise breached the 5,000-mark for the first time and it crossed the 8,000-mark on November 11.
Delhi recorded 6,396 fresh Covid-19 cases on Tuesday, taking the infection tally in the national capital to over 4.95 lakh, even as 99 new fatalities pushed the toll to 7,812, authorities said.
The rising coronavirus cases in Delhi are attributed to the festive season, non-compliance of COVID-19 safety behaviour and rising pollution in the city.
Forty-five doctors and 160 paramedics from paramilitary forces have arrived in Delhi for deployment at DRDO hospital near Delhi airport and at a COVID care centre at Chhatarpur, the spokesperson said.
More doctors and paramedics will reach Delhi in the next few days.
The home ministry has constituted 10 multi-disciplinary teams to visit more than 100 private hospitals in Delhi for assessing bed utilisation and testing capacity and to identify extra ICU beds. Visits by the teams are underway.
The Railways is making available coaches with 800 beds at Shakur Basti railway station while doctors and paramedics from paramilitary forces will man the coaches which will act as Covid care-cum-isolation facilities.
The Indian Council of Medical Research (ICMR) and the Delhi government are working together to enhance RT-PCR testing capacity to 60,000 tests by end of November.
Testing capacity has already been enhanced by 10,000 tests per day on November 17, the spokesperson said.
The planning for house-to-house survey in Delhi is in the advanced stage. The survey is expected to begin by the end of the week and completed by November 25.
According to the spokesperson, Bharat Electronics Limited (BEL) has dispatched 250 ventilators from Bengaluru and these are expected to reach Delhi by the end of the week.
The Union health ministry has delivered 35 BIPAP machines to DRDO Covid facility near the Delhi airport.
To bring testing closer to Delhi residents, the ICMR will help Delhi government in deploying 10 mobile testing laboratories with a total capacity of 20,000 tests in a phased manner beginning next week.
The ICMR will also help in augmenting capacity by 2,000 tests of existing Delhi laboratories by deploying more manpower, increasing number of shifts and placing more equipment and through engagement with private sector laboratories so that per day 60,000 RT-PCR tests could be done by November end.
Five RT-PCR laboratories including at AIIMS, Delhi have already started functioning round-the-clock.
Orientation meeting of deputy commissioners, municipal corporations officials and other stakeholders were conducted by the union health ministry.
As many as 25 BIPAP machines for the Delhi government will be provided by health ministry, the spokesperson said.
Sunday's meeting was convened in the wake of the rising number of cases, which is being called the 'third wave' of Covid-19, in Delhi and it noted the increasing strain on medical infrastructure in the city.
Apart from Shah, those who attended the meeting include Delhi Lieutenant Governor Anil Baijal, Chief Minister Arvind Kejriwal and Union Health Minister Harsh Vardhan among others.
It was the second major intervention by Shah, who had stepped in and announced several steps in June to check the rising number of Covid-19 cases in the national capital after criticism in different quarters of the Delhi government's handling of the crisis.
Shah had said that the situation of Covid-19 in Delhi, as also in the neighbouring areas of the National Capital Region (NCR), would be reviewed on a continuous basis over the coming weeks.
The highest single-day spike of 8,593 cases till date here was recorded on November 11 when 85 fatalities were recorded.
Ninety-nine fatalities were recorded, pushing the toll in the national capital to 7,812.
The active cases tally on Tuesday rise to 42,004 from 40,128, previous day.
The total number of cases has climbed to 4,95,598, while the recovery rate stood at over 89 per cent.
The number of containment zones in Delhi increased to 4,449 on Tuesday.
The National Centre for Disease Control, in a report drafted recently, had warned that Delhi needed to be prepared for about 15,000 fresh Covid-19 cases per day, taking into account the winter-related respiratory problems, a large influx of patients from outside and festive gatherings.
In June, when the number of Covid-19 cases was on the rise in Delhi, there were complaints of non-availability of beds in hospitals and difficulty in getting tests done in laboratories.
Leading from the front, the home minister ensured that the facilities were augmented by increasing the numbers of daily testing, hospital beds and setting up of temporary hospitals and COVID care centre.
A committee set up by Shah also fixed the rates for testing, beds in private hospitals, ICUs and isolation beds.
Indian Railways Coronavirus Defence Research And Development Organisation Drdo


text:
Remote Sensing Reveals Record Low Arctic Sea Ice
Mark Alonzo Thursday, October 11, 2012
September 2012 broke all records for Arctic sea ice, and not in a good way. The National Snow and Ice Data Center's Sea Ice Index for September 2012 shows the lowest ever monthly averaged extent of sea ice, culminating in the lowest ever recorded sea ice extent on September 16. And it's not the lowest by a just a little. The previous record, in September 2007, shocked climatologists by beating the previous record by 22%. And this year, September sea ice was 18% smaller even than that. Moreover, the Arctic sea ice minimum in 2007 was partly explained by a particularly warm summer, and winds that favored melting. But none of that was true in 2012, which makes this year's record even more of a shock to climatologists. [caption id="attachment_593" align="alignnone" width="251"] This map of Arctic sea ice extent for September 2012 shows the 1979 to 2000 median extent for September in magenta. The black cross indicates the geographic North Pole. Credit: National Snow and Ice Data Center[/caption] According to the NSIDC, the 2012 Arctic sea ice record low is due to the dwindling of older, thicker sea ice in recent years, and a new prevalence for younger, thinner sea ice. This younger, thinner ice is more vulnerable to weather, such as a storm that tracked through the Arctic in early August. The storm quickly broke up the already decaying ice, making it more susceptible to melting. [caption id="attachment_594" align="alignnone" width="300"] This mosaic of MODIS images shows a massive storm that churned over the Arctic in early August 2012. The storm is located in the center of the Arctic Ocean; ice-covered Greenland is visible near the lower left corner. Credit: NASA/Goddard/MODIS Rapid Response Team.[/caption] For more information about the data, see the National Snow & Ice Data Center's discussion. For more information and discussions of Arctic sea ice trends and their implications, check out the National Snow & Ice Data Center's Arctic Sea Ice News & Analysis site.
The Value of LiDAR in Remote Sensing


Malibu Groves is a residential neighborhood situated west of Lake Mann in West Orlando, Florida. It provides affordable housing options in a convenient location just outside the city. Residents in the area have easy access to churches, hospitals, schools, and shopping centers. Homes in Malibu Groves are perfect for professionals working in Downtown Orlando as daily commute is relatively quick. The district connects to Spessard L Holland Highway which leads directly to the heart of the city. If you are looking for a family starter home in the western part of Orlando, Malibu Groves has some excellent properties you could purchase.
Homes in Malibu Groves are primarily single-family properties ranging from three to four bedroom models. Classic homes in the area are ranch-style built during the real estate boom of Orlando. These homes have been upgraded and remodeled throughout the years, providing families with modern features and comfortable living spaces. There are also custom-built homes from renovated residences as well as freshly constructed structures.


Spend £49 or more and get free delivery on the world's best beers.
Learn how to place the TORP, pour the perfect beer and maintain the SUB.
The branded cover of the Heineken SUB® is made of anodised aluminum gives an extra premium touch to Marc Newson's deluxe design. With The Heineken SUB® keg you can pour the perfect beer at home.
Explore the differences between the different models and find THE SUB edition that fits your needs. All home draught systems are working with the same torps so don't worry.


text:
Home News The Beta Version of Robinhood's Bitcoin Wallet is Now Available to Customers
The Beta Version of Robinhood's Bitcoin Wallet is Now Available to Customers
The beta version of Robinhood's bitcoin wallet is now available to customers.
The send and receive flow has yet to be finalized by Robinhood.
Based on user input, Robinhood will make changes.
Robinhood, a prominent stock and cryptocurrency trading app based in the United States, has made the beta version of its crypto wallet available to 1,000 customers who had signed up for the waitlist. The company relies on beta testers to test the wallet service's essential operation. The Robinhood wallet will allow users to transfer and receive coins. Last year, the business announced that its beta wallets would be available to clients in January 2022, and Robinhood has delivered.
"We will finalize the send and receive flows, add QR scanning experiences, update the transaction history interface, and add block explorer functionality to provide more insights into their on-chain transactions during the beta program," Robinhood said in a statement.
Robinhood's crypto team's chief operational officer, Christine Brown, tweeted about the news.
The company will expand its wallet-testing program to 10,000 users from its WenWallets queue in the next round. People can still join up for this waitlist to acquire the Robinhood wallet as soon as it becomes available on a first-come, first-served basis.
"We'll also provide clients the option of calculating the dollar amount of crypto to send/receive in terms of dollars." In addition, beta testers will be limited to a daily withdrawal limit of $2,999 (approximately Rs. 2 lakh) and a maximum of 10 transactions. Furthermore, they will be required to enable two-factor authentication," according to the business.
Over 1.6 million people had already signed up for Robinhood's wallet queue as of December last year.
Robinhood has been attempting to diversify its service offerings to meet the needs of a broader range of investors.
While crypto-related cybercrime is rising in the United States and elsewhere, Robinhood claims to have built security safeguards surrounding identity verification and authentication into their wallet product.
Chetna Prakash
South Korean Broadcaster KBS Opens Metaverse for 2022 Elections
Ex-FTX US President Seeks $6 Mln In Funding For A Crypto Startup
Purpose Investments Launches the World's First Actively Managed and Covered Call Cryptocurrency ETFs
Crypto to Keep an Eye on This Week: BTC, ETH, MATIC, CAKE, FTT
Crema Finance Suspended Withdrawal


text:
Home » TV » Ashton Kutcher Tops Forbes List of Highest Paid Television Actors
Ashton Kutcher Tops Forbes List of Highest Paid Television Actors
By Chris McKittrick	 October 19, 2012 No Comments
Forbes has released its annual list of highest paid television actors, and topping this year's list again is a star from ABC's Two and a Half Men. Of course, this time it isn't Charlie Sheen… it's his replacement, Ashton Kutcher.
Kutcher tops the list at earning $24 million for his role on Two and a Half Men. Ratings for the show have remained fairly consistent with the ratings for the Charlie Sheen years, making Kutcher's replacement of Sheen one of the few times a major character change on a sitcom hasn't led to a ratings drop. Still, it's a huge drop from Sheen's paycheck last year — Sheen topped the list in 2011 with $40 million. However, Sheen didn't make the list this year despite starring in a new show, FX's Anger Management.
Curiously, Kutcher earns a significant amount more than those who follow him on the list, with TV veterans Hugh Laurie and Ray Romano coming in tied for #2 with $18 million each. However, Laurie's House ended last season, and Romano's Men of a Certain Age was canceled at the end of season. Alec Baldwin follows at $16 million (his show, 30 Rock, is in its final season), NCIS' Mark Harmon at $15 million, Tim Allen at $14 million, Kutcher's co-star Jon Cryer at $13 million, Grey's Anatomy star Patrick Dempsey at $12 million, The Big Bang Theory's Jim Parsons and Johnny Galecki and How I Met Your Mother's Jason Segel at $8 million each.
The rankings are based on estimated earnings from May 2011 and May 2012 before deductions of agent and management fees or other expenses.
Chris McKittrick
In college, overachiever Christopher McKittrick double-majored in Film and English because he loves to read, write, and watch movies. Since then Chris – who was born and raised on Long Island, New York and currently lives in Queens – has become a published author of fiction and non-fiction, a contributor to entertainment websites, and has spoken about literature, film, and comic books at various conferences across the country when he's not getting into trouble in New York City (apparently it's illegal to sleep on street corners...) For more information about Chris, visit his website here!
Chris Rock on 'Fargo', Resuming Production after COVID-19 Shutdown and Why It's the "Best Part" He's Ever Had
How a Casting Director's Advice Helped 'Ozark' Star Julia Garner After a Bad Audition
'Succession' Star Jeremy Strong: "It feels like a miracle that I am prepared enough each time I walk on set"


Many people seem to think that family cookouts cannot be planned until the official beginning of summer rolls around. This is not true. Spring is a perfectly viable season to host a family cookout if you plan and prepare properly.
A cookout with your family could become a rather extensive affair depending on how large of a family you have. Regardless of how many people show up to your family cookout, you need to be prepared to provide all of them with a place to sit. Benches, lounge chairs, folding chairs, and blankets are popular forms of seating during a cookout setting. Remember to offer comfortable seating to those in your family who are elderly or disabled.
Once you've gathered enough seating for your family, it's time to start gathering the cookout supplies. The first supplies to gather will be the groceries. Be sure to purchase any special foods your family members may need to stick to their diet restrictions. After groceries are bought, make sure you enough fuel for your grill. Extra charcoal and starter fluid should be brought for a charcoal grill while extra canisters or propane, like that available from Mason Propane, should be bought for gas grills. Proper dinnerware is the last supply that you will need. Whether you choose paper plates or plastic plates, make sure that there are enough plates, utensils, cups, and napkins for everyone.
Preparing and cooking the food for a family cookout can take a long time. You can even pre-buy propane in the Puget Sound area, or in other areas. Your family members will become bored or sleepy while waiting for the food to finish, so you should plan plenty of entertainment for them while they wait. This entertainment can come in the form of music, video games, sports games, or bringing out a deck of cards. While these forms of entertainment may work to distract the adults, it may not work so well on children.
Children are blessed with an abundance of energy. This energy only seems to increase after they eat. To keep the children healthy and prepare them for their upcoming bedtime, offer them a wide range of games that promote physical activity such as volleyball, basketball, frisbee, jump rope, laser tag, and football.
Springtime can often bring unexpected rain, so be sure to have a sheltered area to retreat to should a spring rain shower move in during your cookout.


... The legislation's author, Carlos Apolinario, said the idea for a Heterosexual Pride Day is "not anti-gay but a protest against the privileges the gay community enjoys."
This entry was written by NOM Staff, posted on at 9:00 am, filed under Culture, South America. Bookmark the permalink. Follow any comments here with the RSS feed for this post.


Chabad Web-Ring. This ring is for all Chabad-Lubavitch web-sites. Sites that contain information having to do with the Rebbe, or Chabad Lubavitch organizations or anash from the Chabad community.
The Jewish World II Ring is a webring for Jewish people, Organizations and groups. Anything Jewish goes. No messianic sites please.
Invited are websites featuring Jewish composers and musicians with respect to their Jewish roots and its relevance for their musical work. The music does not have to be Jewish music in a religious sense. No antisemitic and messianic pages!
This ring is a collection of the greatest Jewish sites on the Internet. Sites relating to Judaism, Jewish heritage, or created by a Jewish webmaster perhaps.
One of the world's oldest monotheistic religions, Judaism continues to thrive in an often hostile world. This ring presents sites that explore the culture that has developed from the Hebrew faith and its followers' enduring struggle to reclaim their holy land of Israel. Topics range from history to current events.
Judaic Art & Writing. Serving Israel since September 9th, 2000.


We have a new 908e gen 3 we are testing for a potential new subscriber. The customer is wanting redundant ISP in case the primary link goes down. I think I have that part figured out. This will be served with a Sip trunk to the front of the 908e and a PRI out the back for the time being, with the provision they could upgrade the PBX to sip capabilities at a later date. No problem there either. The issue I am having is when we go into failover on the wan, and the secondary becomes active, I see 0 sip traffic via the debug sip stack messages to say that the Adtran is even trying to talk to the provider(me). We run a Metaswitch and Perimeta SBC. Guess I am curious if the Adtran will actively try to talk with the far end SBC even if it isnt provisioned correctly, as in a OPTIONS message and a get lost response, I attached a configuration for the Adtran.
How do you manipulate the TA900 into re-registering when the first circuit fails over? or are you relying on the registration expiration?
Did you figure out how to get 2 sip trunks, one per interface. I would like to know how to do this too.
@riker424, You said you got this to work. I am facing a similar problem. Could you please share how you configured the trunk on the MetaSwitch as a registered trunk instead of hard coding the Adtran IP.
So we run a Metaswitch and a Perimeter SBC, which is also Metaswitch made. In a basic configuration the Perimeter should have at least 2 outside facing adjacencies, 1 will be peering, and 1 will be registering. The Peering adjacency will not allow registers to come into it. The Registering adjacency is general what you would use for Hosted PBX, or sip clients/phones. Each adjacency will have a local ip address that the far end devices need to communicate with. This is basic, I know other folks setups could and will be more complicated. So with that being said to be able to get a "registering" sip trunk set up in the Metaswitch you will need to attach it to the registering adjancency. You can make the sip binding in the Metaswitch the same way as other ones, "Learned contact details" needs to be set to true, and the "SIP domain name" needs to match your registering adjancency local ip address. "Learned contact details"
True The SIP device is identified by its SIP user name and domain name, and MetaSphere CFS learns its other contact details when the device registers. Only one PBX Line may use this Configured SIP Binding.
I will paste my example config, scrubbed. In our test we used STATIC interface and PPPOE for another interface on the wan side of the Adtran.
register XXXXXX auth-name "XXXXXXX" password encrypted "1e12dc02928fbe6f9d486740126e76c7347e"
authentication username "XXXXXXX" password encrypted "3a3667874c092537ddf01ec7f25f1b5a2cc9"
No, I dont think you can do it 2 per 1 interface. I thought I have read some articles where you could use 2 wan interfaces and have 2 sip trunks, that is 1 for 1.
I tried to describe it on the top section, hopefully that will get you going, if not give me another message and will try again. Good Luck Folks!


Where can i obtain assistance for my essay composing?
The research ideas will help determine the total presentation of the project dependent on the data you will find. Once you are interested in being certain you're most likely to truly have a research paper that's very likely to soon be written together with most professionals, you might should simply take own time to check at the range of spots in which you're well ready to find the research papers. You may choose assignment help online co uk to contemplate http://bindings.lib.ua.edu/glossary1.html how your suggestions for research may eventually influence your creation of the analysis.
You may believe your research paper is extremely tricky to write, while our writers devote their complete attention to your undertaking! Our crew of writers can complete even the most difficult task by the deadline. The writers too must have the essential zeal to write on a particular topic such they are in a position to put in their finest efforts.
There are some who are extremely poor in research and don't know the best places to get data or gather information concerning the topic they've been given to write on. The very best help alternative for economics is INTERNET. Consequently, expert help might be necessary in some instances.
Actually, Buchanan's work reminds all of us that the very simple presence of a neighborhood news outlet may not be sufficient to present hyperlocal content. It's very easy to differentiate a research paper compiled by means of a skilled plus you also compiled by way of a faculty dropout. For students just encountering such assignments for the first time, it is not the only constraint.
Unfortunately, college teachers and professors don't allow you to relax in the center of your semester, so many students attempt to come across the solution and try to find research paper help. The issue is even more troublesome as you're not predicted to compose a single project during the semester. University assignments are receiving increasingly tougher day-by-day.
Our company strives to create a secure and comfortable atmosphere for each customer, and that's why we don't request that you pay in advance pay just for the completed text after you've had an opportunity to assess and are confident that the paper fulfills your needs! In the event the paper is discovered to have not met the caliber of the customer, it's given back for more revisions.
On-line paper sites have writers with enough experience and expertise to perfectly do a great job. Our crew of writers can complete even the most difficult task by the deadline. While a number of the tips may look like common sense, it must be noted that even experienced writers can forget a few of the guidelines.
You require research paper producing assistance as you truly feel frustrated getting a lot of tasks every day. You will need research paper writing help as you truly feel frustrated getting a good deal of tasks daily. Finding help writing research papers looks like the ideal approach to satisfy tight deadlines.
When it is completed, it will be sent to your personal account or email. It's also wise to be aware that the way that your research paper goes to be appraised. It is one of the most hateful things for every student.
You require research paper producing assistance as you truly feel frustrated getting a lot of tasks every day. If you are searching for quality research paper help, our writing company is prepared to help you. Our college research paper 20 Signs You Go To The University Of Alabama – Society19 help isn't restricted to anything in the slightest.
There are some who are extremely poor in research and don't know the best places to get data or gather information concerning the topic they've been given to write on. Try to remember this in the event you require professional research paper writing help, you could always rely on our experts! Consequently, expert help might be necessary in some instances.
The perfect research papers aren't written easily even when you're an expert writer. It's simple to differentiate a research paper written by a skilled and one written by means of a school dropout. You only ought to call our very best research paper writing service and get the needed the learned investigation.
Research paper writers have got all of the opportunity to manage a paper. Which is the reason why most of the students today hire professional research paper writers to assist them with the papers.
Next Next post: Which are the very best student essay creating products and services?


Research on the roles that C-reactive protein (CRP) and other risk factors such as cortisol and obesity play in the diagnosis of cardiovascular disease (CVD) in African and Caucasian women has become increasingly imperative when one considers the prevalence of hypertension in these groups. CRP and cortisol have been associated with an increased prevalence of hypertension and obesity. Cortisol has also been linked with both hypertension and the hypothalamic-pituitary-adrenal (HPA) response. African women have previously presented with an increased vascular reactivity. Conversely, Caucasian women have displayed an increased central cardiac reactivity. We included African (n = 102) and Caucasian (n = 115) women in the study, matched for age and body mass index. Elevated CRP levels were observed in African women compared to Caucasian women. A trend of hypocortisolism was exhibited in both hypertensive ethnic groups. Systolic blood pressure (SBP) and a vascular marker, arterial compliance (Cw), predicted hypertension in African women. Conversely, in Caucasian women, only SBP predicted hypertension. These results suggest the apparently diverse roles that dysregulation by the HPA axis, in conjunction with the respective cardiac and vascular responses in both Caucasian and African women, can play in future cardiovascular risk for these groups.


text:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<parent>
		<groupId>org.chcp</groupId>
		<artifactId>chcp</artifactId>
		<version>0.0.1</version>
		<relativePath>../pom.xml</relativePath>
	</parent>

	<groupId>org.chcp.framework</groupId>
	<artifactId>chcp-framework-user</artifactId>
	<version>${chcp-framework-user-version}</version>
	<name>${project.artifactId}</name>
	<packaging>jar</packaging>

	<dependencies>
		<!-- chcp -->
		<dependency>
			<groupId>org.chcp.framework</groupId>
			<artifactId>chcp-framework-core</artifactId>
		</dependency>

		<!-- Springframework -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
		</dependency>
		<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>
		</dependency>
		<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-webmvc</artifactId>
		</dependency>

		<!--Apache Shiro Security-->
		<dependency>
			<groupId>org.apache.shiro</groupId>
			<artifactId>shiro-spring</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.shiro</groupId>
			<artifactId>shiro-quartz</artifactId>
		</dependency>

		<!-- Hibernate -->
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-core</artifactId>
		</dependency>
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-entitymanager</artifactId>
		</dependency>

		<!--Ehcache-->
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-ehcache</artifactId>
		</dependency>

		<!-- Commons -->
		<dependency>
			<groupId>commons-dbcp</groupId>
			<artifactId>commons-dbcp</artifactId>
		</dependency>
		<dependency>
			<groupId>commons-lang</groupId>
			<artifactId>commons-lang</artifactId>
		</dependency>

		<!-- Servlet -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
		</dependency>

		<!--Jackson-->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-core</artifactId>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-annotations</artifactId>
		</dependency>

		<!--logging-->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>jcl-over-slf4j</artifactId>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
		</dependency>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
		</dependency>

	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-install-plugin</artifactId>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-source-plugin</artifactId>
			</plugin>

		</plugins>
	</build>
</project>

redpajama_set_name: RedPajamaGithub


text:
"Wherever he has been needed, Jacques Genest has gone."
https://www.youtube.com/watch?v=gv94cujr4og
© Irma Coucill and the CMHF
Jacques Genest MD
Heart and Stroke
May 29, 1919 (Montréal, Québec)
MD - University of Montreal; Harvard University
Heralded as one of the giants of 20th century medicine, the name Jacques Genest has become synonymous with pioneering advances in clinical research and the study of hypertension. His research team's exploration of the roles of the adrenal gland and kidney eventually led to the discovery of ANF (atrial natriuretic factor), a heart hormone found to be a central factor in the body's control of water, salt and blood pressure, advanced our understanding of the causes and management of hypertension.
Early in his career, the Quebec government tasked Dr. Genest with investigating the methods of European research centres. Inspired by their multi-disciplinary approach, Dr. Genest returned to Quebec and established his first laboratory at Hôtel-Dieu. His objective was to bring together scientists and researchers from various fields while supporting the training and development of clinical researchers, as modelled by his European counterparts.
In 1964 he became Director of the Department of Medicine at the University of Montreal, garnering the support he needed to establish the Centre médical Claude-Bernard in 1967. Known today as the Institut de recherches cliniques de Montréal, this institute persists as a leading research centre with five research divisions, including a Bioethics Research Centre inaugurated by Dr. Genest, that is recognized internationally as an authority on the social and ethical aspects of medicine.
A career advocate for the important role of strong clinical research in the advancement of medicine, Dr. Genest mentored hundreds of medical researchers, encouraging many to obtain postgraduate degrees and to continue in careers of clinical research. His impact on medicine in Quebec, throughout Canada and internationally has been recognized with various accolades and awards, including twelve honorary degrees.
He removed psychology from the realm of metaphysics and placed it firmly in the world of science.


text:
require 'rmagick'
require 'test/unit'
require 'test/unit/ui/console/testrunner' unless RUBY_VERSION[/^1\.9|^2/]

class ImageList1_UT < Test::Unit::TestCase
    def setup
        @list = Magick::ImageList.new(*FILES[0..9])
        @list2 = Magick::ImageList.new   # intersection is 5..9
        @list2 << @list[5]
        @list2 << @list[6]
        @list2 << @list[7]
        @list2 << @list[8]
        @list2 << @list[9]
    end

    def test_delay
        assert_nothing_raised { @list.delay }
        assert_equal(0, @list.delay)
        assert_nothing_raised { @list.delay = 20 }
        assert_equal(20, @list.delay)
        assert_raise(ArgumentError) { @list.delay = 'x' }
    end

    def test_ticks_per_second
        assert_nothing_raised { @list.ticks_per_second }
        assert_equal(100, @list.ticks_per_second)
        assert_nothing_raised { @list.ticks_per_second = 1000 }
        assert_equal(1000, @list.ticks_per_second)
        assert_raise(ArgumentError) { @list.ticks_per_second = 'x' }
    end

    def test_iterations
        assert_nothing_raised { @list.iterations }
        assert_equal(1, @list.iterations)
        assert_nothing_raised { @list.iterations = 20 }
        assert_equal(20, @list.iterations)
        assert_raise(ArgumentError) { @list.iterations = 'x' }
    end

    # also tests #size
    def test_length
        assert_nothing_raised { @list.length }
        assert_equal(10, @list.length)
        assert_raise(NoMethodError) { @list.length = 2 }
    end

    def test_scene
        assert_nothing_raised { @list.scene }
        assert_equal(9, @list.scene)
        assert_nothing_raised { @list.scene = 0 }
        assert_equal(0, @list.scene)
        assert_nothing_raised { @list.scene = 1 }
        assert_equal(1, @list.scene)
        assert_raise(IndexError) { @list.scene = -1 }
        assert_raise(IndexError) { @list.scene = 1000 }
        assert_raise(IndexError) { @list.scene = nil }

        # allow nil on empty list
        empty_list = Magick::ImageList.new
        assert_nothing_raised { empty_list.scene = nil }
    end

    def test_undef_array_methods
        assert_raise(NoMethodError) { @list.assoc }
        assert_raise(NoMethodError) { @list.flatten }
        assert_raise(NoMethodError) { @list.flatten! }
        assert_raise(NoMethodError) { @list.join }
        assert_raise(NoMethodError) { @list.pack }
        assert_raise(NoMethodError) { @list.rassoc }
    end

    def test_all
        q = nil
        assert_nothing_raised { q = @list.all? { |i| i.class == Magick::Image } }
        assert(q)
    end

    def test_any
        q = nil
        assert_nothing_raised { q = @list.all? { |i| false } }
        assert(!q)
        assert_nothing_raised { q = @list.all? { |i| i.class == Magick::Image } }
        assert(q)
    end

    def test_aref
        assert_nothing_raised { @list[0] }
        assert_instance_of(Magick::Image, @list[0])
        assert_instance_of(Magick::Image, @list[-1])
        assert_instance_of(Magick::ImageList, @list[0,1])
        assert_instance_of(Magick::ImageList, @list[0..2])
        assert_nil(@list[20])
    end

    def test_aset
        img = Magick::Image.new(5,5)
        assert_nothing_raised do
            rv = @list[0] = img
            assert_same(img, rv)
            assert_same(img, @list[0])
            assert_equal(0, @list.scene)
        end

        # replace 2 images with 1
        assert_nothing_raised do
            img = Magick::Image.new(5,5)
            rv = @list[1,2] = img
            assert_same(img, rv)
            assert_equal(9, @list.length)
            assert_same(img, @list[1])
            assert_equal(1, @list.scene)
        end

        # replace 1 image with 2
        assert_nothing_raised do
            img = Magick::Image.new(5,5)
            img2 = Magick::Image.new(5,5)
            ary = [img, img2]
            rv = @list[3,1] = ary
            assert_same(ary, rv)
            assert_equal(10, @list.length)
            assert_same(img, @list[3])
            assert_same(img2, @list[4])
            assert_equal(4, @list.scene)
        end

        assert_nothing_raised do
            img = Magick::Image.new(5,5)
            rv = @list[5..6] = img
            assert_same(img, rv)
            assert_equal(9, @list.length)
            assert_same(img, @list[5])
            assert_equal(5, @list.scene)
        end

        assert_nothing_raised do
            ary = [img, img]
            rv = @list[7..8] = ary
            assert_same(ary, rv)
            assert_equal(9, @list.length)
            assert_same(img, @list[7])
            assert_same(img, @list[8])
            assert_equal(8, @list.scene)
        end

        assert_nothing_raised do
            rv = @list[-1] = img
            assert_same(img, rv)
            assert_equal(9, @list.length)
            assert_same(img, @list[8])
            assert_equal(8, @list.scene)
        end

        assert_raise(ArgumentError) { @list[0] = 1 }
        assert_raise(ArgumentError) { @list[0,1] = [1,2] }
        assert_raise(ArgumentError) { @list[2..3] = 'x' }
    end

    def test_and
        @list.scene = 7
        cur = @list.cur_image
        assert_nothing_raised do
            res = @list & @list2
            assert_instance_of(Magick::ImageList, res)
            assert_not_same(res, @list)
            assert_not_same(res, @list2)
            assert_equal(5, res.length)
            assert_equal(2, res.scene)
            assert_same(cur, res.cur_image)
        end

        # current scene not in the result, set result scene to last image in result
        @list.scene = 2
        assert_nothing_raised do
            res = @list & @list2
            assert_instance_of(Magick::ImageList, res)
            assert_equal(4, res.scene)
        end

        assert_raise(ArgumentError) { @list & 2 }
    end

    def test_at
         assert_nothing_raised do
            cur = @list.cur_image
            img = @list.at(7)
            assert_same(img, @list[7])
            assert_same(cur, @list.cur_image)
            img = @list.at(10)
            assert_nil(img)
            assert_same(cur, @list.cur_image)
            img = @list.at(-1)
            assert_same(img, @list[9])
            assert_same(cur, @list.cur_image)
         end
    end

    def test_star
        @list.scene = 7
        cur = @list.cur_image
        assert_nothing_raised do
            res = @list * 2
            assert_instance_of(Magick::ImageList, res)
            assert_equal(20, res.length)
            assert_not_same(res, @list)
            assert_same(cur, res.cur_image)
        end

        assert_raise(ArgumentError) { @list * 'x' }
    end

    def test_plus
        @list.scene = 7
        cur = @list.cur_image
        assert_nothing_raised do
            res = @list + @list2
            assert_instance_of(Magick::ImageList, res)
            assert_equal(15, res.length)
            assert_not_same(res, @list)
            assert_not_same(res, @list2)
            assert_same(cur, res.cur_image)
        end

        assert_raise(ArgumentError) { @list + [2] }
    end

    def test_minus
        @list.scene = 0
        cur = @list.cur_image
        assert_nothing_raised do
            res = @list - @list2
            assert_instance_of(Magick::ImageList, res)
            assert_equal(5, res.length)
            assert_not_same(res, @list)
            assert_not_same(res, @list2)
            assert_same(cur, res.cur_image)
        end

        # current scene not in result - set result scene to last image in result
        @list.scene = 7
        cur = @list.cur_image
        assert_nothing_raised do
            res = @list - @list2
            assert_instance_of(Magick::ImageList, res)
            assert_equal(5, res.length)
            assert_equal(4, res.scene)
        end
    end

    def test_catenate
        assert_nothing_raised do
            @list2.each { |img| @list << img }
            assert_equal(15, @list.length)
            assert_equal(14, @list.scene)
        end

        assert_raise(ArgumentError) { @list << 2 }
        assert_raise(ArgumentError) { @list << [2] }
    end

    def test_or
        assert_nothing_raised do
            @list.scene = 7
            # The or of these two lists should be the same as @list
            # but not be the *same* list
            res = @list | @list2
            assert_instance_of(Magick::ImageList, res)
            assert_not_same(res, @list)
            assert_not_same(res, @list2)
            assert_equal(res, @list)
        end

        # Try or'ing disjoint lists
        temp_list = Magick::ImageList.new(*FILES[10..14])
        res = @list | temp_list
        assert_instance_of(Magick::ImageList, res)
        assert_equal(15, res.length)
        assert_equal(7, res.scene)

        assert_raise(ArgumentError) { @list | 2 }
        assert_raise(ArgumentError) { @list | [2] }
    end

    def test_clear
        assert_nothing_raised { @list.clear }
        assert_instance_of(Magick::ImageList, @list)
        assert_equal(0, @list.length)
        assert_nil(@list.scene)
    end

    def test_collect
        assert_nothing_raised do
            cur = @list.cur_image
            scene = @list.scene
            res = @list.collect { |img| img.negate }
            assert_instance_of(Magick::ImageList, res)
            assert_not_same(res, @list)
            assert_equal(scene, res.scene)
        end
        assert_nothing_raised do
            scene = @list.scene
            @list.collect! { |img| img.negate }
            assert_instance_of(Magick::ImageList, @list)
            assert_equal(scene, @list.scene)
        end
    end

    def test_compact
        assert_nothing_raised do
            res = @list.compact
            assert_not_same(res, @list)
            assert_equal(res, @list)
        end
        assert_nothing_raised do
            res = @list
            @list.compact!
            assert_instance_of(Magick::ImageList, @list)
            assert_equal(res, @list)
            assert_same(res, @list)
        end
    end

    def test_concat
        assert_nothing_raised do
            res = @list.concat(@list2)
            assert_instance_of(Magick::ImageList, res)
            assert_equal(15, res.length)
            assert_same(res[14], res.cur_image)
        end
        assert_raise(ArgumentError) { res = @list.concat(2) }
        assert_raise(ArgumentError) { res = @list.concat([2]) }
    end

    def test_delete
        assert_nothing_raised do
            cur = @list.cur_image
            img = @list[7]
            assert_same(img, @list.delete(img))
            assert_equal(9, @list.length)
            assert_same(cur, @list.cur_image)

            # Try deleting the current image.
            assert_same(cur, @list.delete(cur))
            assert_same(@list[-1], @list.cur_image)

            assert_raise(ArgumentError) { @list.delete(2) }
            assert_raise(ArgumentError) { @list.delete([2]) }

            # Try deleting something that isn't in the list.
            # Should return the value of the block.
            assert_nothing_raised do
                img = Magick::Image.read(FILES[10]).first
                res = @list.delete(img) { 1 }
                assert_equal(1, res)
            end
        end
    end

    def test_delete_at
        @list.scene = 7
        cur = @list.cur_image
        assert_nothing_raised { @list.delete_at(9) }
        assert_same(cur, @list.cur_image)
        assert_nothing_raised { @list.delete_at(7) }
        assert_same(@list[-1], @list.cur_image)
    end

    def test_delete_if
        @list.scene = 7
        cur = @list.cur_image
        assert_nothing_raised do
            @list.delete_if { |img| img.filename =~ /5/ }
            assert_instance_of(Magick::ImageList, @list)
            assert_equal(9, @list.length)
            assert_same(cur, @list.cur_image)
        end

        # Delete the current image
        assert_nothing_raised do
            @list.delete_if { |img| img.filename =~ /7/ }
            assert_instance_of(Magick::ImageList, @list)
            assert_equal(8, @list.length)
            assert_same(@list[-1], @list.cur_image)
        end
    end

    # defined by Enumerable
    def test_enumerables
      assert_nothing_raised { @list.detect { true } }
      assert_nothing_raised do
        @list.each_with_index { |img, n| assert_instance_of(Magick::Image, img) }
      end
      assert_nothing_raised { @list.entries }
      assert_nothing_raised { @list.include?(@list[0]) }
      assert_nothing_raised { @list.inject(0) { 0 } }
      assert_nothing_raised { @list.max }
      assert_nothing_raised { @list.min }
      assert_nothing_raised { @list.sort }
      assert_nothing_raised { @list.sort_by {|img| img.signature} }
      assert_nothing_raised { @list.zip }
    end

    def test_eql?
      list2 = @list
      assert(@list.eql?(list2))
      list2 = @list.copy
      assert(! @list.eql?(list2))
    end

    def test_fill
        list = @list.copy
        img = list[0].copy
        assert_nothing_raised do
            assert_instance_of(Magick::ImageList, list.fill(img))
        end
        list.each {|el| assert_same(el, img) }

        list = @list.copy
        list.fill(img, 0, 3)
        0.upto(2) {|i| assert_same(img, list[i]) }

        list = @list.copy
        list.fill(img, 4..7)
        4.upto(7) {|i| assert_same(img, list[i]) }

        list = @list.copy
        list.fill { |i| list[i] = img }
        list.each {|el| assert_same(el, img) }

        list = @list.copy
        list.fill(0, 3) { |i| list[i] = img }
        0.upto(2) {|i| assert_same(img, list[i]) }

        assert_raise(ArgumentError) { list.fill('x', 0) }
    end

    def test_find
      assert_nothing_raised { @list.find { true } }
    end

    def find_all
        assert_nothing_raised do
            res = @list.select { |img| img.filename =~ /Button_2/ }
            assert_instance_of(Magick::ImageList, res)
            assert_equal(1, res.length)
            assert_same(res[0], @list[2])
        end
    end

    def test_insert
        assert_nothing_raised do
            @list.scene = 7
            cur = @list.cur_image
            assert_instance_of(Magick::ImageList, @list.insert(1, @list[2]))
            assert_same(cur, @list.cur_image)
            @list.insert(1, @list[2], @list[3], @list[4])
            assert_same(cur, @list.cur_image)
        end

        assert_raise(ArgumentError) { @list.insert(0, 'x') }
        assert_raise(ArgumentError) { @list.insert(0, 'x', 'y') }
    end

    def test_last
        img = Magick::Image.new(5,5)
        @list << img
        img2 = nil
        assert_nothing_raised { img2 = @list.last }
        assert_instance_of(Magick::Image, img2)
        assert_equal(img2, img)
        img2 = Magick::Image.new(5,5)
        @list << img2
        ilist = nil
        assert_nothing_raised { ilist = @list.last(2) }
        assert_instance_of(Magick::ImageList, ilist)
        assert_equal(2, ilist.length)
        assert_equal(1, ilist.scene)
        assert_equal(img, ilist[0])
        assert_equal(img2, ilist[1])
    end

    def test___map__
        img = @list[0]
        assert_nothing_raised do
            @list.__map__ { |x| img }
        end
        assert_instance_of(Magick::ImageList, @list)
        assert_raise(ArgumentError) { @list.__map__ { 2 } }
    end

    def test_map!
        img = @list[0]
        assert_nothing_raised do
            @list.map! { img }
        end
        assert_instance_of(Magick::ImageList, @list)
        assert_raise(ArgumentError) { @list.map! { 2 } }
    end

    unless RUBY_VERSION[/^1\.9|^2/]
       def test_nitems
         n = nil
         assert_nothing_raised { n = @list.nitems }
         assert_equal(10, n)
       end
    end

    def test_partition
      a = nil
      n = -1
      assert_nothing_raised { a = @list.partition { n += 1; (n&1).zero? } }
      assert_instance_of(Array, a)
      assert_equal(2, a.size)
      assert_instance_of(Magick::ImageList, a[0])
      assert_instance_of(Magick::ImageList, a[1])
      assert_equal(4, a[0].scene)
      assert_equal(5, a[0].length)
      assert_equal(4, a[1].scene)
      assert_equal(5, a[1].length)
    end

    def test_pop
        @list.scene = 8
        cur = @list.cur_image
        last = @list[-1]
        assert_nothing_raised do
            assert_same(last, @list.pop)
            assert_same(cur, @list.cur_image)
        end

        assert_same(cur, @list.pop)
        assert_same(@list[-1], @list.cur_image)
    end

    def test_push
        list = @list
        img1 = @list[0]
        img2 = @list[1]
        assert_nothing_raised { @list.push(img1, img2) }
        assert_same(list, @list)    # push returns self
        assert_same(img2, @list.cur_image)
    end

    def test_reject
        @list.scene = 7
        cur = @list.cur_image
        list = @list
        assert_nothing_raised do
            res = @list.reject {|img| img.filename =~ /Button_9/ }
            assert_equal(9, res.length)
            assert_instance_of(Magick::ImageList, res)
            assert_same(cur, res.cur_image)
        end
        assert_same(list, @list)
        assert_same(cur, @list.cur_image)

        # Omit current image from result list - result cur_image s/b last image
        res = @list.reject {|img| img.filename =~ /Button_7/}
        assert_equal(9, res.length)
        assert_same(res[-1], res.cur_image)
        assert_same(cur, @list.cur_image)
    end

    def test_reject!
        @list.scene = 7
        cur = @list.cur_image
        assert_nothing_raised do
            @list.reject! { |img| img.filename =~ /5/ }
            assert_instance_of(Magick::ImageList, @list)
            assert_equal(9, @list.length)
            assert_same(cur, @list.cur_image)
        end

        # Delete the current image
        assert_nothing_raised do
            @list.reject! { |img| img.filename =~ /7/ }
            assert_instance_of(Magick::ImageList, @list)
            assert_equal(8, @list.length)
            assert_same(@list[-1], @list.cur_image)
        end

        # returns nil if no changes are made
        assert_nil(@list.reject! { false })
    end

    def test_replace1
        # Replace with empty list
        assert_nothing_raised do
            res = @list.replace([])
            assert_same(res, @list)
            assert_equal(0, @list.length)
            assert_nil(@list.scene)
        end

        # Replace empty list with non-empty list
        temp = Magick::ImageList.new
        assert_nothing_raised do
            temp.replace(@list2)
            assert_equal(5, temp.length)
            assert_equal(4, temp.scene)
        end

        # Try to replace with illegal values
        assert_raise(ArgumentError) { @list.replace([1, 2, 3]) }
    end

    def test_replace2
        # Replace with shorter list
        assert_nothing_raised do
            @list.scene = 7
            cur = @list.cur_image
            res = @list.replace(@list2)
            assert_same(res, @list)
            assert_equal(5, @list.length)
            assert_equal(2, @list.scene)
            assert_same(cur, @list.cur_image)
        end
    end

    def test_replace3
        # Replace with longer list
        assert_nothing_raised do
            @list2.scene = 2
            cur = @list2.cur_image
            res = @list2.replace(@list)
            assert_same(res, @list2)
            assert_equal(10, @list2.length)
            assert_equal(7, @list2.scene)
            assert_same(cur, @list2.cur_image)
        end
    end

    def test_reverse
        list = nil
        cur = @list.cur_image
        assert_nothing_raised { list = @list.reverse }
        assert_equal(list.length, @list.length)
        assert_same(cur, @list.cur_image)
    end

    def test_reverse!
        list = @list
        cur = @list.cur_image
        assert_nothing_raised { @list.reverse! }
        assert_same(list, @list)
        assert_same(cur, @list.cur_image)
    end

    # Just validate its existence
    def test_reverse_each
      assert_nothing_raised do
          @list.reverse_each { |img| assert_instance_of(Magick::Image, img) }
      end
    end

    def test_rindex
      img = @list.last
      n = nil
      assert_nothing_raised { n = @list.rindex(img) }
      assert_equal(9, n)
    end

    def test_select
        assert_nothing_raised do
            res = @list.select { |img| img.filename =~ /Button_2/ }
            assert_instance_of(Magick::ImageList, res)
            assert_equal(1, res.length)
            assert_same(res[0], @list[2])
        end
    end

    def test_shift
        assert_nothing_raised do
            @list.scene = 0
            res = @list[0]
            img = @list.shift
            assert_same(res, img)
            assert_equal(8, @list.scene)
        end
        res = @list[0]
        img = @list.shift
        assert_same(res, img)
        assert_equal(7, @list.scene)
    end

    def test_slice
        assert_nothing_raised { @list.slice(0) }
        assert_nothing_raised { @list.slice(-1) }
        assert_nothing_raised { @list.slice(0,1) }
        assert_nothing_raised { @list.slice(0..2) }
        assert_nothing_raised { @list.slice(20) }
    end

    def test_slice!
        @list.scene = 7
        assert_nothing_raised do
            img0 = @list[0]
            img = @list.slice!(0)
            assert_same(img0, img)
            assert_equal(9, @list.length)
            assert_equal(6, @list.scene)
        end
        cur = @list.cur_image
        img = @list.slice!(6)
        assert_same(cur, img)
        assert_equal(8, @list.length)
        assert_equal(7, @list.scene)
        assert_nothing_raised { @list.slice!(-1) }
        assert_nothing_raised { @list.slice!(0,1) }
        assert_nothing_raised { @list.slice!(0..2) }
        assert_nothing_raised { @list.slice!(20) }
    end

    # simply ensure existence
    def test_sort
      assert_nothing_raised { @list.sort }
      assert_nothing_raised { @list.sort! }
    end

    def test_to_a
      a = nil
      assert_nothing_raised { a = @list.to_a }
      assert_instance_of(Array, a)
      assert_equal(10, a.length)
    end

    def test_uniq
        assert_nothing_raised { @list.uniq }
        assert_instance_of(Magick::ImageList, @list.uniq)
        @list[1] = @list[0]
        @list.scene = 7
        list = @list.uniq
        assert_equal(9, list.length)
        assert_equal(6, list.scene)
        assert_equal(7, @list.scene)
        @list[6] = @list[7]
        list = @list.uniq
        assert_equal(8, list.length)
        assert_equal(5, list.scene)
        assert_equal(7, @list.scene)
    end

    def test_uniq!
        assert_nothing_raised do
            assert_nil(@list.uniq!)
        end
        @list[1] = @list[0]
        @list.scene = 7
        cur = @list.cur_image
        list = @list
        @list.uniq!
        assert_same(list, @list)
        assert_same(cur, @list.cur_image)
        assert_equal(6, @list.scene)
        @list[5] = @list[6]
        @list.uniq!
        assert_same(cur, @list.cur_image)
        assert_equal(5, @list.scene)
    end

    def test_unshift
        img = @list[9]
        @list.scene = 7
        @list.unshift(img)
        assert_equal(0, @list.scene)
        assert_raise(ArgumentError) { @list.unshift(2) }
        assert_raise(ArgumentError) { @list.unshift([1,2]) }
    end

    def test_values_at
        ilist = nil
        assert_nothing_raised { ilist = @list.values_at(1,3,5) }
        assert_instance_of(Magick::ImageList, ilist)
        assert_equal(3, ilist.length)
        assert_equal(2, ilist.scene)
    end

    def test_spaceship
        list2 = @list.copy
        assert_equal(@list.scene, list2.scene)
        assert_equal(@list, list2)
        list2.scene = 0
        assert_not_equal(@list, list2)
        list2 = @list.copy
        list2[9] = list2[0]
        assert_not_equal(@list, list2)
        list2 = @list.copy
        list2 << @list[9]
        assert_not_equal(@list, list2)

        assert_raise(TypeError) { @list <=> 2 }
        list = Magick::ImageList.new
        list2 = Magick::ImageList.new
        assert_raise(TypeError) { list2 <=> @list }
        assert_raise(TypeError) { @list <=> list2 }
        assert_nothing_raised(TypeError) { list <=> list2 }
    end
end

if __FILE__ == $PROGRAM_NAME
IMAGES_DIR = '../doc/ex/images'
FILES = Dir[IMAGES_DIR+'/Button_*.gif'].sort
Test::Unit::UI::Console::TestRunner.run(ImageList1_UT) unless RUBY_VERSION[/^1\.9|^2/]
end


The Core Working Group discussed N2337 "The Syntax of auto Declarations" by Daveed Vandevoorde in Kona. The consensus was to remove the use of "auto" as a storage class specifier entirely. This paper presents proposed changes to the working paper to implement that approach, resolving core issue 629.
The storage class specifiers static and auto are related to storage duration as described below.
Local objects explicitly declared auto or register or not explicitly declared static or extern have automatic storage duration. The storage for these objects lasts until the block in which they are created exits.
... If the auto type-specifier appears in the type-specifier-seq, the type-specifier-seq shall contain no other type-specifiers except cv-qualifiers, and the type of the identifier being declared is deduced from the assignment-expression as described in 7.1.6.4 dcl.spec.auto.
auto can be combined with any type specifier except itself.
The auto type-specifier has two meanings depending on the context of its use. In a decl-specifier-seq that contains at least one type-specifier (in addition to auto) that is not a cv-qualifier, the auto type-specifier specifies that the object named in the declaration has automatic storage duration. The decl-specifier-seq shall contain no storage-class-specifiers. This use of the auto specifier shall only be applied to names of objects declared in a block (6.3) or to function parameters (8.4).
Otherwise (auto appearing with no type specifiers other than cv-qualifiers), the The auto type-specifier signifies that the type of an object being declared shall be deduced from its initializer. The name of the object being declared shall not appear in the initializer expression.
An auto, A static, extern, register, mutable, friend, inline, virtual, or typedef specifier applies directly to each declarator-id in an init-declarator-list; the type specified for each declarator-id depends on both the decl-specifier-seq and its declarator.
A member shall not be declared to have automatic storage duration (auto, register) or with the extern or register storage-class-specifiers.
Change: The keyword auto cannot be used as a storage class specifier.
Rationale: Allowing the use of auto to deduce the type of a variable from its initializer results in undesired interpretations of auto as a storage class specifier in certain contexts.
Effect on original feature: Deletion of semantically well-defined feature.
Difficulty of converting: Syntactic transformation.


Major industrial chemical accidents are low frequency, but highly significant events in terms of loss of lives, injuries, environmental impact and material damage. These accidents may occur in industrial process, energy-related and transport activities. They are generally associated with either large inventories of flammable, explosive, or very reactive substances or of common toxic chemicals in process industries or smaller quantities of very toxic and persistent chemicals.
The frequency and severity of these accidents seems to have increased during the last few years (Seveso, Mexico, Bhopal, Basle, etc.,). This increased frequency may be related to the rapid development of the chemical and petrochemical industries, the diversification of derived products, the increase in the size of plants, storage and carriers,the progressive industrialization in developing countries, and the proximity of plants to densely populated areas.
Chemical accidents involve a series of events starting with a technical breakdown or human error initiating uncontrollable physio-chemical phenomena, such as runaway chemical reactions, fires and explosions.These events are followed by propagation beyond the plant boundaries of toxic compounds in gaseous or liquid phase or as particulates. Damage may also be cause by the blast of explosions or the heat of fires.
occurs, engineering systems (scrubbers, flares, venting systems, etc.) should intervene to mitigate its consequences.
Disaster is a rarity in the chemical industry, but negligence or misfortune can so easily result in devastating consequences.
CONSIDERING THE potentially dangerous materials and processes employed in the chemical sector, most producers can be justifiably proud of their health and safety records. Occasionally, however, things do go wrong.
Aside from the immediate implications surrounding a major incident, such as loss of life, a threat to the environment or the destruction of plants and surrounding buildings, the damage to the industry's reputation is almost irrevocable.
"The Seveso disaster [in Italy] in 1976 was a major environmental incident and the trigger that made people realize that a Europe-wide environment policy was needed it marked the birth of the [Seveso] directive," says Verbist.
"But without doubt, Bhopal [in India] in 1984 was the most important catastrophe ever seen in the chemical industry,"he says. "At that time,chemical industry was already preparing the Responsible Care initiative, but Bhopal triggered its launch the following year.
Workers at BASF's Oppau site, in Germany, decided that the best course of action to loosen a 4,500 tonne mound of ammonium nitrate (AN) and ammonium sulfate that had solidified was to detonate several dynamite charges.
The accident destroyed around 80% of the homes in Oppau and ripped the roofs off houses as far as 25km (10 miles) away.
On the morning of April 16, 1947, a French ship -The Grand camp -was being loaded with ammonium nitrate (AN) fertilizer. With over 2,000 tonnes of AN on board, a fire started in the hold. Not wanting to damage the cargo, the captain refused to use water on the flames and opted instead to control the fire using the steam system.
A 15ft (4.6m) wave swept a barge ashore, buildings were destroyed - including a Monsanto chemical plant nearby - and the ship's anchor was found more than a mile away. There were around 3,500 injuries and 576 people were killed.
The 2005 disaster at UK oil major BP's Texas City refinery, in Texas, US, was considered the nation's worst industrial disaster in 15 years.
A series of explosions occurred when a hydrocarbon isomerization unit was restarted and a distillation tower flooded with hydrocarbons. As a result, 15 were killed and another 180 were injured. BP admitted to charges and accepted fines last year, with BP America chairman Bob Malone conceding that the company was guilty of a felony "for failing to have adequate written procedures for maintaining the ongoing mechanical integrity of process equipment at the Texas City refinery.
A series of explosions rocked China-based Jilin Petrochemical's 70,000 tonne/year aniline complex in Northeast China, killing five and injuring 70. Benzene also leaked into the Songhua river and caused millions of people to go without drinking water, with many fleeing their homes.
A gas leak at US-based Union Carbide's pesticide plant in Bhopal, India, is cited as one of the chemical industry's greatest tragedies.
On December 3, 1984, methyl isocyanate gas leaked from the facility during the early hours of the morning while local residents slept. Around 2,000 people died immediately, with another 8,000 dying later.
In 1974, cyclohexane vapor leaked from ruptured pipework at the Nypro (UK) site at Flixborough. This resulted in an explosion that killed 28 people and injured 36.
Offsite, 53 injuries were reported. Property in the surrounding area was also severely damaged.
Around 300 tonnes of ammonium nitrate (AN) exploded, destroying the site and wrecking buildings 3km (1 mile) away in the city center.The blast left a crater 50m (164 feet) wide and 10m deep. It was responsible for the death of 30 people, and 10,000 injuries.
The blast left a crater 50m (164 feet) wide and 10m deep. It was responsible for the death of 30 people, and 10,000 injuries.
Water used to extinguish a major fire at the Sandoz chemical factory in 1986 washed chemicals into the river Rhine, one of Europe's busiest waterways. The spill caused severe pollution, which took years to eradicate, and killed an estimated 500,000 fish.


text:
Family Remembers Their Daughter 4 Weeks After Shooting In Uvalde
It's been nearly a month since the Cazares family lost Jackie in the Robb Elementary mass shooting. Jackie would have turned 10.
Newsy / Cazares family
Article by Adi Guajardo
As the sun sets, and the wind whispers — families pray for peace.
Jazmin Cazares is the sister of one of the victims, Jackie Cazares.
"She was a light, I don't know how else to explain it," she said.
9-year-old Jackie Cazares had a nickname that matched her spark.
Javier Cazares is Jackie's father.
"My mom called her a 'chispa'… you know, feisty," he said.
A feisty little sister who loved fiercely.
"She went with me to take pictures and she was crying," Jazmin said. "I remember her telling me that it's prom. Once you go to prom, it means you're leaving me soon. I think that hits me every day. Her telling me that I was going to leave her, but someone took her from me," she said.
"She wanted to be a veterinarian," Jazmin said.
An ambition cut short by a gunman who Jazmin went to Uvalde High School with.
"It makes it ten times harder knowing that I probably crossed his path before," she said.
It's been nearly a month since the Cazares lost Jackie in the Robb Elementary mass shooting.
In that month – Jackie would have turned 10, and celebrated Father's day with her dad.
Stolen memories are weighing heavy on her father's heart.
"...That we couldn't help her," her father said.
He's vowed to fight for change in Jackie's name, and his family will continue to demand accountability.
"Someone needs to be held accountable," Jazmin said.
They're still waiting for that accountability in Uvalde, Texas, but there's something that will eventually help bring the family closure, as they hang on to the special moments to get them through their darkest days.
JAZMIN: Knew she loved me. I know she was my sister. But seeing that, like seeing that she made a video about me. It's like.
NEWSY'S ADI GUAJARDO: Shows how much she loved you.
JAZMIN: Mm hmm.
A love on display down to her last day on earth.
"I blew a kiss, and then I really never did that after those. You know, I really never did that. But that day I made it a point to do that and that that was the last time, I saw her so yeah it was special," Javier said.


One of our best sellers in Graz! City Apartment Hauptbahnhof offers accommodations in Graz, 1.2 miles from Casino Graz and 1.2 miles from Grazer Landhaus. Providing private parking, the apartment is 1.6 miles from Graz Town Hall.
With free WiFi, this apartment has a satellite flat-screen TV and a kitchen with an oven and microwave. The apartment also provides a bathroom with a shower.
City Apartment Hauptbahnhof has a grill. Guests can also relax in the garden.
Eggenberg Palace is 1.7 miles from the accommodation, while Graz Opera House is 1.8 miles away. The nearest airport is Thalerhof Airport, 6 miles from City Apartment Hauptbahnhof.
Gries is a great choice for travelers interested in old-town exploration, sightseeing and walking.
When would you like to stay at City Apartment Hauptbahnhof?
This apartment has a dining area, barbecue and stovetop.
House Rules City Apartment Hauptbahnhof takes special requests – add in the next step!
Guest need to call 1 hour before arrival, since there is no open reception.
Please inform City Apartment Hauptbahnhof of your expected arrival time in advance. You can use the Special Requests box when booking, or contact the property directly using the contact details in your confirmation.
We need at least 5 reviews before we can calculate a review score. If you book and review your stay, you can help City Apartment Hauptbahnhof meet this goal.


A hidden gem in the heart of the City, All Souls Chapel combines faith, art and architectural splendor inside its beautiful sandstone walls. Built in 1888, by a number of well-known artisans in the City, it was a design by prominent architect, William Critchlow Harris.
His brother, the famous artist, Robert Harris painted no less than 15 murals depicting biblical scenes. Stop in sometime and look closely within each painting and you will find the faces of St Peter's Cathedral's parishioners of the day.
All Souls Chapel was designated as a National Historic Site on 23 February 1990.


Are you looking for someone who you can trust?
Are you looking for a local hypnotherapist near you?
Are you wanting to change something about your life today?
The Institute of Interpersonal Hypnotherapy is pleased to offer private sessions with our highly-qualified Associates. All of our practitioners are graduates in good standing with State-Licensed Diplomas and IAIH Certifications. All are required to sign the IAIH Code of Ethics and to operate with high levels of professionalism, confidentiality and with some of the most comprehensive training in the Country.
Simply call the Clinic at 813-461-0188 and a friendly clinic representative will talk to you about your needs and will schedule you to have a free consultation with the appropriate practitioner in your area.
All Associates are required to operate within the confines of Federal, State, County and City laws. All are required to abide by Florida Hypnosis Statutes 485, where medical, dental and mental health conditions require the prescription, referral, direction or supervision from the appropriate licensed practitioner of the healing arts.


text:
Maximilian Schumann, född 26 juni 1827 i Magdeburg, död 5 september 1889 i Schierke, Harz, var en preussisk ingenjörofficer och pansarkonstruktör.

Schumann började som kapten i Mainz (sedan 1861) sysselsätta sig med pansarfrågan, besökte 1863 och 1865 England för pansarstudier och utförde 1866 en del försök i Mainz med ett pansarskyddat "Geschützstand". Han kommenderades därefter till ingenjörkommittén i Berlin. Försök med ett i Tegel uppställt pansartorn av valsat järn blev 1870 avbrutna av fransk-tyska kriget, men fortsattes efter dettas slut och ledde till ett storartat resultat. Detta oaktat tog han dock avsked 1872, varefter han var särskilt verksam för åstadkommandet av Hermann Grusons Hartguss-torn.

År 1878 framträdde Schumann med förslag till pansarlavett och arbetade sedan tillsammans med Gruson. Skjutförsöken vid Bukarest i december 1885 till januari 1886 visade fördelarna av Schumanns konstruktioner framför det franska S:t Chamond-tornet, hans ständigt förbättrade konstruktioner vann överallt erkännande, och hans idéer om en i följd av pansars användning nödvändig omgestaltning av fästningsbyggandet (i Die Bedeutung drehbarer Geschutzpanzer, andra upplagan 1885) slog t.o.m. kanske väl mycket an, vilket förledde honom till ett utan tvivel för långt gånget underskattande av behovet av infanteri för försvaret av befästa ställningar.

Källor

Se även
Elisæus Janus Sommerfeldt

Preussiska militärer
Tyska ingenjörer
Födda 1827
Avlidna 1889
Män
Ugglan
Personer från Magdeburg

redpajama_set_name: RedPajamaWikipedia


HAPPY FAMILY with the 4-day old, Josiah Andrew.
LEGOS, and a whole box of them. Our friends surprised their sons with this gift after arriving from America.
YARN WINDER in Joypara preparing thread for weaving a lungi.
CARPENTRY TOOLS which were being used to build cupboards.
THE TWO MUNCHKINS we took care of while their Mother was at the hospital awaiting the arrival of their little brother! They weren't as menacing as they look!
JOSIAH ANDREW PETERSHEIM arrives at 12 Noon! A big congratulations to his family!
DUE DATE FOR OUR FRIEND I guess we still have just under 6 hours for the baby to come on the due date. Thanks, my friend for letting me post this sight-unseen. I thought her friends would appreciate a current photo! 🙂 It feels like I'm going to be a Grandpa again!!
MILK which my friend sells to neighbors and friends. He has at least 5 cows, a fish farm, and helps his father operate a tea stand. They have a "cowboy" who leads the cows out of the family courtyard and out to eat grass.
CHAIRS, CHAIRS AND MORE CHAIRS on Eid day near the Zia Park.
Camerist is an old term used for the photographer. Delmar Penner took this photo in Kumarkhali, Bangladesh. This is a photo of myself some villagers enjoying seeing their photo on my camera.
A PIZZA HUT CELEBRATION was scheduled for my birthday in August, resulted in them doing their H.B. chant for me and giving me this bouquet of flowers. I don't think this is normal, but I think they remembered that I was a good friend of one of their workers who had just quit. I had played football with him, and usually he gave me and Alice a free cup of coffee or ice cream when we came with friends.
Take time today to have some coffee with a friend. Time is fleeting and precious. Don't put it off, tomorrow may be too late.


The greatest pleasure in my life is leading the Wild Women Hiking Adventure Club. I love the Los Angeles trails so much that it simply isn't enough for me to hike them alone. I have a passion to introduce others to the beauty and trail history that you can only experience on foot. I really feel it as a calling to expose women to this sport of wilderness hiking that can feel scary to undertake on one's own. Snakes, coyotes, strangers, and unfamiliar trails all seem threatening to someone who doesn't have any experience with them. I guide every hike scheduled for our club which guarantees that if even only one woman shows up to hike, she has an experienced hiking buddy at her side to guide the way and provide encouragement and moral support.
I feel incredibly humbled by the trust these women put in me and it makes me want to be better. It definitely encourages me to keep exploring and learning more about our local trails and Los Angeles' rich heritage so that I may share that richness with others.
Today I scouted a hike that was completely new to me. I've known of it for a long time, but I've never been. It is a hike that starts in the shady cool canyon of Fern Dell in Griffith Park up to Dante's View, which is a mountaintop garden oasis tended by volunteers.
I chose a route to approach Dante's View that would pack a lot of bang for the buck. First of all, to park in front of a delightful cafe, called The Trails Cafe, next to a public bathroom is a wonderful way to both start and end a hot hike up a shades mountain trail.
The path traverses the hillside toward the Griffith Observatory and past a creek with an intriguing water feature which is now dry. I look forward to returning on a rainy day to see the creek in full flow and water flowing around the sculpted rocks.
Most of the hike is in full view of The Hollywood Sign and actually ends higher up than the Hollywood sign. There was even a crow flying at eye level with me. When this happens I feel like a badass who can hike really high to the top of things. Simple pleasures.
In mid-century 1900's Dante Orgolini, a Brazilian journalist and artist, who lived in and loved Los Angeles worked with other outdoor enthusiasts and park rangers to build a mountainside garden oasis in Griffith Park. It was a labor of love started with only Orgolini, a pick, and a shovel.
Two memorial plaques overlook a lovely stand of palm trees and wildflowers. According to the markers, Joe Goldman "Liked This Park" and he "Always Promised [his wife Golda "Sally"] A View".
There are lots of interesting benches to rest on along this route.
Griffith Observatory opens at 12 noon and admission is FREE, but parking is a zoo. I couldn't believe how many school busses were parked there on my way back down the mountain. It may actually be worth it to try to hike up to the Observatory rather than try to find a spot in the lot. Chances are you'll end up parking so far down the hill you'll have to hike anyway. I remember trying to come here one time with my family and after driving around the parking lot for an hour decided to bag it.
I get to hike up here with the ladies next week. I'm so looking forward to it.
Awesome post! I love that you do your wild women adventures. Makes me wish that I had different chromosomes so I could join you, too! Haha. Sounds like great fun.
If I ever get back to LA I'll have to join you for a hike!


text:
Q: Change a field in Database on a Particular Date There is a field in my database named GRADES, what I want to accomplish is that on a particular date I want to update all the grades of a specific value to a new value. For example, let's say 5 weeks from today's date I want to update Grades from I to F.
Thanks in Advance
Note: I cannot do anything to the database like create a new table or a new field  it should be in the same table.

A: If I were starting from scratch, I might build this logic into a computed column. This may not be the best idea, but I figured I'd throw it out there as an alternative.
CREATE TABLE dbo.Grades
(
    StudentiD BIGINT,
    CourseId BIGINT,
    CourseGrade VARCHAR(2),
    FailDate DATE,
    FinalGrade AS CASE WHEN GETDATE() >= FailDate
                            AND CourseGrade = 'I' THEN 'F'
                       ELSE CourseGrade
                  END
);

When data gets inserted, you can have a default for (and a modifiable by teachers/admins) FailDate.
INSERT dbo.Grades ( StudentiD, CourseId, CourseGrade, FailDate )
VALUES ( 1, 1, 'A', GETDATE() )

INSERT dbo.Grades ( StudentiD, CourseId, CourseGrade, FailDate )
VALUES ( 1, 2, 'I', GETDATE() )

INSERT dbo.Grades ( StudentiD, CourseId, CourseGrade, FailDate )
VALUES ( 1, 3, 'B', GETDATE() )

INSERT dbo.Grades ( StudentiD, CourseId, CourseGrade, FailDate )
VALUES ( 1, 4, 'I', GETDATE() )

INSERT dbo.Grades ( StudentiD, CourseId, CourseGrade, FailDate )
VALUES ( 1, 5, 'C', GETDATE() )

This allows them to give extensions or permanently get rid of the concept by making the value NULL.
So the query
SELECT *
FROM dbo.Grades AS g

Gives us:
StudentiD   CourseId    CourseGrade FailDate    FinalGrade
1           1           A           2017-05-19  A
1           2           I           2017-05-19  F
1           3           B           2017-05-19  B
1           4           I           2017-05-19  F
1           5           C           2017-05-19  C

A: Create a SQL Agent job with an UPDATE statement making the change you desire, and schedule it for your desired date.
But really, you shouldn't be changing your grades :)