text:
TAMUC – Sports
Lion Athletics announces the Hall of Fame induction class of 2019.
COMMERCE – Texas A&M University-Commerce announced the five members of the 2019 Lion Hall of Fame class, the Bobby Fox Award recipients, and the newest members of the Lion Hall of Honor. They will be inducted on Saturday, October 12.
Former women's basketball player Britney Jordan, a three-sport athlete, and football star Clint Dolezel, men's basketball player Jermart Miller, football player Jim White, and soccer player Erin (de Wolfe) Hein, will be inducted into the Lion Athletics Hall of Fame.
This year's Bobby Fox Outstanding Alumni Coach Award recipients will be Richardson ISD Executive Director of Athletics Leslie Slovak and Brent Gaylor, head coach of back-to-back Class 1A state boys basketball champions at Lipan High School. The Hall of Honor will welcome long-time Lion supporters Joan and Rich Lawrence.
The luncheon will take place at 11:00 am on Saturday, October 12, in the Sam Rayburn Student Center on the A&M-Commerce campus. The luncheon is open to the public with a cost of $30 per person or $50 for a couple. Tickets are available online HERE, or by contacting associate director of athletics for resource development and executive director of the Lion Champions Fund Taylor Phelps to RSVP at (903) 886-5554 or taylor.phelps@tamuc.edu.
The Letter-winner's Tailgate will begin at 4:00 pm before the Lions' football game against Midwestern State at 6:00 pm. All letter-winners will be recognized on the field during the game, as well as the Hall of Fame honorees.
Membership in the Lion Athletics Hall of Fame is limited to former Lion student-athletes, coaches, and athletics administrators. Student-athletes must have completed their eligibility 10 years before nomination, while coaches and administrators must have served A&M-Commerce for a minimum of five years. Also, the nominee must be a person of such integrity, character, and sportsmanship that the A&M-Commerce family will be inspired by the recognition.
2019 LION ATHLETICS HALL OF FAME INDUCTION CLASS
BRITNEY JORDAN – Women's Basketball – 2006-09
The lone women's basketball player to cross the 2,000 point barrier, Britney Jordan is the all-time leading scorer in program history, scoring an astounding 2,105 points in her three seasons, as well as the program's all-time leader in assists (452). In her senior campaign, Jordan amassed 909 points, far and away the highest-scoring season by any Lion basketball player in a single season, earning her Lone Star Conference Player of the Year honors. To this day, Jordan's single-season scoring feat is a Lone Star Conference women's basketball record. In her debut season, Jordan helped lead the Lions to unprecedented heights, helping the team win its first regular-season LSC Championship and its first LSC Tournament Championship, earning the team its first trip to the NCAA playoffs. Jordan played a pivotal role in the Lions' march to the regional championship and a trip to the NCAA Elite Eight, earning South Central Regional Tournament Most Valuable Player. She is the only player in program history to be named a First Team All-American and is the only player in program history to receive multiple All-America awards. Jordan went on to be drafted into the WNBA.
CLINT DOLEZEL – Football, Track, and Field, Golf – 1992-94
A two-year starting quarterback for Old ET, Dolezel compiled 3,152 passing yards and 22 touchdowns to go along with three rushing touchdowns under Lion Hall of Fame coach Eddie Vowell. Dolezel also is one of only three documented players in school history to be a three-sport athlete. He also was a member of the Lion Golf and the Lion Track & Field teams. He set the school record in the javelin at 197-7 in the 1993 season. After his collegiate playing career ended, Dolezel would go on to play in the Arena Football League for 13 seasons, becoming the first professional quarterback to throw for 900 career touchdowns. His 931 touchdown passes rank second all-time in AFL history. He also ranks third all-time in passing yards (44,564). Dolezel helped lead the Grand Rapids Rampage to the 2001 ArenaBowl Championship. He also played for the Milwaukee Mustangs, the Houston ThunderBears, the Las Vegas Gladiators, and the Dallas Desperados. He was elected into the AFL Hall of Fame in 2012. After his playing career ended, Dolezel went into the coaching ranks, becoming the head coach for the San Antonio Stampede Express in 2010. He has been the head coach of the Philadelphia Soul since 2013, leading the team to consecutive AFL Championships (2016, 2017), winning the 2016 Bobby Fox Award.
JERMART MILLER – Men's Basketball – 2004-06
In his two seasons with the Lions, Jermart Miller made his presence felt night in and night out. In his junior season, he became the first Lion in nearly three decades to earn All-America status. Behind his 16.7 points and 3.8 assists per game, Miller led the Lions to the 2004-05 LSC Championship on his way to LSC Newcomer of the Year, LSC Player of the Year, and South Central Regional Player of the Year honors. Miller helped lead the team to the NCAA Regional Championship game. Miller was a two-time All-Conference player. His 94 three-pointers in the 2004-05 season hold as the program single-season record, while he ranks second in program history in minutes per game and fourth in three-pointers made.
JIM WHITE – Football – 1989-91
Right in the center of the action, Jim White helped cement the Lion offensive line in his two seasons as a starter and contributed in all three seasons of his seasons on the line. In his junior year, he was a unanimous First Team All-LSC selection, helping block for Lion Hall of Fame quarterback Bobby Bounds. That season, White and the offensive line set the tone, helping the 1990 Lion offense set records for most passing yards and most total yards of offense on their way to the LSC Championship and the team's first bid into the NCAA playoffs. White would go on to be named a Second Team All-American as a senior and was a two-time First Team All-Conference honoree.
ERIN (DE WOLFE) HEIN – Soccer – 2002-05
An ever-present threat on the forward line for the Lions, Erin de Wolfe helped lead the Lions to two LSC Championships and two NCAA Tournaments in her four years in the blue and gold. de Wolfe was the first Lion to be named LSC Offensive Player of the Year, a feat she accomplished in both her sophomore and senior seasons. As a senior, she was named both LSC Offensive Player of the Year and LSC Academic Player of the Year. Assisting in a program-record 51 goals, de Wolfe's career assist average of 0.62 is still an LSC record. She also scored 32 goals in her career, amassing 115 points in her career, the third-most points in program history. de Wolfe was a two-time First Team All-Region selection and a three-time First Team All-LSC honoree, as well as a three-time Academic All-Conference selection.
Josh Manck
Associate Athletics Director for Marketing and Communications | Texas A&M University-Commerce
Committed to a "Best In Class" student-athlete experience.
Office: 903.886.5131 | Mobile: 817.487.5136 |
Mailing Address: P.O. Box 3011 | Commerce, TX 75429
Physical Address: 2600 Neal Street | Commerce, TX 75429
Connect with us on our Lions' Den Social Stream.
Clint Cooper
Previous MPISD – News
Next Choctaw Election Results Stand
High School Basketball Plus Baylor Basketball #1 In Today's Sports Update
ASC – Sports
HS Hoops, Super Bowl Set, Plus Garrett Lands In New York In Today's Sports Update
PJC Holding Soccer Tryouts Saturday, January 25


Dr. Zhou is an Associate Professor of Plant Pathology, specializing in disease management in conventional and organic rice. He earned his B. S. in Plant Protection and M. S. in Plant Pathology from Zhejiang University, China and Ph.D. in Plant Pathology from Oklahoma State University. After his postdoctoral research on the development of innovative management strategies for watermelon diseases at the University of Maryland College Park, he joined the Texas A&M AgriLife Research at Beaumont in 2009. He maintains an active research and outreach program on the management of sheath blight, blast, bacterial panicle blight, narrow brown leaf spot and other economically important diseases of rice. His research focuses on better understanding epidemiology of rice diseases and on developing improved host resistance and chemical control and innovative biocontrol practices (biofumigation cover crops, PGPR, endophytes and other beneficial microorganisms) for integrated management of rice diseases. Recently, he also works with weed scientists to develop improved weed control programs for conventional and organic rice. He is a PI on a USDA NIFA OREI project and has been a PI or Co-PI on several USDA NIFA multistate projects aiming at improving rice disease, weed and insect pest management in the southern United States. He is a senior editor of Plant Health Progress and a section editor of Plant Disease Management Reports.


text:
Karoly Pinter
Visit Dates: 2011-12, 2016-17
Associate Professor, Institute of English and American Studies
Pázmány Péter Catholic University, Hungary
pinterk@gmail.com
Civil Religion
Károly Pintér joined the Institute during the spring 2017 semester from the Institute of English and American Studies at Pázmány Péter Catholic University in Hungary, where he chaired that Institute and still teaches as an Associate Professor. A specialist in history and literature, Prof. Pintér teaches courses on the history of Britain and the USA and publishes on early science fiction and writers such as Robert Owen, H.G. Wells, Aldous Huxley, Kurt Vonnegut, and Anthony Burgess. His doctoral dissertation at Eötvös Loránd University was published in 2010 as The Anatomy of Utopia: Narration, Estrangement, and Ambiguity in More, Wells, Huxley and Clarke. While at Notre Dame, he plans to explore the idea of "civil religion" in the US as a way of reflecting more deeply on that idea and its expression in the constitutions of several European nations today. This work is leading toward a monograph in progress towards habilitation (full professorship) in Hungary.
She was a visiting scholar in the 2011-12 academic year and the 2016-2017 academic year.

redpajama_set_name: RedPajamaCommonCrawl


text:
Q: Пример по умолчанию выдает: "отказано в авторизации" Запускаю пример по умолчанию, созданный средой для проекта Web API:
ValuesController.cs
// GET api/values
public IEnumerable<string> Get()
{
    return new string[] { "value1", "value2" };
}

// GET api/values/5
public string Get(int id)
{
    return "value";
}

// POST api/values
public void Post([FromBody]string value)
{
}

// PUT api/values/5
public void Put(int id, [FromBody]string value)
{
}

// DELETE api/values/5
public void Delete(int id)
{
}

Сhrome
В браузере Chrome указываю http://localhost:58534/api/values и в окне появляется:

Internet Explorer
В браузере IE указываю http://localhost:58534/api/values и скачивается какой-то странный файл (values.cwshbzg.partial) и он пустой.
Вопрос
Почему так происходит? Если говорить про авторизацию, то она мне пока не нужна. Хочу чтобы сервис работал без необходимости авторизоваться.

redpajama_set_name: RedPajamaStackExchange


text:
More on Former Raiders QB Ken Stabler's Election into Pro Football Hall of Fame
ALAMEDA, Calif.– Former Raiders QBKen Stabler** was elected for enshrinement into the Pro Football Hall of Fame as part of the Class of 2016, the Pro Football Hall of Fame announced Saturday at the Fifth Annual NFL Honors from the Bill Graham Civic Auditorium in San Francisco, Calif.
Stabler, who was nominated by the Pro Football Hall of Fame Senior Committee, joins Owner Edward DeBartolo, Jr., Coach Tony Dungy, QB Brett Favre, LB/DE Kevin Greene, WR Marvin Harrison, T Orlando Pace and G Dick Stanfel to make up the Class of 2016 that will be officially enshrined into the Hall of Fame in Canton, Ohio on Aug. 6, 2016. With Stabler entering the Hall of Fame, an illustrious 25 Raiders have now been selected for induction into the Hall of Fame.
Remembering Ken Stabler
A look back at quarterback Ken Stabler's career.
Ken Stabler played 15 NFL seasons from 1970-84 for the Oakland Raiders, Houston Oilers and New Orleans Saints. Over his career, Stabler played in 184 games with 146 starts, throwing for 27,938 yards on 2,270-of-3,793 passing (59.8 percent), 194 touchdown passes and 222 interceptions. In 13 career postseason games (12 starts), he threw for 2,641 yards on 203-of-351 passing (57.8 percent), 19 touchdown passes and 13 interceptions, including a 7-5 record as a starter.
Originally selected by the Raiders in the second round (52nd overall) of the 1968 NFL/AFL Draft, Stabler played 10 seasons for the team from 1970-79. Stabler is the franchise's all-time leader in passing yards (19,078), attempts (2,481) and touchdown passes (150). A member of the 1970s All-Decade Team, Stabler was named the NFL's Most Valuable Player and First-Team All-Pro in 1974. A four-time Pro Bowler (1973, 1974, 1976, 1977), Stabler also led the Raiders to five straight AFC Championship Games from 1973-77, culminating with a 32-14 victory in Super Bowl XI over the Minnesota Vikings.
Stabler passed away on July 8, 2015.
Reaction to Stabler's Election
Former Raiders S George Atkinson
On Stabler being elected for enshrinement into the Pro Football Hall Fame: "He should have been inducted a long time ago. It is too bad that it took long enough for him to have passed away to be inducted, especially when you consider that the same stats existed when he was alive. So yes, I think it's a tragedy that he was not inducted when he was still alive, but at the end of the day, being accepted into the Hall of Fame is being accepted into the Hall of Fame. We viewed Kenny as a Hall of Famer in our eyes long before he got inducted, and I think that players who played against him feel the same way."
On what made Stabler unique: "His ability to recognize defenses and know when to pull the trigger. He had an uncanny way of seeing the field and being able to know what was going on in a play before it happened. Kenny had a great recognition for things on the field, whether it was practice or the game. I remember in practice our defense used to give him a bunch of looks trying to confuse him but he could always recognize it. Going to practice every day and practicing against a guy who took his job very seriously and was always trying to improve definitely kept us on the defense sharp. Any day going against Kenny was serious business because he was a perfectionist trying to complete every pass, which in turn made us a much better secondary."
Former Raiders WR Morris Bradshaw
On Stabler being elected for enshrinement into the Pro Football Hall Fame: "I think Kenny's induction is fantastic. He had many attributes, but one thing that made him unique was his cool and collected demeanor during critical times. He helped everyone to calm down."
Former Raiders WR Cliff Branch
On Stabler being elected for enshrinement into the Pro Football Hall Fame: "I think it is long overdue. He was a finalist in the early 2000's twice and should have gone in then, but it is never too late. It is nice to know that he now completes the 70's quarterbacks who won a Super Bowl to make the Hall of Fame."
On what made Stabler unique: "His play calling, he was a chess player. He used to call his own plays because back in those days we didn't have an offensive coordinator, so I think that is what made him so successful. When Kenny got drafted by the Oakland Raiders, he was also drafted in Major League Baseball as a pitcher. He could locate his throws so well that it didn't matter if you were covered, just like a pitcher painting the corners on the plate."
Former Raiders CB and Pro Football Hall of Famer Willie Brown
On Stabler being elected for enshrinement into the Pro Football Hall Fame: "Everybody knows that "Snake" should have been in 15 years ago, but it does not matter how long it takes once you get in the Hall of Fame. He was one of the biggest leaders on the football team, always looking out for everyone, and always ready to play."
On what made Stabler unique: "His toughness, his will to win and his confidence in himself and his teammates. That set him apart from everyone else because we could just look at him and know he is getting the ball in the end zone. He used to say, 'Hey can you guys stop them? Doesn't matter where, we will score from anywhere. Just give us the ball.'"
Former Raiders TE Raymond Chester
On Stabler being elected for enshrinement into the Pro Football Hall Fame: "It is certainly well-deserved, and I am pleased that they have finally given him his just due. I regret that he was not alive to be able to experience this honor personally. Nevertheless, I am happy for his family, his legacy and his teammates because no one gets to the Hall of Fame on their own. I am sure Kenny has that big smile on up there beaming."
On what made Stabler unique: "His calm and cool demeanor. He was unflappable and reminded me of my dad's personality. He never got too high when things went good on the field, and he never got too low when bad things happened on the field. He was just that kind of person and when you were in a game with him that calm permutated throughout the entire team. They always talk about how great quarterbacks can have the game slow down for them and Kenny really demonstrated that with his cool and calm demeanor in tough situations. You felt like you were never out of a game and felt like you never lost a game with Kenny – you just ran out of time."
Former Raiders Head Coach Tom Flores
On Stabler being elected for enshrinement into the Pro Football Hall Fame: "I think it will be a wonderful time. It's a sad state of affairs that he isn't already in. Can you imagine the party he would have thrown if he was still around with us?"
Former San Francisco 49ers and Raiders DE Cedrick Hardman
On Stabler being elected for enshrinement into the Pro Football Hall Fame: "He is very deserving of the honor. A lot of things seem to take time to get done and this was something that obviously needed to get done."
On what it was like playing against Stabler as a member of the San Francisco 49ers: "I knew that you had to get to him and harass him or else he was going to tear your butt up. He was very accurate with his group of great receivers, Clifford (Branch), Freddy (Biletnikoff) and Raymond (Chester), so there was definitely an urgency to put pressure on him."
Former Raiders LB Rod Martin
On Stabler being elected for enshrinement into the Pro Football Hall Fame: "I think it is long overdue considering the career he had with the Raiders and the amount of games he won. He was a leader and everyone always wanted to support him to be successful on the field. He was one of the best of all-time and I think he should be in the Hall of Fame."
On what made Stabler unique: "The way he used to carry himself on the field and the fact he was a left-handed passer when most of the league was right-handed quarterbacked teams. If you were going to go to war, you would want to go to war with a guy like Kenny Stabler. You knew the game was never over until it was over and the clock hit zero because he could always come back and win."
Raiders announce preseason opponents
The Raiders' 2019 preseason schedule features a nationally-televised ESPN contest against the Arizona Cardinals and games against the Los Angeles Rams, Green Bay Packers and Seattle Seahawks.
Kaufman Propels 1997 Raiders Past Broncos
Twenty-one years ago, running back Napoleon Kaufman etched his name in the Raiders record books with a performance for the ages.
Cover 2: A closer look at the Raiders' unofficial depth chart
Eddie Paskal and Kyle Martin of Raiders.com share their takeaways from the team's unofficial depth chart.
From Plunkett To Woodson, A Look At All The Raiders Who Won The Heisman Trophy
After the passing of former Oakland Raiders running back/tight end, and Heisman Trophy winner Billy Cannon, here's a look at every Raider who's taken home the prestigious award.
Raiders Release Statement On The Passing Of Billy Cannon
The Oakland Raiders released a statement on the passing of running back/tight end Billy Cannon.
Raiders Sign First-Round Pick Tackle Kolton Miller
The Oakland Raiders have signed first-round draft pick tackle Kolton Miller, the club announced Friday.
Defensive End Khalil Mack Has High School Jersey Retired
Oakland Raiders defensive end Khalil Mack was honored at his alma mater Thursday.
Raiders Sign Guard Cameron Hunt
The Oakland Raiders have signed free agent G Cameron Hunt, the club announced Thursday.
Four Raiders Selected To Rick Gosselin's All-Time Special Teams Unit
The Silver and Black have a rich history of playmakers, and that includes the guys on special teams.
Raiders Sign Fifth-Round Pick DT Maurice Hurst
The Oakland Raiders have signed fifth-round draft pick DT Maurice Hurst, the club announced Wednesday.


New Years Eve can always be a struggle to figure out exactly where you want to spend your last moments of the year, and your first moments of the next. Luckily, for the past six years, The Annual Chicago Resolution Gala has made that decision an easy one! With thousands of guests, top of the line beverages and food, and some of the best DJ's, this event is certainly a great way to kick off 2018!
The Gala is hosted each year at the Grand Ballroom at Navy Pier. The Ballroom is an immense 18,000 square foot space with its main ballroom boasting an 80-foot dome. Once inside, you will have magnificent views of Lake Michigan and the Chicago New Years Eve fireworks. Up to 3,000 people gather inside for this event each year for drinks, food, live DJ's and a perfect intro into the new year!
The festivities will begin at 8:15pm on December 31 and continue until 2am on January 1. Get ready to dance to the sounds of this year's top 40 dance and party hits performed by live DJ's and headlined by DJ Metro, the official DJ of the Chicago Bulls. You will have the option of 30 premium bars spread throughout the venue and complimentary buffets to fill your stomach at any time! Make sure to stop what you're doing when midnight strikes to watch the Chicago New Year's Eve fireworks! For more information about the event visit Eventbrite.
General Admission to this event will cost $109 dollars and VIP tickets are $119. Tickets can be purchased online at chitownevents.com or at Eventbrite. Additional ticket sale information is also available at these websites.
While you're purchasing your tickets, start thinking of a place to stay after the event! The Majestic Hotel in Chicago is a perfect destination to relax after a crazy night out at the Pier!


text:
CareerBuilder Launching Video Resumes for Job Seekers and Branding Videos for Employers
CareerBuilder.com announced plans to be the first major online job site to launch a new video resume service, enabling job seekers to enhance their online applications with videos highlighting...
Upward Trend for Job Prospects and Starting Salaries for Recent College Graduates This Year, CareerBuilder.com Survey Finds
Job prospects and starting salaries for recent college graduates are trending upward, according to CareerBuilder.com's annual survey. Seventy-nine percent of hiring managers say they plan to hire...
Moderated, Yet Stable, Hiring to Continue in Q2, CareerBuilder.com and USA TODAY Survey Finds
- One-Third of Employers to Increase Compensation in Q2 -
CareerBuilder.com, the nation's largest online job site, and USA TODAY released the results of their latest survey, conducted by Harris Interactive(R), tracking projected hiring trends for the...
CareerBuilder.com Reveals Top Ten Picks for April Fool's Day Pranks Based on Annual Survey
Nearly Three-in-Ten Workers Admit to Taking Part in the Hijinks
Are you someone who dreads April Fool's Day -- still haunted by the whoopee cushion Tommy placed on your chair in 3rd Grade? Or do you plan and conspire for weeks about every detail that will make...
One-In-Ten Workers Are Less Productive During Gloomy Weather, CareerBuilder.com's Survey Reveals
--21 percent have called in sick because of not wanting to travel in inclement weather --
April showers may eventually bring May flowers, but what does it mean for the workplace? According to a CareerBuilder.com survey of more than 6,000 workers, one-in-ten workers (10 percent) say...
CareerBuilder.com Acquires Jobbguiden.se and JobbingMall.nl to Augment Global Expansion
CareerBuilder.com is taking the latest step in its international expansion with the purchase of two leading online recruitment sites in Northern Europe. CareerBuilder.com acquired Sweden's...
Four-in-Ten Workers Live Paycheck to Paycheck, According to CareerBuilder.com Survey
- One-in-Four Don't Have a Retirement Savings Plan -
Counting down the minutes to payday? You're not alone. Four-in-ten workers (41 percent) say they often or always live paycheck to paycheck, according to CareerBuilder.com's latest survey. More...
CareerBuilder.com Launches CBPublic, a New Division to Provide Recruitment Solutions to State and Local Governments
CareerBuilder.com, the nation's largest online job site with more than 21 million unique visitors and over 1.5 million jobs, announced it has launched CBPublic, a new division dedicated to...
America: You Decide Who Gets the Dream "Job"
-- Disney Parks and CareerBuilder.com Invite America to Interview the Dream "Job" Finalists as Part of Disney's "Year of a Million Dreams" Celebration --
Burbank, Calif., March 7, 2007 -- More nerve-wracking than a trip to the board room, how about having to interview with 300 million Americans to see if you'll land your dream job! On center stage...
CareerBuilder.com Launches Revitalized Sologig.com to Connect Freelance Job Seekers With Contract-Based Employment
CareerBuilder.com, the nation's largest online job site with more than 23 million unique visitors and over 1.5 million jobs, announced the re-launch of Sologig.com, a Web site that connects...
A Good Boss Isn't Hard to Find, Survey Suggests
-- Robert Half International and CareerBuilder.com Release Study on How Employees View Company Leaders --
MENLO PARK, Calif., and CHICAGO, February 15, 2007 -- On Presidents Day, Americans honor past U.S. leaders, but what about those who occupy the top spots in companies across the country? According...
Thirty-One Percent of Canadian Workers Have Dated a Co-Worker
-- Fourteen percent have dated a colleague who was married --
Toronto, February 12, 2007 -- It appears Cupid has been putting in overtime at the workplace. Thirty-one percent of Canadian workers have dated a colleague, and 15 percent of these workers went on...
Forty-Three Percent of Employees Have Dated Someone in Their Office, According to CareerBuilder.co.uk
- Twenty-six percent admit to dating a co-worker who was married -
London, February 12, 2007 -- With Valentine's Day just around the corner, beware of Cupid's arrow at work. Forty-three percent of workers say they have dated someone in their office at least once...
One-Third of Workers who Dated a Fellow Employee Married Their Co-Worker, According to CareerBuilder.com's Annual Valentine's Day Survey
- 22 Percent Have Dated a Colleague Who Was Married -
With Valentine's Day just around the corner, watch out for Cupid's arrow at the office. Forty-three percent of U.S. workers reported they have dated a co-worker. Thirty-four percent of those who...
CareerBuilder Super Bowl Campaign Set to Evolve
Primates Get Pink-Slipped, New Television Spots Show, 'It's a Jungle Out There'
After two years of monkey business, CareerBuilder.com is giving the pink slip to the renowned chimpanzee stars of its Super Bowl ads. The company announced it is evolving to a new campaign themed...
National "Dream Jobs" Survey Reveals Four Out of Five U.S. Workers Are Still Searching For Their Dreams Jobs
- Fun Outweighs Money as Most Important Attribute in Dream Job -
Chicago, January 25, 2007 - CareerBuilder.com today announced the results of a national consumer employment survey conducted by Harris Interactive that reveals nearly four out of five U.S. workers...
One-in-Five Healthcare Workers Will Leave Their Jobs in 2007, CareerBuilder.com Survey Finds
- Better pay, career advancement opportunities driving workers to leave -
Seventeen percent of healthcare workers are dissatisfied with their jobs, and 21 percent plan to leave their current positions in the coming year, according to a recent CareerBuilder.com survey....
CareerBuilder Launches Age-o-Matic.com
New Site Allows People to See How They Will Look in the Year 2057 - Or If They Stay in a Bad Job
Ever get the feeling your job will be the death of you? From the creators of the wildly popular Monk-e-Mail.com comes Age-o-Matic.com, a site that demonstrates how working in a stressful office...
One-in-Five Government Workers Plan to Leave Their Jobs in 2007, CareerBuilder.com Survey Finds
-- Thirty-six percent say they are motivated to leave by better pay or career advancement opportunities --
Eighteen percent of government workers say they are dissatisfied with their jobs, and 20 percent plan to leave their current positions by the end of 2007, according to a recent CareerBuilder.com...
One-In-Four HR Managers Receive More Than 50 Resumes For Each Open Position, CareerBuilder.com Survey Finds
- CareerBuilder.com Launches cbResume to Help Job Seekers Create Resumes That Get Results -
If you're looking for a new job this year, be prepared for some competition. Twenty-seven percent of human resource (HR) managers say they receive more than 50 resumes, on average, for each open...
Forty-Five Percent of UK Employers Plan to Recruit New Employees in the New Year, According to CareerBulder.co.uk Survey
- Bigger salaries, flexible work arrangements among top workplace trends for coming year -
London, January 4, 2007 -- CareerBuilder.co.uk, a leading online job site in the United Kingdom, released the results of its first survey, conducted by Harris Interactive®, tracking projected...
One-in-Five Workers to Change Jobs in the New Year, CareerBuilder.com Survey Finds
Topping the list of New Year's resolutions for one-in-five workers (20 percent) is a new job, according to CareerBuilder.com's latest survey. The study also shows that this may be the ideal time...
Forty Percent of Employers to Add Jobs in 2007, CareerBuilder.com Survey Finds
Bigger Paychecks, More Promotions, Flexible Schedules, Prolonged Retirement and Recruitment of Hispanic Workers Among Seven Major Trends for the New Year
CareerBuilder.com, the nation's largest online job site with more than 23 million unique visitors and over 1.5 million jobs, released the results of its latest survey, conducted by Harris...
Forty-Two Percent of Employers to Add Jobs in 2007, CareerBuilder.ca Survey Finds
CareerBuilder.ca, a leading job site in Canada, released the results of its first survey, conducted by Harris Interactive(R), tracking projected hiring and job search activities for the upcoming...
CareerBuilder.com Launches Resume Matching Engine to Help Employers Find the Right Candidates Faster
CareerBuilder.com, the nation's largest online job site with more than 23 million unique visitors and over 1.5 million jobs, announced it is streamlining the hiring process for subscribers to its...


text:
'use strict'

const test = require('tape')
const sinon = require('sinon')
const inherits = require('util').inherits
const AbstractLevelDOWN = require('../').AbstractLevelDOWN
const AbstractIterator = require('../').AbstractIterator
const AbstractChainedBatch = require('../').AbstractChainedBatch

const testCommon = require('./common')({
  test: test,
  clear: true,
  factory: function () {
    return new AbstractLevelDOWN()
  }
})

const rangeOptions = ['gt', 'gte', 'lt', 'lte']

// Test the suite itself as well as the default implementation,
// excluding noop operations that can't pass the test suite.

require('./leveldown-test')(test, testCommon)
require('./manifest-test')(test, testCommon)
require('./open-test').all(test, testCommon)

require('./open-create-if-missing-test').setUp(test, testCommon)
require('./open-create-if-missing-test').tearDown(test, testCommon)

require('./open-error-if-exists-test').setUp(test, testCommon)
require('./open-error-if-exists-test').tearDown(test, testCommon)

require('./del-test').setUp(test, testCommon)
require('./del-test').args(test, testCommon)

require('./get-test').setUp(test, testCommon)
require('./get-test').args(test, testCommon)

require('./get-many-test').setUp(test, testCommon)
require('./get-many-test').args(test, testCommon)

require('./put-test').setUp(test, testCommon)
require('./put-test').args(test, testCommon)

require('./put-get-del-test').setUp(test, testCommon)
require('./put-get-del-test').errorKeys(test, testCommon)
require('./put-get-del-test').tearDown(test, testCommon)

require('./batch-test').setUp(test, testCommon)
require('./batch-test').args(test, testCommon)

require('./chained-batch-test').setUp(test, testCommon)
require('./chained-batch-test').args(test, testCommon)
require('./chained-batch-test').tearDown(test, testCommon)

require('./close-test').all(test, testCommon)

require('./iterator-test').setUp(test, testCommon)
require('./iterator-test').args(test, testCommon)
require('./iterator-test').sequence(test, testCommon)
require('./iterator-test').tearDown(test, testCommon)

require('./iterator-range-test').setUp(test, testCommon)
require('./iterator-range-test').tearDown(test, testCommon)

require('./async-iterator-test').setup(test, testCommon)
require('./async-iterator-test').teardown(test, testCommon)

require('./iterator-snapshot-test').setUp(test, testCommon)
require('./iterator-snapshot-test').tearDown(test, testCommon)

require('./iterator-no-snapshot-test').setUp(test, testCommon)
require('./iterator-no-snapshot-test').tearDown(test, testCommon)

require('./iterator-seek-test').setUp(test, testCommon)
require('./iterator-seek-test').sequence(test, testCommon)
require('./iterator-seek-test').tearDown(test, testCommon)

require('./clear-test').setUp(test, testCommon)
require('./clear-test').args(test, testCommon)
require('./clear-test').tearDown(test, testCommon)

require('./clear-range-test').setUp(test, testCommon)
require('./clear-range-test').tearDown(test, testCommon)

function implement (ctor, methods) {
  function Test () {
    ctor.apply(this, arguments)
  }

  inherits(Test, ctor)

  for (const k in methods) {
    Test.prototype[k] = methods[k]
  }

  return Test
}

// Temporary test for browsers
// Not supported on Safari < 12 and Safari iOS < 12
test('async generator', async function (t) {
  let ended = false

  const end = async () => {
    await new Promise((resolve) => setTimeout(resolve, 100))
    ended = true
  }

  async function * generator () {
    try {
      yield 1
      yield 2
      yield 3
      yield 4
    } finally {
      // Test that we're always able to cleanup resources
      await end()
    }
  }

  const res = []

  for await (const x of generator()) {
    res.push(x)
    if (x === 2) break
  }

  t.same(res, [1, 2])
  t.is(ended, true)

  ended = false

  try {
    for await (const x of generator()) {
      res.push(x)
      if (x === 2) throw new Error('userland error')
    }
  } catch (err) {
    t.is(err.message, 'userland error')
  }

  t.same(res, [1, 2, 1, 2])
  t.is(ended, true)
})

/**
 * Extensibility
 */

test('test core extensibility', function (t) {
  const Test = implement(AbstractLevelDOWN)
  const test = new Test()
  t.equal(test.status, 'new', 'status is new')
  t.end()
})

test('test key/value serialization', function (t) {
  const Test = implement(AbstractLevelDOWN)
  const test = new Test()

  ;['', {}, null, undefined, Buffer.alloc(0)].forEach(function (v) {
    t.ok(test._serializeKey(v) === v, '_serializeKey is an identity function')
    t.ok(test._serializeValue(v) === v, '_serializeValue is an identity function')
  })

  t.end()
})

test('test open() extensibility', function (t) {
  const spy = sinon.spy()
  const expectedCb = function () {}
  const expectedOptions = { createIfMissing: true, errorIfExists: false }
  const Test = implement(AbstractLevelDOWN, { _open: spy })
  const test = new Test('foobar')

  test.open(expectedCb)

  t.equal(spy.callCount, 1, 'got _open() call')
  t.equal(spy.getCall(0).thisValue, test, '`this` on _open() was correct')
  t.equal(spy.getCall(0).args.length, 2, 'got two arguments')
  t.deepEqual(spy.getCall(0).args[0], expectedOptions, 'got default options argument')

  test.open({ options: 1 }, expectedCb)

  expectedOptions.options = 1

  t.equal(spy.callCount, 2, 'got _open() call')
  t.equal(spy.getCall(1).thisValue, test, '`this` on _open() was correct')
  t.equal(spy.getCall(1).args.length, 2, 'got two arguments')
  t.deepEqual(spy.getCall(1).args[0], expectedOptions, 'got expected options argument')
  t.end()
})

test('test close() extensibility', function (t) {
  const spy = sinon.spy()
  const expectedCb = function () {}
  const Test = implement(AbstractLevelDOWN, { _close: spy })
  const test = new Test('foobar')

  test.close(expectedCb)

  t.equal(spy.callCount, 1, 'got _close() call')
  t.equal(spy.getCall(0).thisValue, test, '`this` on _close() was correct')
  t.equal(spy.getCall(0).args.length, 1, 'got one arguments')
  t.end()
})

test('test get() extensibility', function (t) {
  const spy = sinon.spy()
  const expectedCb = function () {}
  const expectedOptions = { asBuffer: true }
  const expectedKey = 'a key'
  const Test = implement(AbstractLevelDOWN, { _get: spy })
  const test = new Test('foobar')

  test.get(expectedKey, expectedCb)

  t.equal(spy.callCount, 1, 'got _get() call')
  t.equal(spy.getCall(0).thisValue, test, '`this` on _get() was correct')
  t.equal(spy.getCall(0).args.length, 3, 'got three arguments')
  t.equal(spy.getCall(0).args[0], expectedKey, 'got expected key argument')
  t.deepEqual(spy.getCall(0).args[1], expectedOptions, 'got default options argument')
  t.equal(spy.getCall(0).args[2], expectedCb, 'got expected cb argument')

  test.get(expectedKey, { options: 1 }, expectedCb)

  expectedOptions.options = 1

  t.equal(spy.callCount, 2, 'got _get() call')
  t.equal(spy.getCall(1).thisValue, test, '`this` on _get() was correct')
  t.equal(spy.getCall(1).args.length, 3, 'got three arguments')
  t.equal(spy.getCall(1).args[0], expectedKey, 'got expected key argument')
  t.deepEqual(spy.getCall(1).args[1], expectedOptions, 'got expected options argument')
  t.equal(spy.getCall(1).args[2], expectedCb, 'got expected cb argument')
  t.end()
})

test('test getMany() extensibility', function (t) {
  const spy = sinon.spy()
  const expectedCb = function () {}
  const expectedOptions = { asBuffer: true }
  const expectedKey = 'a key'
  const Test = implement(AbstractLevelDOWN, { _getMany: spy })
  const test = new Test('foobar')

  test.status = 'open'
  test.getMany([expectedKey], expectedCb)

  t.equal(spy.callCount, 1, 'got _getMany() call')
  t.equal(spy.getCall(0).thisValue, test, '`this` on _getMany() was correct')
  t.equal(spy.getCall(0).args.length, 3, 'got three arguments')
  t.deepEqual(spy.getCall(0).args[0], [expectedKey], 'got expected keys argument')
  t.deepEqual(spy.getCall(0).args[1], expectedOptions, 'got default options argument')
  t.equal(spy.getCall(0).args[2], expectedCb, 'got expected cb argument')

  test.getMany([expectedKey], { options: 1 }, expectedCb)

  expectedOptions.options = 1

  t.equal(spy.callCount, 2, 'got _getMany() call')
  t.equal(spy.getCall(1).thisValue, test, '`this` on _getMany() was correct')
  t.equal(spy.getCall(1).args.length, 3, 'got three arguments')
  t.deepEqual(spy.getCall(1).args[0], [expectedKey], 'got expected key argument')
  t.deepEqual(spy.getCall(1).args[1], expectedOptions, 'got expected options argument')
  t.equal(spy.getCall(1).args[2], expectedCb, 'got expected cb argument')
  t.end()
})

test('test del() extensibility', function (t) {
  const spy = sinon.spy()
  const expectedCb = function () {}
  const expectedOptions = { options: 1 }
  const expectedKey = 'a key'
  const Test = implement(AbstractLevelDOWN, { _del: spy })
  const test = new Test('foobar')

  test.del(expectedKey, expectedCb)

  t.equal(spy.callCount, 1, 'got _del() call')
  t.equal(spy.getCall(0).thisValue, test, '`this` on _del() was correct')
  t.equal(spy.getCall(0).args.length, 3, 'got three arguments')
  t.equal(spy.getCall(0).args[0], expectedKey, 'got expected key argument')
  t.deepEqual(spy.getCall(0).args[1], {}, 'got blank options argument')
  t.equal(spy.getCall(0).args[2], expectedCb, 'got expected cb argument')

  test.del(expectedKey, expectedOptions, expectedCb)

  t.equal(spy.callCount, 2, 'got _del() call')
  t.equal(spy.getCall(1).thisValue, test, '`this` on _del() was correct')
  t.equal(spy.getCall(1).args.length, 3, 'got three arguments')
  t.equal(spy.getCall(1).args[0], expectedKey, 'got expected key argument')
  t.deepEqual(spy.getCall(1).args[1], expectedOptions, 'got expected options argument')
  t.equal(spy.getCall(1).args[2], expectedCb, 'got expected cb argument')
  t.end()
})

test('test put() extensibility', function (t) {
  const spy = sinon.spy()
  const expectedCb = function () {}
  const expectedOptions = { options: 1 }
  const expectedKey = 'a key'
  const expectedValue = 'a value'
  const Test = implement(AbstractLevelDOWN, { _put: spy })
  const test = new Test('foobar')

  test.put(expectedKey, expectedValue, expectedCb)

  t.equal(spy.callCount, 1, 'got _put() call')
  t.equal(spy.getCall(0).thisValue, test, '`this` on _put() was correct')
  t.equal(spy.getCall(0).args.length, 4, 'got four arguments')
  t.equal(spy.getCall(0).args[0], expectedKey, 'got expected key argument')
  t.equal(spy.getCall(0).args[1], expectedValue, 'got expected value argument')
  t.deepEqual(spy.getCall(0).args[2], {}, 'got blank options argument')
  t.equal(spy.getCall(0).args[3], expectedCb, 'got expected cb argument')

  test.put(expectedKey, expectedValue, expectedOptions, expectedCb)

  t.equal(spy.callCount, 2, 'got _put() call')
  t.equal(spy.getCall(1).thisValue, test, '`this` on _put() was correct')
  t.equal(spy.getCall(1).args.length, 4, 'got four arguments')
  t.equal(spy.getCall(1).args[0], expectedKey, 'got expected key argument')
  t.equal(spy.getCall(1).args[1], expectedValue, 'got expected value argument')
  t.deepEqual(spy.getCall(1).args[2], expectedOptions, 'got blank options argument')
  t.equal(spy.getCall(1).args[3], expectedCb, 'got expected cb argument')
  t.end()
})

test('test batch([]) (array-form) extensibility', function (t) {
  const spy = sinon.spy()
  const expectedCb = function () {}
  const expectedOptions = { options: 1 }
  const expectedArray = [
    { type: 'put', key: '1', value: '1' },
    { type: 'del', key: '2' }
  ]
  const Test = implement(AbstractLevelDOWN, { _batch: spy })
  const test = new Test('foobar')

  test.batch(expectedArray, expectedCb)

  t.equal(spy.callCount, 1, 'got _batch() call')
  t.equal(spy.getCall(0).thisValue, test, '`this` on _batch() was correct')
  t.equal(spy.getCall(0).args.length, 3, 'got three arguments')
  t.deepEqual(spy.getCall(0).args[0], expectedArray, 'got expected array argument')
  t.deepEqual(spy.getCall(0).args[1], {}, 'got expected options argument')
  t.equal(spy.getCall(0).args[2], expectedCb, 'got expected callback argument')

  test.batch(expectedArray, expectedOptions, expectedCb)

  t.equal(spy.callCount, 2, 'got _batch() call')
  t.equal(spy.getCall(1).thisValue, test, '`this` on _batch() was correct')
  t.equal(spy.getCall(1).args.length, 3, 'got three arguments')
  t.deepEqual(spy.getCall(1).args[0], expectedArray, 'got expected array argument')
  t.deepEqual(spy.getCall(1).args[1], expectedOptions, 'got expected options argument')
  t.equal(spy.getCall(1).args[2], expectedCb, 'got expected callback argument')

  test.batch(expectedArray, null, expectedCb)

  t.equal(spy.callCount, 3, 'got _batch() call')
  t.equal(spy.getCall(2).thisValue, test, '`this` on _batch() was correct')
  t.equal(spy.getCall(2).args.length, 3, 'got three arguments')
  t.deepEqual(spy.getCall(2).args[0], expectedArray, 'got expected array argument')
  t.ok(spy.getCall(2).args[1], 'options should not be null')
  t.equal(spy.getCall(2).args[2], expectedCb, 'got expected callback argument')
  t.end()
})

test('test batch([]) (array-form) with empty array is asynchronous', function (t) {
  const spy = sinon.spy()
  const Test = implement(AbstractLevelDOWN, { _batch: spy })
  const test = new Test()
  let async = false

  test.batch([], function (err) {
    t.ifError(err, 'no error')
    t.ok(async, 'callback is asynchronous')

    // Assert that asynchronicity is provided by batch() rather than _batch()
    t.is(spy.callCount, 0, '_batch() call was bypassed')
    t.end()
  })

  async = true
})

test('test chained batch() extensibility', function (t) {
  const spy = sinon.spy()
  const expectedCb = function () {}
  const expectedOptions = { options: 1 }
  const Test = implement(AbstractLevelDOWN, { _batch: spy })
  const test = new Test('foobar')

  test.batch().put('foo', 'bar').del('bang').write(expectedCb)

  t.equal(spy.callCount, 1, 'got _batch() call')
  t.equal(spy.getCall(0).thisValue, test, '`this` on _batch() was correct')
  t.equal(spy.getCall(0).args.length, 3, 'got three arguments')
  t.equal(spy.getCall(0).args[0].length, 2, 'got expected array argument')
  t.deepEqual(spy.getCall(0).args[0][0], { type: 'put', key: 'foo', value: 'bar' }, 'got expected array argument[0]')
  t.deepEqual(spy.getCall(0).args[0][1], { type: 'del', key: 'bang' }, 'got expected array argument[1]')
  t.deepEqual(spy.getCall(0).args[1], {}, 'got expected options argument')
  t.equal(spy.getCall(0).args[2], expectedCb, 'got expected callback argument')

  test.batch().put('foo', 'bar', expectedOptions).del('bang', expectedOptions).write(expectedOptions, expectedCb)

  t.equal(spy.callCount, 2, 'got _batch() call')
  t.equal(spy.getCall(1).thisValue, test, '`this` on _batch() was correct')
  t.equal(spy.getCall(1).args.length, 3, 'got three arguments')
  t.equal(spy.getCall(1).args[0].length, 2, 'got expected array argument')
  t.deepEqual(spy.getCall(1).args[0][0], { type: 'put', key: 'foo', value: 'bar', options: 1 }, 'got expected array argument[0]')
  t.deepEqual(spy.getCall(1).args[0][1], { type: 'del', key: 'bang', options: 1 }, 'got expected array argument[1]')
  t.deepEqual(spy.getCall(1).args[1], expectedOptions, 'got expected options argument')
  t.equal(spy.getCall(1).args[2], expectedCb, 'got expected callback argument')

  t.end()
})

test('test chained batch() with no operations is asynchronous', function (t) {
  const Test = implement(AbstractLevelDOWN, {})
  const test = new Test()
  let async = false

  test.batch().write(function (err) {
    t.ifError(err, 'no error')
    t.ok(async, 'callback is asynchronous')
    t.end()
  })

  async = true
})

test('test chained batch() (custom _chainedBatch) extensibility', function (t) {
  const spy = sinon.spy()
  const Test = implement(AbstractLevelDOWN, { _chainedBatch: spy })
  const test = new Test('foobar')

  test.batch()

  t.equal(spy.callCount, 1, 'got _chainedBatch() call')
  t.equal(spy.getCall(0).thisValue, test, '`this` on _chainedBatch() was correct')

  test.batch()

  t.equal(spy.callCount, 2, 'got _chainedBatch() call')
  t.equal(spy.getCall(1).thisValue, test, '`this` on _chainedBatch() was correct')

  t.end()
})

test('test AbstractChainedBatch extensibility', function (t) {
  const Test = implement(AbstractChainedBatch)
  const db = {}
  const test = new Test(db)
  t.ok(test.db === db, 'instance has db reference')
  t.end()
})

test('test AbstractChainedBatch expects a db', function (t) {
  t.plan(1)

  const Test = implement(AbstractChainedBatch)

  try {
    Test()
  } catch (err) {
    t.is(err.message, 'First argument must be an abstract-leveldown compliant store')
  }
})

test('test AbstractChainedBatch#write() extensibility', function (t) {
  const spy = sinon.spy()
  const spycb = sinon.spy()
  const Test = implement(AbstractChainedBatch, { _write: spy })
  const test = new Test({ test: true })

  test.write(spycb)

  t.equal(spy.callCount, 1, 'got _write() call')
  t.equal(spy.getCall(0).thisValue, test, '`this` on _write() was correct')
  t.equal(spy.getCall(0).args.length, 2, 'got two arguments')
  t.same(spy.getCall(0).args[0], {}, 'got options')
  // awkward here cause of nextTick & an internal wrapped cb
  t.equal(typeof spy.getCall(0).args[1], 'function', 'got a callback function')
  t.equal(spycb.callCount, 0, 'spycb not called')
  spy.getCall(0).args[1]()
  t.equal(spycb.callCount, 1, 'spycb called, i.e. was our cb argument')
  t.end()
})

test('test AbstractChainedBatch#write() extensibility with null options', function (t) {
  const spy = sinon.spy()
  const Test = implement(AbstractChainedBatch, { _write: spy })
  const test = new Test({ test: true })

  test.write(null, function () {})

  t.equal(spy.callCount, 1, 'got _write() call')
  t.same(spy.getCall(0).args[0], {}, 'got options')
  t.end()
})

test('test AbstractChainedBatch#write() extensibility with options', function (t) {
  const spy = sinon.spy()
  const Test = implement(AbstractChainedBatch, { _write: spy })
  const test = new Test({ test: true })

  test.write({ test: true }, function () {})

  t.equal(spy.callCount, 1, 'got _write() call')
  t.same(spy.getCall(0).args[0], { test: true }, 'got options')
  t.end()
})

test('test AbstractChainedBatch#put() extensibility', function (t) {
  const spy = sinon.spy()
  const expectedKey = 'key'
  const expectedValue = 'value'
  const Test = implement(AbstractChainedBatch, { _put: spy })
  const test = new Test(testCommon.factory())
  const returnValue = test.put(expectedKey, expectedValue)

  t.equal(spy.callCount, 1, 'got _put call')
  t.equal(spy.getCall(0).thisValue, test, '`this` on _put() was correct')
  t.equal(spy.getCall(0).args.length, 3, 'got 3 arguments')
  t.equal(spy.getCall(0).args[0], expectedKey, 'got expected key argument')
  t.equal(spy.getCall(0).args[1], expectedValue, 'got expected value argument')
  t.same(spy.getCall(0).args[2], {}, 'got expected options argument')
  t.equal(returnValue, test, 'get expected return value')
  t.end()
})

test('test AbstractChainedBatch#del() extensibility', function (t) {
  const spy = sinon.spy()
  const expectedKey = 'key'
  const Test = implement(AbstractChainedBatch, { _del: spy })
  const test = new Test(testCommon.factory())
  const returnValue = test.del(expectedKey)

  t.equal(spy.callCount, 1, 'got _del call')
  t.equal(spy.getCall(0).thisValue, test, '`this` on _del() was correct')
  t.equal(spy.getCall(0).args.length, 2, 'got 2 arguments')
  t.equal(spy.getCall(0).args[0], expectedKey, 'got expected key argument')
  t.same(spy.getCall(0).args[1], {}, 'got expected options argument')
  t.equal(returnValue, test, 'get expected return value')
  t.end()
})

test('test AbstractChainedBatch#clear() extensibility', function (t) {
  const spy = sinon.spy()
  const Test = implement(AbstractChainedBatch, { _clear: spy })
  const test = new Test(testCommon.factory())
  const returnValue = test.clear()

  t.equal(spy.callCount, 1, 'got _clear call')
  t.equal(spy.getCall(0).thisValue, test, '`this` on _clear() was correct')
  t.equal(spy.getCall(0).args.length, 0, 'got zero arguments')
  t.equal(returnValue, test, 'get expected return value')
  t.end()
})

test('test iterator() extensibility', function (t) {
  const spy = sinon.spy()
  const expectedOptions = {
    options: 1,
    reverse: false,
    keys: true,
    values: true,
    limit: -1,
    keyAsBuffer: true,
    valueAsBuffer: true
  }
  const Test = implement(AbstractLevelDOWN, { _iterator: spy })
  const test = new Test('foobar')

  test.iterator({ options: 1 })

  t.equal(spy.callCount, 1, 'got _iterator() call')
  t.equal(spy.getCall(0).thisValue, test, '`this` on _iterator() was correct')
  t.equal(spy.getCall(0).args.length, 1, 'got one arguments')
  t.deepEqual(spy.getCall(0).args[0], expectedOptions, 'got expected options argument')
  t.end()
})

test('test AbstractIterator extensibility', function (t) {
  const Test = implement(AbstractIterator)
  const db = {}
  const test = new Test(db)
  t.ok(test.db === db, 'instance has db reference')
  t.end()
})

test('test AbstractIterator#next() extensibility', function (t) {
  const spy = sinon.spy()
  const spycb = sinon.spy()
  const Test = implement(AbstractIterator, { _next: spy })
  const test = new Test({})

  test.next(spycb)

  t.equal(spy.callCount, 1, 'got _next() call')
  t.equal(spy.getCall(0).thisValue, test, '`this` on _next() was correct')
  t.equal(spy.getCall(0).args.length, 1, 'got one arguments')
  // awkward here cause of nextTick & an internal wrapped cb
  t.equal(typeof spy.getCall(0).args[0], 'function', 'got a callback function')
  t.equal(spycb.callCount, 0, 'spycb not called')
  spy.getCall(0).args[0]()
  t.equal(spycb.callCount, 1, 'spycb called, i.e. was our cb argument')
  t.end()
})

test('test AbstractIterator#end() extensibility', function (t) {
  const spy = sinon.spy()
  const expectedCb = function () {}
  const Test = implement(AbstractIterator, { _end: spy })
  const test = new Test({})

  test.end(expectedCb)

  t.equal(spy.callCount, 1, 'got _end() call')
  t.equal(spy.getCall(0).thisValue, test, '`this` on _end() was correct')
  t.equal(spy.getCall(0).args.length, 1, 'got one arguments')
  t.equal(spy.getCall(0).args[0], expectedCb, 'got expected cb argument')
  t.end()
})

test('test clear() extensibility', function (t) {
  const spy = sinon.spy()
  const Test = implement(AbstractLevelDOWN, { _clear: spy })
  const db = new Test()
  const callback = function () {}

  call([callback], { reverse: false, limit: -1 })
  call([null, callback], { reverse: false, limit: -1 })
  call([undefined, callback], { reverse: false, limit: -1 })
  call([{ custom: 1 }, callback], { custom: 1, reverse: false, limit: -1 })
  call([{ reverse: true, limit: 0 }, callback], { reverse: true, limit: 0 })
  call([{ reverse: 1 }, callback], { reverse: true, limit: -1 })
  call([{ reverse: null }, callback], { reverse: false, limit: -1 })

  function call (args, expectedOptions) {
    db.clear.apply(db, args)

    t.is(spy.callCount, 1, 'got _clear() call')
    t.is(spy.getCall(0).thisValue, db, '`this` on _clear() was correct')
    t.is(spy.getCall(0).args.length, 2, 'got two arguments')
    t.same(spy.getCall(0).args[0], expectedOptions, 'got expected options argument')
    t.is(spy.getCall(0).args[1], callback, 'got expected callback argument')

    spy.resetHistory()
  }

  t.end()
})

test('test serialization extensibility (get)', function (t) {
  t.plan(2)

  const spy = sinon.spy()
  const Test = implement(AbstractLevelDOWN, {
    _get: spy,
    _serializeKey: function (key) {
      return key.toUpperCase()
    }
  })

  const test = new Test()
  test.get('foo', function () {})

  t.is(spy.callCount, 1, 'got _get() call')
  t.is(spy.getCall(0).args[0], 'FOO', 'got expected key argument')
})

test('test serialization extensibility (getMany)', function (t) {
  t.plan(2)

  const spy = sinon.spy()
  const Test = implement(AbstractLevelDOWN, {
    _getMany: spy,
    _serializeKey: function (key) {
      return key.toUpperCase()
    }
  })

  const test = new Test()

  test.status = 'open'
  test.getMany(['foo', 'bar'], function () {})

  t.is(spy.callCount, 1, 'got _getMany() call')
  t.same(spy.getCall(0).args[0], ['FOO', 'BAR'], 'got expected keys argument')
})

test('test serialization extensibility (put)', function (t) {
  t.plan(5)

  const spy = sinon.spy()
  const Test = implement(AbstractLevelDOWN, {
    _put: spy,
    _serializeKey: function (key) {
      t.equal(key, 'no')
      return 'foo'
    },

    _serializeValue: function (value) {
      t.equal(value, 'nope')
      return 'bar'
    }
  })

  const test = new Test('foobar')
  test.put('no', 'nope', function () {})

  t.equal(spy.callCount, 1, 'got _put() call')
  t.equal(spy.getCall(0).args[0], 'foo', 'got expected key argument')
  t.equal(spy.getCall(0).args[1], 'bar', 'got expected value argument')
})

test('test serialization extensibility (del)', function (t) {
  t.plan(3)

  const spy = sinon.spy()
  const Test = implement(AbstractLevelDOWN, {
    _del: spy,
    _serializeKey: function (key) {
      t.equal(key, 'no')
      return 'foo'
    },
    _serializeValue: function (value) {
      t.fail('should not be called')
    }
  })

  const test = new Test('foobar')
  test.del('no', function () {})

  t.equal(spy.callCount, 1, 'got _del() call')
  t.equal(spy.getCall(0).args[0], 'foo', 'got expected key argument')

  t.end()
})

test('test serialization extensibility (batch array put)', function (t) {
  t.plan(5)

  const spy = sinon.spy()
  const Test = implement(AbstractLevelDOWN, {
    _batch: spy,
    _serializeKey: function (key) {
      t.equal(key, 'no')
      return 'foo'
    },
    _serializeValue: function (value) {
      t.equal(value, 'nope')
      return 'bar'
    }
  })

  const test = new Test('foobar')
  test.batch([{ type: 'put', key: 'no', value: 'nope' }], function () {})

  t.equal(spy.callCount, 1, 'got _batch() call')
  t.equal(spy.getCall(0).args[0][0].key, 'foo', 'got expected key')
  t.equal(spy.getCall(0).args[0][0].value, 'bar', 'got expected value')
})

test('test serialization extensibility (batch chain put)', function (t) {
  t.plan(5)

  const spy = sinon.spy()
  const Test = implement(AbstractLevelDOWN, {
    _batch: spy,
    _serializeKey: function (key) {
      t.equal(key, 'no')
      return 'foo'
    },
    _serializeValue: function (value) {
      t.equal(value, 'nope')
      return 'bar'
    }
  })

  const test = new Test('foobar')
  test.batch().put('no', 'nope').write(function () {})

  t.equal(spy.callCount, 1, 'got _batch() call')
  t.equal(spy.getCall(0).args[0][0].key, 'foo', 'got expected key')
  t.equal(spy.getCall(0).args[0][0].value, 'bar', 'got expected value')
})

test('test serialization extensibility (batch array del)', function (t) {
  t.plan(3)

  const spy = sinon.spy()
  const Test = implement(AbstractLevelDOWN, {
    _batch: spy,
    _serializeKey: function (key) {
      t.equal(key, 'no')
      return 'foo'
    },
    _serializeValue: function (value) {
      t.fail('should not be called')
    }
  })

  const test = new Test('foobar')
  test.batch([{ type: 'del', key: 'no' }], function () {})

  t.equal(spy.callCount, 1, 'got _batch() call')
  t.equal(spy.getCall(0).args[0][0].key, 'foo', 'got expected key')
})

test('test serialization extensibility (batch chain del)', function (t) {
  t.plan(3)

  const spy = sinon.spy()
  const Test = implement(AbstractLevelDOWN, {
    _batch: spy,
    _serializeKey: function (key) {
      t.equal(key, 'no')
      return 'foo'
    },
    _serializeValue: function (value) {
      t.fail('should not be called')
    }
  })

  const test = new Test('foobar')
  test.batch().del('no').write(function () {})

  t.equal(spy.callCount, 1, 'got _batch() call')
  t.equal(spy.getCall(0).args[0][0].key, 'foo', 'got expected key')
})

test('test serialization extensibility (batch array is not mutated)', function (t) {
  t.plan(7)

  const spy = sinon.spy()
  const Test = implement(AbstractLevelDOWN, {
    _batch: spy,
    _serializeKey: function (key) {
      t.equal(key, 'no')
      return 'foo'
    },
    _serializeValue: function (value) {
      t.equal(value, 'nope')
      return 'bar'
    }
  })

  const test = new Test('foobar')
  const op = { type: 'put', key: 'no', value: 'nope' }

  test.batch([op], function () {})

  t.equal(spy.callCount, 1, 'got _batch() call')
  t.equal(spy.getCall(0).args[0][0].key, 'foo', 'got expected key')
  t.equal(spy.getCall(0).args[0][0].value, 'bar', 'got expected value')

  t.equal(op.key, 'no', 'did not mutate input key')
  t.equal(op.value, 'nope', 'did not mutate input value')
})

test('test serialization extensibility (iterator range options)', function (t) {
  t.plan(2)

  function Test () {
    AbstractLevelDOWN.call(this)
  }

  inherits(Test, AbstractLevelDOWN)

  Test.prototype._serializeKey = function (key) {
    t.is(key, 'input')
    return 'output'
  }

  Test.prototype._iterator = function (options) {
    return new Iterator(this, options)
  }

  function Iterator (db, options) {
    AbstractIterator.call(this, db)
    t.is(options.gt, 'output')
  }

  inherits(Iterator, AbstractIterator)

  const test = new Test()
  test.iterator({ gt: 'input' })
})

test('test serialization extensibility (iterator seek)', function (t) {
  t.plan(3)

  const spy = sinon.spy()
  const TestIterator = implement(AbstractIterator, { _seek: spy })

  const Test = implement(AbstractLevelDOWN, {
    _iterator: function () {
      return new TestIterator(this)
    },
    _serializeKey: function (key) {
      t.equal(key, 'target')
      return 'serialized'
    }
  })

  const test = new Test('foobar')
  const it = test.iterator()

  it.seek('target')

  t.equal(spy.callCount, 1, 'got _seek() call')
  t.equal(spy.getCall(0).args[0], 'serialized', 'got expected target argument')
})

test('test serialization extensibility (clear range options)', function (t) {
  t.plan(rangeOptions.length * 2)

  rangeOptions.forEach(function (key) {
    const Test = implement(AbstractLevelDOWN, {
      _serializeKey: function (key) {
        t.is(key, 'input')
        return 'output'
      },
      _clear: function (options, callback) {
        t.is(options[key], 'output')
      }
    })

    const db = new Test()
    const options = {}

    options[key] = 'input'
    db.clear(options, function () {})
  })
})

test('clear() does not delete empty or nullish range options', function (t) {
  const rangeValues = [Buffer.alloc(0), '', null, undefined]

  t.plan(rangeOptions.length * rangeValues.length)

  rangeValues.forEach(function (value) {
    const Test = implement(AbstractLevelDOWN, {
      _clear: function (options, callback) {
        rangeOptions.forEach(function (key) {
          t.ok(key in options, key + ' option should not be deleted')
        })
      }
    })

    const db = new Test()
    const options = {}

    rangeOptions.forEach(function (key) {
      options[key] = value
    })

    db.clear(options, function () {})
  })
})

test('.status', function (t) {
  t.plan(5)

  t.test('empty prototype', function (t) {
    const Test = implement(AbstractLevelDOWN)
    const test = new Test('foobar')

    t.equal(test.status, 'new')

    test.open(function (err) {
      t.error(err)
      t.equal(test.status, 'open')

      test.close(function (err) {
        t.error(err)
        t.equal(test.status, 'closed')
        t.end()
      })
    })

    t.equal(test.status, 'opening')
  })

  t.test('open error', function (t) {
    const Test = implement(AbstractLevelDOWN, {
      _open: function (options, cb) {
        cb(new Error())
      }
    })

    const test = new Test('foobar')

    test.open(function (err) {
      t.ok(err)
      t.equal(test.status, 'new')
      t.end()
    })
  })

  t.test('close error', function (t) {
    const Test = implement(AbstractLevelDOWN, {
      _close: function (cb) {
        cb(new Error())
      }
    })

    const test = new Test('foobar')
    test.open(function () {
      test.close(function (err) {
        t.ok(err)
        t.equal(test.status, 'open')
        t.end()
      })
    })
  })

  t.test('open', function (t) {
    const Test = implement(AbstractLevelDOWN, {
      _open: function (options, cb) {
        this._nextTick(cb)
      }
    })

    const test = new Test('foobar')
    test.open(function (err) {
      t.error(err)
      t.equal(test.status, 'open')
      t.end()
    })
    t.equal(test.status, 'opening')
  })

  t.test('close', function (t) {
    const Test = implement(AbstractLevelDOWN, {
      _close: function (cb) {
        this._nextTick(cb)
      }
    })

    const test = new Test('foobar')
    test.open(function (err) {
      t.error(err)
      test.close(function (err) {
        t.error(err)
        t.equal(test.status, 'closed')
        t.end()
      })
      t.equal(test.status, 'closing')
    })
  })
})

test('_setupIteratorOptions', function (t) {
  const keys = rangeOptions.slice()
  const db = new AbstractLevelDOWN()

  function setupOptions (constrFn) {
    const options = {}
    keys.forEach(function (key) {
      options[key] = constrFn()
    })
    return options
  }

  function verifyOptions (t, options) {
    keys.forEach(function (key) {
      t.ok(key in options, key + ' option should not be deleted')
    })
    t.end()
  }

  t.plan(7)

  t.test('default options', function (t) {
    t.same(db._setupIteratorOptions(), {
      reverse: false,
      keys: true,
      values: true,
      limit: -1,
      keyAsBuffer: true,
      valueAsBuffer: true
    }, 'correct defaults')
    t.end()
  })

  t.test('set options', function (t) {
    t.same(db._setupIteratorOptions({
      reverse: false,
      keys: false,
      values: false,
      limit: 20,
      keyAsBuffer: false,
      valueAsBuffer: false
    }), {
      reverse: false,
      keys: false,
      values: false,
      limit: 20,
      keyAsBuffer: false,
      valueAsBuffer: false
    }, 'options set correctly')
    t.end()
  })

  t.test('does not delete empty buffers', function (t) {
    const options = setupOptions(function () { return Buffer.from('') })
    keys.forEach(function (key) {
      t.is(Buffer.isBuffer(options[key]), true, 'should be buffer')
      t.is(options[key].length, 0, 'should be empty')
    })
    verifyOptions(t, db._setupIteratorOptions(options))
  })

  t.test('does not delete empty strings', function (t) {
    const options = setupOptions(function () { return '' })
    keys.forEach(function (key) {
      t.is(typeof options[key], 'string', 'should be string')
      t.is(options[key].length, 0, 'should be empty')
    })
    verifyOptions(t, db._setupIteratorOptions(options))
  })

  t.test('does not delete null', function (t) {
    const options = setupOptions(function () { return null })
    keys.forEach(function (key) {
      t.is(options[key], null, 'should be null')
    })
    verifyOptions(t, db._setupIteratorOptions(options))
  })

  t.test('does not delete undefined', function (t) {
    const options = setupOptions(function () { return undefined })
    keys.forEach(function (key) {
      t.is(options[key], undefined, 'should be undefined')
    })
    verifyOptions(t, db._setupIteratorOptions(options))
  })

  t.test('rejects legacy range options', function (t) {
    t.plan(2)

    for (const key of ['start', 'end']) {
      const options = {}
      options[key] = 'x'

      try {
        db._setupIteratorOptions(options)
      } catch (err) {
        t.is(err.message, 'Legacy range options ("start" and "end") have been removed')
      }
    }
  })
})

redpajama_set_name: RedPajamaGithub


text:
Tuesday, August 15 2017 10:56
GWAR Lives to Bring You THE BLOOD OF GODS Album and Tour...
The following dispatch was received to Rock Father HQ this morning from the mighty GWAR:
On October 20th, GWAR will release a new studio album entitled "The Blood of Gods" via Metal Blade Records. In support of the new album, your Lords and Masters will leave their arctic slumber and return to the road to cause aural devastation across North America. Joining in the chaos will be Ghoul, Doyle (10/20-11/5), He Is Legend (11/7-12/10) and U.S. Bastards. The tour kicks off in Richmond, VA on October 20th and runs through December 10th in Detroit, MI. The tour includes a stop in New York City on Halloween as well! A complete list of dates can be found below.
Published in Music News
FOO FIGHTERS Announce New Album, "Concrete and Gold"
"Remember that 'break' we were taking? Well... we lied." That's what Dave Grohl had to say this morning as news broke that FOO FIGHTERS will release a new album entitled Concrete and Gold on September 15th. In a letter posted on the band's official site, Grohl calls it a "gigantic rock record," and if the recent "surprise" single "Run" is an indicator, it will be. In fact, I think "Run" is one of the best songs of 2017, and it's the one that has officially turned The Rock Daughters™ (5 & 8) into full-fledged Foo Fighters fans.
Monday, June 19 2017 10:44
Watch: DEAD CROSS Debut "Seizure & Desist" Music Video
If you're looking for something on the noisier side of the spectrum to kick off the week, check out "Seizure and Desist" - the new music video for the second single from the forthcoming self-titled debut from DEAD CROSS, which premiered via Loudwire. Along with the video comes the announcement that the band featuring Dave Lombardo (ex-Slayer/Suicidal Tendencies), Justin Pearson (Retox/The Locust), Mike Patton (Faith No More/Tomahawk) and Michael Crain (Retox, Festival of Dead Deer) will be joined on tour this summer by SECRET CHIEFS 3, featuring Patton's former Mr. Bungle guitarist, Trey Spruance.
Tuesday, May 30 2017 21:11
PRODUCT OF HATE Begins the 2017 Summer Annihilation Tour!
I've been championing Wisconsin's PRODUCT OF HATE since I first saw them live back in 2009. As many readers of this site know, my relationship with the PoH camp runs deep - I've directed/edited most of their music videos, and I co-manage the band. After touring with the likes of Mushroomhead, Allegaeon, Hammer Fight and The Agonist, PRODUCT OF HATE is back on the road in support of their Napalm Records debut, BURIED IN VIOLENCE. Starting with a 10-day East Coast run with SKINLAB and continuing across the U.S. as the 2017 Summer Annihilation Tour with IKILLYA (Urban Yeti), there's nearly 40 chances to catch PRODUCT OF HATE in a city near you!
Monday, May 22 2017 12:42
Mike Patton & Dave Lombardo's DEAD CROSS Announce North American Tour...
When you pair my favorite vocalist of all-time, Mike Patton (Faith No More, Tomahawk, Mr. Bungle, Fantomas) with one of my favorite drummers of all-time, Dave Lombardo (ex-Slayer, Fantomas) I'm interested, and thus DEAD CROSS has been firmly on my radar. Today, the band which also features Justin Pearson (The Locust, Retox) and Michael Crain (Retox, Festival of Dead Deer) have announced their first North American tour dates.
PJ Masks Live! Time to Be a Hero: Full Tour Dates Revealed!
Back in March, there was a ton of excitement when it was announced that PJ Masks Live Tour was in the works. Now comes the official reveal that Entertainment One (eOne) and Round Room Presents will bring PJ Masks Live! Time to Be a Hero to cities across North America starting in September 2017. The "brand-new, fully-immersive musical stage production" is based on eOne's top-rated animated TV series, which airs daily on Disney Junior. Catboy, Owlette, Gekko, and all of the Baddies will face-off in live performances featuring world-class production, familiar and original music, acrobatics, and immersive interactivity. Exclusive pre-sales begin Tuesday, May 16, at 10am EST, with the general public on-sale starting Friday, May 19, at 10am EST.
Published in Movies, TV and More


A video biography of Aleister Crowely and his doings."Some of the things Aleister said to me," Grady replied carefully, "could be interpreted as hints pointing that way." He went on to quote Crowley's aphorisms about various of the standard entities contacted by Magick. The Abramelin spirits, for instance, need to be watched carefully. "They bite," Aleister explained in his best deadpan am-I-kidding-or-not? style. The Enochian "angels," on the other hand, don't always have to be summoned. "When you're ready, they come for you," Aleister said flatly.
In this teaching we will start out by first discussing many of the occult details and facts regarding both J.R. Tolkien's Lord of the Rings' books/movies and then C.S. Lewis's Narnia' books/movies. During the 1930's to 1940's both Tolkien and Lewis were part of an informal literary discussion group associated with the University of Oxford' & known as the Inklings. C. S. Lewis called Charles Williams (Fellow Inkling, specialist in Tarot and Kabbalah & a man whose mind was steeped in occult rituals and demonic forces) 'his dearest friend.' This close friendship made a large impact on Lewis and his writings. C. S. Lewis wrote of Williams poems: 'They seem to me... for their profound wisdom, to be among the two or three most valuable books of verse produced in the century.' Charles Williams was also a member of the Hermetic Order of the Golden Dawn'. There are many that assert that both Tolkien and Lewis were closet members of the Golden Dawn. The Hermetic Order of the Golden Dawn was a amalgamation of Freemasonry (Babylonian mystery religions), Theosophy (An Satanic/occult religious philosophy combined with metaphysics, started by a high level witch named H. P. Blavatsky), Eliphas Levi's Teachings (A high level black magic occultist), Enochian Magic (an elaborate system of advanced, Satanic, ceremonial magic), The Kabbalah (The highest level of Jewish witchcraft) and medieval grimoire (a manual of black magic for invoking spirits and demons). Regarding the Order of the Golden Dawn, among its first initiates was a coroner who allegedly performed necromantic rites, while another early member was black magician Aleister Crowley, the self styled Great Beast/666.
The Rosicrucians is an extensively researched historical film based on rare manuscripts found at Rosicrucian headquarters in California and France. This video describes the intriguing story of this enigmatic Order, from its distant past to the exciting present. Learn how Rosicrucian ideas about education, democracy, free inquiry, human rights, and expansion of consciousness have exercised vital imprints on today's society. The narrative also includes quotations from important contributors to civilization throughout the centuries - philosophers, scientists, scholars, writers, artist - all of whom have been associated with the Rosicrucians.
Once again, Joe Lieberman is lying about the Bush Kiss, today's New York Times reports he said, "There has been some doubt, based on the postgame films." Actually, the postgame films confirm a kiss.
In all seriousness, for a masonic greeting to be handed out so boldly to ones superior(Lieberman), it can be interpreted that Bush was showing deference and admiration, to one of  his real handlers?
Ancient pyramids of China on Google Earth; the first is over 300 meters in length.


New York City Mayor Michael Bloomberg laid out a multimillion dollar plan Tuesday to guard New York City against storms and the effects of global warming. Fueled by Superstorm Sandy last fall, the sweeping proposals for New York represent a sizeable step up in scale and urgency for Mayor Bloomberg.
Mayor Michael Bloomberg speaks at the Real Estate Board of New York, in New York. Bloomberg proposed Tuesday an ambitious plan to combat the effects of climate change.
Removable flood walls would be set up for much of lower Manhattan, a 15-to-20-foot levee would guard part of Staten Island and gates and levees would shield Brooklyn as part of a nearly $20 billion plan Mayor Michael Bloomberg proposed Tuesday to protect New York City from storms and the effects of global warming.
Bloomberg's proposals also include building dunes in Staten Island and the Rockaways, firming up the shoreline with bulkheads in various neighborhoods and considering building a levee and a new"Seaport City" development at the South Street Seaport that would echo nearby Battery Park City.
"This plan is incredibly ambitious," Bloomberg said in a speech at the Brooklyn Navy Yard, acknowledging that much of the work would extend beyond the end of his term this year. "This is urgent work, and it must begin now.
"Piece by piece, over many years and even decades, we can build a city that's capable of preparing better, withstanding more and overcoming anything."
Fueled by the city's blow from Superstorm Sandy last fall, the sweeping proposals represent a sizeable step up in scale and urgency for a mayor who has for years emphasized the threat climate changeposes to the nation's biggest city, which has 520 miles of coastline.
It remains to be seen how the ideas will fare in a future mayoral administration, and what kind of support — financial and otherwise — they might ultimately get from the federal government and other entities that would be involved, not to mention from New Yorkers themselves. Bloomberg acknowledged that some of the ideas could block views and otherwise prove controversial, but "if we're going to save lives and protect the lives of communities, we're going to have to live with some new realities," he said.
Bloomberg said the city and federal money already allocated for Sandy relief would provide $10 billion for the projects, and the city believed it could get at least an additional $5 billion in federal money.
The recommendations draw from updated predictions from theNew York City Panel on Climate Change, a scientists' group convened by the city.
And with local waters a foot to 2½ feet higher than they are today, 8 percent of the city's coastline could see flooding just from high tides, the group estimates. Most of that coast is in a relatively undeveloped area near a bay.
City Hall, the state government and others have released warnings over the years about climate risks. The city has required some newdevelopments in flood zones to be elevated and has restored wetlands as natural barriers, among other steps.
"Sandy, obviously, increased the urgency of dealing with this and the need to plan and start to take concrete steps," Deputy Mayor Caswell Holloway said Monday.
The new projections echo 2009 estimates from the climate changepanel, but the timeframe for some upper-end possibilities has moved up from the 2080s to mid-century.
"The overall numbers are similar, but we have more compelling evidence now that (a more severe scenario from 2009) is looking like a more realistic possibility now," due to improved computer models and more evidence that some ice sheets are melting, said Radley Horton, a climate scientist with Columbia University's Earth Institute and a researcher with the city climate panel.
Scientists have reached a consensus on global warming but still debate how severe the effects will be.


text:
Спурий Постумий Албин () e политик на Римската република през 2 век пр.н.е.

Биография
Произлиза от клон Албин на фамилията Постумии. Син е на Спурий Постумий Албин Магнус (консул 148 пр.н.е.) и брат на Авъл Постумий Албин (пропретор 110 пр.н.е.).

През 110 пр.н.е. е избран за консул заедно с Марк Минуций Руф. Той получава провинция Нумидия и тръгва на поход против цар Югурта. Когато през късната есен се връща в Рим, за да проведе консулските избори, неговият брат Авъл Постумий Албин поема командването като легат. Следващата година е проконсул в провинция Африка. За неуспехите в Нумидия той и брат му са осъдени.

Литература
 Friedrich Münzer, Postumius 45). Paulys Realenzyklopädie der klassischen Altertumswissenschaft. XXII 1, Sp. 923 – 925.
 Postumius [I 9], Der Neue Pauly. IX, Sp. 224.

Източници

Римски републикански консули
Постумии

redpajama_set_name: RedPajamaWikipedia


In addition to the great architecture there is a wonderful staff team taking cheap mlb jerseys care of everything else that is important to their guests. In particular there are Axel Kusch and Martin Sander, manager and owner of the Singer109 as well as their Ultra indispensable and long-term assistant Sophie. As soon as she gets a break, she loves making music and cheap jerseys plays the piano or the guitar. We suppose, the piano in the Atrium actually belongs to Sophie ♥.
Martin Sander is an allrounder, studying medicine and architecture and working for many years as an interior designer in Berlin and Hamburg. After excursions into the world of marketing, web design and data protection he was ready for the lively hostel business and he loves it, even though it does not leave much time for hobbies. But as soon as there Website is a Jerseys time gap, he is on his way travelling. And if there is no time cheap jerseys left, Martin still feels like travelling because he loves to talk to the international Singer109 guests and thus goes on mental journeys to different countries every single day.
Axel Kusch came to Berlin in 1983 and he instantly fell in love with this city. Born in the former GDR near Halle / Leipzig he nowadays appreciates the liberty and freedom to make his very own decisions. To him coincidences are an important factor in life and he wants to give them a fair chance. wholesale jerseys On top of his apprenticeship as a carpenter he qualified as a building material inspector and used to work for many years in facility management for large construction companys. In his leisure time Axel does not only play football, he is also a true water-addict. Two years ago, he gained his motorboat driving license and he loves to load up his energy levels while fishing.
More impressions of the Singer109, founded in 2008 and working with ASSD Ho(s)tel Software ever since.


text:
Hof város Németországban, azon belül Bajorországban.

Népesség
A település népessége az elmúlt években az alábbi módon változott:

Városrészek
A 26 városrész:

Története
1373 és 1792 között a Bayreuthi Őrgrófság része volt. Rövid porosz és francia idő után 1810 a Bajor Királyság részévé vált.

Közlekedés

Közúti közlekedés
A várost érinti az A9-es, A93-as és A72-es autópálya.

Vasúti közlekedés

Kapcsolódó szócikkek
 Bajorország települései

További információk

Források

Bajorország települései
Bottal létrehozott német település cikkek


text:
Submitted by ccoakley on September 15, 2014 - 8:51am
09.15.2014 Williams Mullen Welcomes Corporate Associate Kathryn B. Pfeiffer
Williams Mullen is pleased to announce that Kathryn B. Pfeiffer has joined the firm as an Associate in the Corporate section. She will be working out of the Virginia Beach office.
Ms. Pfeiffer joins Williams Mullen from Midkiff, Muncie & Ross, P.C., where she was an associate in their Litigation department. Prior to that, she was a judicial clerk for the Honorable Glen Huff, where she did research on various topics in administrative, domestic relations, workers' compensation, and criminal law and drafted memoranda summarizing research findings. She will be supporting Williams Mullen's Business and Corporate team, assisting with major business deals, such as mergers and acquisitions and other corporate transactions, as well as advising on general corporate matters and regulatory compliance.
Katie earned her J.D. from The T.C. Williams School of Law at the University of Richmond. While in law school, she was a member of the Moot Court Board and served as the Business Editor for the Richmond Journal of Global Law and Business. She also has a B.A. in English from Davidson College.