text:
#include "ProblemTest.h"
#include "HCOptimization.h"
#include "RRTOptimization.h"
#include "SAOptimization.h"
#include "TAOptimization.h"
#include "GDAOptimization.h"
#include "MYOptimization.h"
#include <stdio.h>
#include "general.h"
#include <stdlib.h>

short ProblemTestVerboseMode=1;
ofstream *PrintBestTo=0,*PrintBestTo2=0;

int compareProblem(const void *p,const void *j)
{
  double a=(*(Problem **)p)->value();
  double b=(*(Problem **)j)->value();
  if(a==b)
    return 0;
  if(a<b)
    return -1;
  else
    return +1;
}

IterOptimization *genIterOptimizer(int verfahren,Problem &problem,int maxIter)
{
  IterOptimization *opt;
  switch(verfahren)
    {
    case HC_OPT:
      opt = new HCOptimization(problem,maxIter);
      break;
    case GDA_OPT:
      opt = new GDAOptimization(problem,maxIter);
      break;
    case SA_OPT:
      opt = new SAOptimization(problem,maxIter);
      break;
    case TA_OPT:
      opt = new TAOptimization(problem,maxIter);
      break;
    case RRT_OPT:
      opt = new RRTOptimization(problem,maxIter);
      break;
    case MY_OPT:
      opt = new MYOptimization(problem,maxIter);
      break;
    default:
      return 0;
    }
  problem.initialize();
  return opt;
}

double solveProblem(int verbose,Problem &problem,int versuche,
		  int optimierungsschritte,int verfahren,double &mean,
		  StatVar &endNice,StatVar &auswertungen,StatVar &startNice,
		  double maxClock,int *iterationsschritte)
{
  double smallestV=1e100;
  Problem *bestP=0;
  StatVar start,end;
  StatVar dauer;
  StatVar iterschritte;

  for(int i=0;i<versuche;i++)
    {
      if(verbose>2)
	{
	  cout << "                  " << i << " of " << versuche << ".\n";
	  cout.flush();
	}
      double vorher=clockSec();

      IterOptimization *opt=genIterOptimizer(verfahren,problem,
					     optimierungsschritte);
      problem.numberOfPartEvaluations=0;

      startNice.addValue(problem.nicevalue());
      start.addValue(problem.value());

      double v=opt->minimize(optimierungsschritte);

	if( problem.numberOfPartEvaluations==0)
      auswertungen.addValue(opt->getCurStep());
	else
      auswertungen.addValue(problem.numberOfPartEvaluations);
      iterschritte.addValue(opt->getCurStep());

      endNice.addValue(problem.nicevalue());
      end.addValue(problem.value());
      dauer.addValue(clockSec()-vorher);
      if( verbose>2 )
	{
	  cout << i << ". " << v << ": ";
	  problem.dumpOn(cout);
	}
      delete opt;
      if( v<smallestV && verbose>1 )
	{
	  bestP=problem.makeEqualProblem();
	  smallestV=v;
	}
      if( verbose>2 )
	cout << "  time: " << clockSec() << " best:" << endNice.quantil(0)
	  << " this:" << problem.nicevalue() << endl;
      if( maxClock && clockSec()>maxClock )
	{
	  if(verbose)
	    cout << "Stop because of time limit ( " << (clockSec()-maxClock)
	      << " Sekunden)\n";
	  break;
	}
    }

  if(verbose)
    {
      cout << "\n***** " << start.getNum() << " runs. (algorithm:";
      switch(verfahren)
	{
	case HC_OPT:
	  cout << "HC";
	  break;
	case RRT_OPT:
	  cout << "RRT";
	  break;
	case GDA_OPT:
	  cout << "GDA";
	  break;
	case TA_OPT:
	  cout << "TA";
	  break;
	case SA_OPT:
	  cout << "SA";
	  break;
	case MY_OPT:
	  cout << "MY";
	  break;
	default:
	  cout << "!unknown!";
	}
      cout << ")*****\n";
      problem.dumpInfos(cout);
      cout << endl;
      cout << "start-costs: "; start.dumpOn(cout); cout << endl;
      cout << "  end-costs: "; end.dumpOn(cout); cout << endl;
      cout << "   start-pp: "; startNice.dumpOn(cout); cout << endl;
      cout << "     end-pp: "; endNice.dumpOn(cout); cout << endl;
      cout << " iterations: "; auswertungen.dumpOn(cout); cout << endl;
      cout << "       time: "; dauer.dumpOn(cout);
      cout << endl;
    }
  if( bestP )
    {
      if(PrintBestTo)
	bestP->dumpOn(*PrintBestTo);
      else
	bestP->dumpOn(cout);
      delete bestP;
    }
  mean = end.getMean();
  if( iterationsschritte )
    *iterationsschritte=(int)(iterschritte.getMean());
  return end.getSmallest();
}

void multiSolveProblem(Problem &problem,int versuche,int maxSeconds)
{
	int i;
  double rDummy;
  StatVar end[MAX_OPT_NR],auswertungen[MAX_OPT_NR],start[MAX_OPT_NR];
  double maxClock=clockSec()+maxSeconds;
  if(maxSeconds<=0)maxClock=0;
  solveProblem(ProblemTestVerboseMode,problem,versuche,-1,HC_OPT,rDummy,
	       end[HC_OPT],auswertungen[HC_OPT],start[HC_OPT],maxClock);
  //int maxLaeufe=(int)(auswertungen[HC_OPT].getMean()*5);
  for(i=0;i<MAX_OPT_NR;i++)
    {
      if( i==HC_OPT )
	continue;
      double maxClock=clockSec()+maxSeconds;
      if(maxSeconds<=0)maxClock=0;
      solveProblem(ProblemTestVerboseMode,problem,versuche, -1,i,rDummy,end[i],
		   auswertungen[i],start[i],maxClock);
    }
  end[HC_OPT].title = "  HC";
  end[SA_OPT].title =   "  SA";
  end[GDA_OPT].title =  " GDA";
  end[RRT_OPT].title =  " RRT";
  end[TA_OPT].title =   "  TA";
  end[MY_OPT].title =   "  MY";

    for(i=0;i<MAX_OPT_NR;i++)
    end[i].quantil(0.5);

  cout << "mean: \n";
  compareStatVarQuantil=-1;
  qsort(end,MAX_OPT_NR,sizeof(StatVar),compareStatVar);
  for(i=0;i<MAX_OPT_NR;i++)
    cout << end[i].title << " " << end[i].getMean() << endl;

  cout << "\nbest: \n";
  compareStatVarQuantil=0;
  qsort(end,MAX_OPT_NR,sizeof(StatVar),compareStatVar);
  for(i=0;i<MAX_OPT_NR;i++)
    cout << end[i].title << " " << end[i].quantil(compareStatVarQuantil)
      << endl;

  cout << "\n20%-quantil: \n";
  compareStatVarQuantil=0.2;
  qsort(end,MAX_OPT_NR,sizeof(StatVar),compareStatVar);
  for(i=0;i<MAX_OPT_NR;i++)
    cout << end[i].title << " " << end[i].quantil(compareStatVarQuantil)
      << endl;
}

void metaOptimization(Problem &tp,int nLaeufe,int nPars)
{
  double bestPar,bestValue;

  bestPar=IterOptimizationOptimizeParameter(tp,TAOptimization::defaultAnnRate,0.0,1.0,nLaeufe,nPars,TA_OPT,bestValue);
  cout << "#TA(defaultAnnRate) BEST-PAR: " << bestPar << "   BEST-VAL: " << bestValue << endl;
  bestPar=IterOptimizationOptimizeParameter(tp,RRTOptimization::defaultAnnRate,0.0,1.0,nLaeufe,nPars,RRT_OPT,bestValue);
  cout << "#RRT(defaultAnnRate) BEST-PAR: " << bestPar << "   BEST-VAL: " << bestValue << endl;
  bestPar=IterOptimizationOptimizeParameter(tp,GDAOptimization::defaultAlpha,0.0,0.01,nLaeufe,nPars,GDA_OPT,bestValue);
  cout << "#GDA(defaultAlpha) BEST-PAR: " << bestPar << "   BEST-VAL: " << bestValue << endl;
  bestPar=IterOptimizationOptimizeParameter(tp,SAOptimization::defaultEndAnnRate,0.0,1.0,nLaeufe,nPars,SA_OPT,bestValue);
  cout << "#SA(defaultEndAnnRate) BEST-PAR: " << bestPar << "   BEST-VAL: " << bestValue << endl;
}


Ghent is the 15th city to sign a pledge to the European Pillar of Social Rights. Mayor Mathias De Clercq signed a strong commitment to principle 19 on housing and assistance for the homeless.
Ghent is committed to invest €90 million to expand the offer and increase the quality of social housing and low-budget private rental homes as well as to step up efforts to address homelessness including the expansion of shelter and Housing First initiatives.
Mayor Mathias De Clerq said: "Ghent makes housing a priority with ambitious goals. We will provide better housing to all target groups with a specific focus on people on low income and families with children".
Ghent follows 14 other cities that signed pledges to the EU Pillar of Social Rights: Madrid, Stuttgart, Gothenburg, Ljubljana, Braga, Vienna, Barcelona, Timisoara, Nantes, Leipzig, Warsaw, Turku, Athens and Leeds. This is part of the EUROCITIES initiative 'Inclusive cities for all: Social Rights in my city'. This initiative aims to build political momentum to get mayors and deputy mayors to implement Pillar principles at local level. We will officially launch this campaign during a political event at the European Parliament on 21 February 2019.


There is also one more question. How can I drop the custom generated urls back to the default vaules? At the moment the clearance of all rules with following urls regeneration does not help.
The only solution I found was to use [[+cu.parent_uri]]/[[+alias]] rule and regenerate the urls.
But I can't understand, why alias generated from page title?
Why not just take the data from the relevant field?
Besides, at the moment, you're right, the only way to set default URIs is to create a rule with [[+cu.parent_uri]]/[[+alias]].
But it's a good idea, I think I will add a button to clear custom URIs in next release.
It's the MODx default behavior. Aliases are made from resources pagetitle. It's more convenient for your customers who don't want specify aliases.
Thank you!!! this helped a lot!
The only thing I've noticed is that the last rule ignores container suffix which is "/" by default. E.g. it generates url for containers as "category2/subcategory2" or category2/subcategory2.html depending on the content type settings (html/js etc.)instead of "category2/subcategory2/".
Hi Ben, I'm using import form XLS file to create resources in site tree. And found that every time I'm importing resources, I need to regenerate urls manually from the plugin. I'm wondering if there is any possibility to configure the plugin to make it automatically?
Set CustomUrls, but it does not work with nginx. What rewrite rules you need to finish?
Hi, thanks for this addon! I'm trying to exclude all resources with a specific template (ID 3) from all alias paths. Is that possible with CustomUrls?
I added the second rule (don't know if you can exclude a template like that) because the first one wasn't working on its own. But the two rules together also don't work.
Can I exclude all resources with a specific template with one rule or is it not possible with CustomUrls? If it's possible, what should I do to make it work?
Hello, specifically are registered to add a comment. Please add Russian localization (language) to your component. I have it completely translated. This localization is available at the link https://yadi.sk/d/ZbYsmNOD3SGQmk thanks in Advance. PS: the Russian-speaking community will thank You!!! This review was written using a translator, I apologize for any inaccuracies in this comment. I will also attach the original text of this comment.
Здравствуйте, специально зарегистрировался чтобы добавить комментарий. Добавьте пожалуйста в Ваш компонент Русскую локализацию (язык). Я его полностью перевел. Эта локализация доступна по ссылке https://yadi.sk/d/ZbYsmNOD3SGQmk Заранее спасибо. P.S.: Русскоязычное сообщество скажет Вам спасибо!!! Этот комментарий писал через переводчик, прошу прощение за неточности в этом комментарии. Также прикреплю оригинальный текст этого комментария.


text:
Mautic.clientOnLoad = function (container) {
    if (mQuery(container + ' #list-search').length) {
        Mautic.activateSearchAutocomplete('list-search', 'api.client');
    }
};

Mautic.refreshApiClientForm = function(url, modeEl) {
    var mode = mQuery(modeEl).val();

    if (mQuery('#client_redirectUris').length) {
        mQuery('#client_redirectUris').prop('disabled', true);
    } else {
        mQuery('#client_callback').prop('disabled', true);
    }
    mQuery('#client_name').prop('disabled', true);

    Mautic.loadContent(url + '/' + mode);
};

redpajama_set_name: RedPajamaGithub


text:
The Anatomy of a Successful Transit Ballot Measure
Last week, people went to the polls in four states to vote on transit-related ballot initiatives. Of 10 measures transit advocates were watching closely, seven of them were victories. Last night, I had the opportunity to hear from Jason Jordan of the Center for Transportation Excellence about what makes a successful transit ballot campaign. Here are his tips for success:
Strategize about timing. Decide whether to put your initiative on the ballot during a high-turnout even year (when Congressional or even presidential elections are happening) or an odd year or special election with fewer items on the ballot and lower turnout. It's a strategic question, Jordan says, with no right or wrong answer, but it needs to be considered. In a general election, media costs can be higher because turnout is high, and your campaign isn't the focal point of the election. It's easy to hide, he said, but also easy to get lost. In a special election, you can microtarget your message and turn out your base, which might be enough to swing the vote. You don't have to spend as much time trying to sway the undecided.
Go for an easy target. Measures to renew taxes tend to be easier battles than those to create new taxes or raise taxes. Ohio's Stark Area Regional Transit Authority (SARTA) put "Not an Increase" right in the campaign logo for its May ballot measure – and it passed, 66 to 34. Similarly, campaigns trying to maintain current services are more successful than those seeking big expansions. Northwestern Michigan's Benzie Bus asked voters merely to "Keep it Rolling."
Be specific. The more specific the benefits, the more likely people are to vote in favor of transit. If they can see what's in it for them, they'll be willing to pay for it. Even people who don't normally take transit are brought along by good messaging created by transit users and advocates. Many campaigns have used the slogan, "Some of us ride it; all of us need it." Many people blame the three-way split of benefits for the defeat of the Seattle car tab measure, which would have funded transit, road repair and bike/ped projects with a $60 vehicle fee. Some have suggested that Mayor Mike McGinn's idea of a higher fee would have been more successful, if it had been easier to show that it would have funded a streetcar network.
Round up the big players. If you can, enlist big players to fund the campaign. Initial polling for the anti-transit Initiative 1125 in Washington state showed about 60 percent in favor. The campaign then brought two big future beneficiaries of the light rail project on board to help finance the No campaign. With Boeing and Microsoft's help, they were able to turn the vote around. Even if you don't have anything that big to tap into, there's always the local Chamber of Commerce.
Work your message. Initiative 1125 would have put tolling in the hands of the legislature, instead of the appointed state Transportation Commission, making tolling a more politically dangerous act. The campaign against the measure managed to craft an anti-tax message around this concept: If it's harder to toll, they'll just raise our taxes, and no one wants that!
Start at the beginning. Before you can bring a measure to the ballot, you need to make sure you have the authority to do so. Until recently, Jordan said, the only North Carolina county with ballot authority was Mecklenburg County, which includes Charlotte. "Now," he said, "the floodgates are open." Raleigh and Durham county both had successful campaigns this year.
Pick your poison. Of all transportation measures, 38 percent involve a sales tax and 29 percent involve a property tax. Property tax measures win 80 percent of the time. Bond measures, which represent only 10 percent of all initiatives, win even more often, probably because voters don't see it as a cost they have to pay. Only three percent of measures involve a vehicle fee like the one rejected in Seattle, but as other avenues are tapped out, vehicle fees may become more popular.
The votes show no partisan divide. Transit measures don't go red or blue. In 2010, 77 percent of positive transportation initiatives were approved in areas that elected Democrats versus 69 percent in areas that elected Republicans – not a huge difference.
They also show no urban/rural divide. While urban areas are known for high ridership, cuts may be even more dramatic in rural areas with small systems – especially systems primarily used by vulnerable populations. In some cases, the ballot measure might decide whether a community has a dial-a-ride service for seniors or it doesn't.
It's not bad to go negative. If you find yourself having to fight off a negative ballot initiative, like 1125 in Washington, don't despair. Despite the impression you might get by the overwhelming victory rate for transit measures, Jordan says it's actually easier to win a No campaign than a Yes campaign. After all, he said, people default to the status quo, and that's a No vote on anything new.
Jordan didn't mention this one, but I will: Some transit advocates say it's important to acknowledge corruption and mismanagement in your transit agency if that's been a public issue. It can be hard to ask people to pay more to an agency known for squandering resources. But you're not going to skirt the issue by avoiding it.
Next year, Jordan expects contests in Orange and Wake Counties, North Carolina, following the success of the Durham sales tax campaign. Alameda County, California will likely vote to extend – and possibly even raise – the sales tax for transportation. Also in California, Marin and Sonoma Counties will likely have to fight against measures to repeal a 2008 tax. Denver is looking at a campaign to devote sales tax revenues to FasTracks, the ambitious regional rail and bus network. Baton Rouge, Louisiana will look for transit funding. A statewide ballot measure in Idaho could seek ballot authority for transportation campaigns, in an attempt to follow the North Carolina model. And Atlanta could go for a one percent sales tax in the 10-county region in July.
There has been a surge of ballot measures for transportation lately, and Jordan had a few ideas about why. For one, there simply may have been pent-up demand after the recession hit, and jurisdictions can't wait any longer. Also, as local areas get tired of waiting on Washington, they're taking matters into their own hands. Also, word is out that this works: Transit has a 70 percent victory rate since 2000, and it's up to 79 percent this year. Positive transportation measures win at twice the rate of other ballot initiatives.
In fact, Jordan said he's almost getting concerned that the success rate is too good – he doesn't want anyone thinking that local areas are so good at this that they might as well bear the full responsibility for transportation funding, and take it away from the federal government. He emphasizes that in the end, the primary responsibility for transportation funding does, and should, lie with the feds.
CFTE has lots more resources on how to build a successful transit campaign. Their "Building Communities Through Public Participation" guide [PDF] is especially thorough, but they have a wealth of information for anyone who's looking.
Filed Under: Elections, Transit
UPDATED: Last Night's Quiet Transit Victories
By Tanya Snyder	| Nov 6, 2013
Yesterday was a relatively quiet election day for transportation-related ballot measures, but of the six transit initiatives that came before voters yesterday, five six passed, with a sixth seventh too close to call. That's in line with last year's 79 percent success rate — 71 percent since 2000. When asked, voters overwhelmingly choose to raise […]
Winning a Campaign for Better Walking and Biking at the Ballot Box
While transit groups have been campaigning for, and winning, ballot measures for years, walking and biking advocacy groups are newer to the ballot referendum game. But as demand for safer streets grows in cities around the country, more and more active transportation groups are seeking voter support for special funding measures. Living Streets Alliance in […]
This Could Be the Biggest Year Ever for Transit at the Ballot Box
Next month, 19 transit-related measures will come before voters. If the rest of this year is any guide, 16 of them will pass. Despite a high-profile loss in Atlanta a few months ago, transit referenda have an 86 percent success rate so far this year, according to the Center For Transportation Excellence. It strikes some […]
Communities Vote to Tax Themselves to Support Transit
In addition to some of the high-profile measures that we covered already, Election Day brought many successes on some smaller ballot initiatives. According to the Center For Transportation Excellence, pro-transit campaigns had an 80 percent success rate this year at the ballot box, with more ballot measures coming up for a vote than any previous […]
Op Ed: Why Baltimore Needs Its Own RTA
By Jaime D. Sigarán	| Jul 1, 2020
A new ballot question initiative in Maryland aims to give Baltimore voters a say in the creation of a city-specific transit agency — which could be a crucial tool in the fight for transportation equity in Charm City, advocates argue. For nearly half a century, Baltimore has been one of the largest cities in America lacking […]
Op-Ed: Learning from Nashville's Transit Failure
By Ben Fried	| Jan 27, 2020
Ballot measures can expand and improve transit. But if Nashville is any example, it can backfire. Here are some lessons all cities can learn.

redpajama_set_name: RedPajamaCommonCrawl


Who We are: We build custom front and rear bumpers for dozens of makes and models listed below. Since we build them, we can offer you any combination of options and special customization you want at a price and level of quality considered to be the best in the industry!
How to choose: Select your Make and Model, by scrolling down, from the links listed below OR from the Navigation panel to the left. Please contact the sales office if you have any questions, were happy to help.
You can also choose from the Category Navigation area to the left by clicking the"+" sign and continuing to drill down or you can also enter your vehicle modelin the Search Field to the left and then click search i.e. Tacoma.


The TDA7073A/AT are dual power driver circuits in a BTL configuration, intended for use as a power driver for servo systems with a single supply. They are specially designed for compact disc players and are capable of driving focus, tracking, sled functions and spindle motors.
A MCL protection circuit is built-in. The MCL circuit is activated when the difference in current between the output terminal of each amplifier exceeds 100 mA (typical 300 mA). This level of 100 mA allows for headphone applications (single-ended).
ESD protected on all pins.


The cloud services provider delivered first quarter net income of $94 million, or 57 cents a share, on revenue of $713 million.
Akamai reported strong fourth quarter financial results after the bell on Tuesday. The cloud services provider delivered first quarter net income of $94 million, or 57 cents a share, on revenue of $713 million, up 8 percent from a year ago. Non-GAAP earnings for the quarter came to $1.07 a share.
Wall Street was looking for fourth quarter non-GAAP earnings of $1 a share on revenue of $703.9 million.
Akamai saw growth it its Web division, with revenue up 9 percent from a year ago to $385 million. The media division, Akamai's unit that speeds up webpages, saw first quarter revenue rise 8 percent to $328 million. The company's cloud security unit had revenue of $185 million, up 36 percent from a year ago.
Akamai's non-GAAP EPS for 2018 came to $3.62 on revenue of $2.71 billion, which is in line with expectations.
"Both revenue and earnings exceeded our expectations due to the very rapid growth of our cloud security business, robust seasonal traffic and our continued focus on operational excellence," said Tom Leighton, Akamai CEO. "As a result, we achieved our fifth consecutive quarter of non-GAAP operating margin improvement, and we are well on our way to achieving our 30 percent margin goal in 2020, while continuing to invest in innovation and new products to drive future growth."
In terms of guidance, analysts expect Akamai to deliver first quarter earnings of 96 cents a share on revenue of $710.6 million.
Akamai also announced today that its finance chief Jim Benson was retiring and would be replaced current finance SVP Ed McGowan.


text:
Be Nice - By: Bobby Hill
It's with no ulterior motive or expectation of a desired response to the contrary, to state the phrase, "I'm not currently the best comic in the city." I find ranking comics based on how "good" they are is pretty fruitless. Some people make me laugh more than others often, and some make me laugh more than others based on the mood I'm in. I say that to lay a little groundwork here. There are an amazing number of really good shows in this city that are run by fellow comics. I actually get to count myself among that fortunate group, thanks to the people I get to work with and the talented people that say "yes" when we ask them to perform. Trying to book these shows is an undertaking really only understood by people who have peeked behind the curtain to see how the sausage gets made.
Yes, there is a plethora of talent to pick from, however, putting together a combination that makes the night fun for the audience takes a little work. One of the things that I've had happen lately is an increase in the number of shows I've been asked to do. As already mentioned, it's not because everyone all of a sudden thinks I'm the best comic in the city or even one of the best. I may not even be in the top half of the talent here. Alright, that might be stretching it, but I really feel the reason why I've been asked more lately and why I want to ask a number of the comics I ask to be on our show comes down to a very basic premise: Be Nice.
There's a misconception about what being nice is. It's often mistaken for being present, saying hello,showing up and a few other things that we do that we think means we're socializing. Oftentimes what we're doing is having canned interactions. Those whole, "How are things?" "Good, good," interactions that most of us do when we want to acknowledge someone but not interact with them. I get it; sometimes there's a thought you just have to jot down, a message you just have to reply to, or a level of Candy Crush you just have to finish. I've been in that same boat. However, I think some of us almost exclusively interact this way with all but the few people in the scene we consider our friends.
I also understand that some of us have slightly eccentric thought processes. We're not all going to be best friends. We don't all think the same or believe the same about the same things, and that's all fine. However, you'd be amazed at what you can find that you do get along with people about, if you'll just extend the conversation a bit. How do you extend a conversation? I know it seems really weird, but try this: ask people questions about themselves beyond the basics. Facebook and the fact that we all get on stage and (supposedly) bare our souls could cause anyone to think they have a familiarity with another person that just doesn't actually exist.
Most of us are trying to get ahead in an industry that has a heavy temptation towards being inward and selfishly focused. What we often don't realize is that the bond you form with that up-and-coming open micer or well-known comic today, could lead to not only the benefit of a new good friend, but potential opportunities, indirectly as a result. If you're wondering what I mean, be in any room with Timmy Brochu and just watch how he flits around. No ulterior motive. No sense of falsehood. Just a general interest in whoever is present. What's the result? Well, if you were at Township for his album recording, you saw the result. The guy packed the house, largely with comedians, to a standing room only capacity, to record his first live stand-up album. What's the common denominator statement about Timmy? "He's one of the nicest, most genuine guys on the scene."
Now, no one can be expected to have Timmy's natural personality, but faking it till you're making it isn't the worst idea, as long as you're trying to be yourself. Try this: the next time you're sitting around before a mic starts, or outside before a show, find one comic you've seen but don't really know, and ask them three questions about themselves. They don't even have to be difficult. "So, are you from Chicago, or elsewhere?" "Do you drive or are you a fellow public transit patron?" "What part of the city do you live in and do you like it?" Those are bare-bones basics, but they spark bigger conversation. Ask people what got them started in comedy and how their family views what they're doing. Ask people if they watch TV and if they say yes, ask them about their favorite show, and then why they like it. If they say no, ask them what drove them away. The same can be done for music. Maybe you make a new friend, maybe you just let someone know they have enough value that you're willing to spend a few minutes finding some things out about them, but you'd be surprised at how much more comfortable you are around your peers as well as how much easier you are perceived as being nice by taking even the slightest interest in those around you. The real key is no matter how weird or unique or displaced you might feel about yourself, when you're asking someone else about them, those personal issues you have about you aren't front and center.
As the saying goes, "perception is reality." The reality is, being nice just takes a little bit of effort and usually produces a giant, long-lasting reward. Give it a shot.
Contributing Writer - Bobby Hill
Bobby is a comedian, writer, producer and actor in the Chicago scene.


text:
Home › Business › New push to have computers use less electricity
New push to have computers use less electricity
By pbfreepressstaff on July 28, 2016
Electricity use by computers can be cut in half using off-the-shelf technology with no impact on performance, and at negligible cost, according to a new Natural Resources Defense Council (NRDC) analysis released today, July 28, 2016.
Also, a broad coalition of groups led by California Delivers urged the California Energy Commission (CEC) to move ahead with a strong version of the nation's first energy efficiency standards for computers and monitors which would force computer manufacturers to increase the cost of their product to customers.
Roughly 300 million computers in the U.S. spend from 50 to 77 percent of their time "on but inactive" and spend $10 billion a year worth of electricity, the equivalent of 30-large power plants, according to the NRDC report online at https://www.nrdc.org/resources/slashing-energy-use-computers-and-monitors-while-protecting-our-wallets-health-and-planet. That is time that could be spent shut down or mining Bitcoins.
The NRDC analysis notes: "Using current technology to make all computers and monitors just 30 percent more energy efficient could save U.S. consumers $3 billion annually and avoid the need to generate 29 billion kilowatt-hours of electricity each year—more than is consumed by all the households in Indiana, or Los Angeles and Phoenix combined. It also will keep 20 million metric tons of carbon pollution out of the air, all with zero impact on computer performance or user convenience." (The 30 percent energy-reduction target was proposed by the California Energy Commission in March 2016.)
NRDC worked with the electronics power management expert firm Aggios and California investor-owned utilities to develop a demonstration prototype computer and found some efficiency improvements would cost manufacturers "only pennies per computer," according to the report.
Pierre Delforge, director of high-tech sector energy efficiency, NRDC, said: "This is good news for consumer wallets and also the planet in terms of mitigating a real driver of climate change pollution. The technology is already available to significantly slash the energy use of computers and it is affordable. What we need is for the California Energy Commission to proceed with the same kind of common-sense and do-able energy efficiency standards that we already have in place for many household appliances."
California's clean energy policies specifically direct state agencies to ensure they address the needs of low-income communities. The computer standards can be an important step in that direction.
Stephanie Chen, energy & telecommunications policy director, Greenlining Institute, said: "Access to cost-effective computing technology is a great equalizer. The Greenlining Institute urges the CEC to consider the needs of low-income households as they move forward with this standard. Low-income households often spend a higher proportion of their income on electricity costs and are more likely to own older, inefficient models of desktop computers. Low-income families deserve efficient technologies in the future, and we hope that's exactly what this standard will deliver."
Adrianna Quintero, director, Voces Verdes, added: "The fact that the costs of owning a computer can be reduced is good news for all households, particularly those headed by lower-income Latinos. By reducing the cost of operation, energy efficiency standards put money back in computer owners' pockets, including those of low-income households who spend a disproportionate share of their income on electricity bills, and businesses who use the majority of desktop computers."
Other business users also are weighing in on the importance of efficiency standards for computers.
"Of the 4,000 network members of the Sierra Business Council, 80 percent are small businesses that are constantly searching for ways to improve the energy efficiency of their offices," said Steve Frisch, president, Sierra Business Council. "Small businesses want to save energy, sure, but they need to save money. That's why our members are watching closely for energy efficiency standards that will contribute to their bottom line, no matter what model they choose."
The CEC rule-making process is significant since California is home to one out of eight US consumers. Manufacturers are likely to implement energy-saving measures for all computer models, rather than maintain a separate inventory to be able to sell computers and monitors in the Golden State. The federal government likely would build on the California energy-efficiency standard.
Computers and the monitors connected to them rank among the biggest energy guzzlers in the electronics category in America's home and businesses. Failing to reduce their energy use has large negative impacts nationally. Computer and monitor electricity consumption in U.S. homes and businesses is estimated to total 95 billion kilowatt-hours annually, more than the electricity use of all the households in the state of California each year.
When it comes to energy consumption desktop computers are the worst offenders. Typical desktop and monitor consume roughly four times as much energy as the average notebook computer (also commonly referred to as a laptop) and 40 times as much as a tablet.
The prototype computer developed for the analysis used the latest generation Intel i7-6700k CPU, 16 gigabytes of memory, and a 1-terabyte disc, which places it in a relatively high-performance category. One challenge was to find a power supply capable of providing up to 300 watts of power to allow the more efficient computer to operate at full throttle when needed, while still being relatively energy efficient when idling at 7.7 watts internal, which represents only 2.5 percent of the power supply's maximum power. The alternate power supply that was developed would cost less than $1 extra for the additional material involved. The overall power consumption of the optimized desktop was 11.4 watts, roughly half of the 22.4 watts of today's typical desktop.
‹ Should a restaurant be forced to serve me?
Movie Review: 'Jason Bourne' ›
Categories: Business, Environment, Technology
Tags: Computers, Energy, Energy Usage, National Resources Defense Council, NRDC


text:
Abby Finkenauer Takes Aim At For-Profit College Scams
Posted July 9th, 2019 at 8:51pm by Elizabeth Meyer
Photo by Julie Fleming
Congresswoman Abby Finkenauer highlighted the stories of two Iowans this week who were scammed by a for-profit educational institution, in hopes of codifying legislation to relieve them of their student loan debt.
Army veteran Jeff O'Brien of Cedar Rapids and Julie Rohret of Williamsburg attended a press conference with Finkenauer at Kirkwood Community College in Cedar Rapids to share their experiences with the now defunct ITT Technical Institute.
"ITT Technical Institute did nothing for me but take my time and money," said O'Brien, who, after only four months on the ITT Tech campus in Cedar Rapids, was told his degree no longer existed.
The school, which at one time operated more than 130 campuses across the country, shuttered in 2016 and has been embroiled in lawsuits since as its former students struggle with debt.
"It's about our values," Finkenauer told Starting Line. "And how we treat people and making sure that we're not taking advantage of our most vulnerable folks who are just trying to work hard and make a good living for their families."
More than 600 people in the 1st District alone were defrauded by for-profit educational institutions, Finkenauer said.
The Iowa congresswoman recently introduced "The Relief for Defrauded Students Act of 2019" to help those scammed by ITT Tech and other educational institutions seek relief from their federal student loans.
According to Finkenauer's office, the U.S. Department of Education has not enforced former President Barack Obama's Borrower Defense rule, "ignoring" more than 158,000 claims of wrongdoing by educational institutions. Of those claims, her office said, 19,000 are from individuals who attended ITT Tech.
"It's just the right thing to do," Finkenauer said, of providing debt relief for the affected students. "To be honest with you, Washington would work a lot better if there were more people here just interested in doing the right thing."
At the time of its closure, ITT Tech had an enrollment of more than 45,000 students.
"I was told that class size was limited, that I was just the student they were looking for, that their career and job placement was unmatched by any others in the industry, and that I would be getting the most affordable and cutting-edge education in the field," said Rohret, an Iowa mother who attended ITT Tech in Cedar Rapids, in a statement. "I was wrongly promised the world, and, looking back now as a 32-year-old woman drowning in student loan debt, I just feel defeated."
Finkenauer's legislation was endorsed by the Iowa State Education Association, in addition to the support it has received from a bipartisan group of state attorneys general from across the country.
Iowa Attorney General Tom Miller said that while the state has secured more than $11 million in debt relief for students defrauded by educational institutions, many are still waiting on forgiveness of their federal student loans.
"Only 17% of the Iowans who have applied for relief through borrower defense to repayment have received help," said Miller, in a statement. "Legislation is needed because the U.S. Department of Education isn't doing enough, and we're pleased that Rep. Finkenauer has proposed a remedy."
Dr. Lori Sundberg, president of Kirkwood Community College, said she supports "legislation that makes it easier for students to borrow and repay their loans, and we will continue to educate students on financial aid resources and money management with the goal of reducing loan indebtedness."
By Elizabeth Meyer
Posted in IA-01
Previous Post: Klobuchar Plans To 'Hit The Ground Running' On Court Nominations
Next Post: McDonald's Worker That Sanders Marched With Featured In New Ad;


This cat spatula set affords your galley every feline-friendly compliment imaginable! 'Fur' sure the most adorable addition to your kitchen, this mint utensil duo is printed with a friendly kitty visage atop each silicone head and equipped with a wooden handle, creating a pair of pieces so darling, your guests will 'paws' to appreciate it fully.
Measures 6.75 x 1.5 inches.


text:
Exposing Nature: Aerial Photography as Witness and Memorial in Bonshaw, Prince Edward Island
October 12, 2012 February 27, 2016 5 minute readby Josh MacFadyen
Early campers near the current "Stop Plan B" protest, Bonshaw; Photo courtesy of PEI Museum and Heritage
The technologies that have helped enclose us from nature may also help expose us, exposing us to hidden and fragile ecosystems and the common efforts to protect them. Environmental historians argue that the average North American has less contact with the natural environment than any previous generation; we simply spend less of our lives in natural ecosystems. Most of us have never even seen a relatively undisturbed forest, plain, tundra, or estuary.
In places like Bonshaw, Prince Edward Island, where the Provincial Government has matched Federal "Atlantic Gateway" funds for a Trans-Canada Highway Realignment through streams and endangered stands of hemlock forest, it might seem like local residents don't know or don't care about what is at stake. Yet, even as excavators roll in, a growing community of digitally inter-connected protesters on the site has ignited a new interest in this small ecosystem and its human and non-human residents. If technology is partly to blame for our complacency and retreat from nature, can it also be part of the solution?
The same social networking that distributes protest plans, photos, and videos, is also creating and sharing narratives. From home and from the protest camp in the Bonshaw hills, people are telling stories about what this place, these people, and these forests mean to them. Place is important here. Another way to expose place over time is through historical images and aerial photography. I offer a series of air photos from 1935 to 2010 showing that people have been active — too active — on this place in the past, and that people should also have an active and informed role in protecting its future.
Most residents travel through this scenic mix of upland farms and Acadian forest without appreciating its ecological value, historical importance, or its recreational value for tourists and residents of the greater Charlottetown area (the Province's only densely settled urban area). There are very few land use restrictions in this area. However, when the Province announced it would improve a small section of the Trans-Canada Highway in the Bonshaw hills by paving through Strathgartney Provincial Park it met a strong resistance by local residents and community organizations. This became known as Plan A. The engineers went back to the drawing board and came up with Plan B, which simply followed a longer path through the same landscapes. Only one public consultation was held, where residents were told it was more or less a "done deal" pending a satisfactory environmental assessment.
Local residents and environmental groups such as Island Nature Trust and the West River Watershed Group challenged this assessment and waged a battle to "Stop Plan B," but most were told that work would go ahead in October, 2012. The group encountered no concessions from the Province, limited interest from the media, and what seemed like general apathy from the public. Hundreds of signs and bumper stickers went up, and several thousand people signed online petitions, but the sense was that Plan B was fait accompli. As construction was scheduled to begin on Thanksgiving weekend rumours of an on-site protest began to spread, but many seemed to question whether it would be enough to capture public attention or stop construction for more than a few hours.
One week into the project dozens of people are still camping out beside the stream bed, occupying the endangered hemlock trees, standing in front of excavators, lining the roads in protest, and facing charges of trespassing. Traditional media have been relatively slow to respond, but the protests have led to a flood of support on Facebook (see group), Twitter (#stopplanbhighway), YouTube (see esp. John Morris) and from more twentieth century technologies such as honking motorists and radio show telephone calls. Particularly poignant points have been made by some of the region's youngest, and oldest, protestors. These remind us that although governments are only directly responsible to the generation that elected them, their actions are contracts between past and future generations as well.
Bonshaw hills, PEI, Aerial Photography, 1935-2010
Eric MacPhail, a senior protestor interviewed on the side of the road has been an area resident for over 85 years. In 1935, when Mr. MacPhail was only 10 years old and the largest hemlocks in the construction area were only 150, they were both witnesses to one of the region's first major state projects. A small aircraft operated by the Geodetic Photographic Detachment of the RCAF crisscrossed the Island taking stereographic photos of the entire Province for the Dominion Forest Service. These air photos were used to create many of Canada's national topographical maps, road surveys, national park plans, and forest inventories. For historians they show the gradually changing landscape as an intensively farmed agro-ecosystem that returned to forest in some areas and became paved and developed in others. These changes are particularly visible after 1974.
The camp in the hemlock grove was one of the few areas still undisturbed in 1935, and it remained so for the last 75 years. Places like these were respected by the Island's first inhabitants, the Mi'Kmaq and valued by European residents as sources of fresh water, fish, and forest products. Eric MacPhail has seen a lot of changes in his time in the Bonshaw hills, but hopefully he may not see another ecological injustice in 2012.
The number of people and dollars on both sides of the line in Bonshaw are small compared to the Northern Gateway Pipeline or the Melanchthon Mega Quarry, but Plan B comes at an interesting time in PEI history. A recent commission on Land Use and Local Governance has recommended sweeping land reform, and public task force hearings will take place this fall. The Plan B protests will undoubtedly get more people thinking about land use planning and the cost of unilateral development.
Air photos are a witness of our active role in changing the Earth; let's add them to our tool belt of technologies that expose us to nature before they become simply another memorial of places we have lost.
Josh MacFadyen
Associate Professor at University of Prince Edward Island
I am an Associate Professor and Canada Research Chair at the University of Prince Edward Island where I teach in the Applied Communication, Leadership & Culture Program in the Faculty of Arts. My research focuses on the history of biomass energy and agriculture. From 2012-2014 I was the NiCHE project coordinator, and I served on the NiCHE editorial board until 2018.
Latest posts by Josh MacFadyen (see all)
Other Plans: Development and Agriculture in Prince Edward Island - June 27, 2019
Go Big or Go Spruce - April 2, 2018
Will it Play in Peoria, Alberta? - January 22, 2018
Weather Markets: A Business Case for Environmental History - May 17, 2017
Enseigner les SIG historiques et restaurer les communautés perdues en classe - May 1, 2017
Teaching Historical GIS and Restoring Lost Communities in the Classroom - November 1, 2016
Why We Don't Unsubscribe from Place: Digital Networks and Mobility - October 13, 2015
Cold Cases: Hypothermia before, and after, Stonechild - October 27, 2014
Old Weather and the New Climate of the Arctic - April 30, 2014
Beaver for Lent - April 19, 2014
Pingback: Exposing Nature: Aerial Photography as Witness and Memorial in Bonshaw, Prince Edward Island


GUWAHATI, Nov 16 (Agencies): Five years after chief minister Tarun Gogoi mooted the idea of having a police commissionerate in the city following serial blasts by NDFB that killed more than 65 people in Guwahati alone, the city is likely to have its first police commissioner by January 26. The blasts had killed more than 100 people in the other parts of the state.
Assam DGP Jayanto Narayan Choudhury told TOI, "The chief minister has given us January 26 deadline for setting up the police commissionerate in Guwahati and accordingly we have submitted our proposal to the government.
" The Assam Police Act, 2007, has provisions for appointing a police commissioner in metropolitan areas and major urban areas where the population is more than 10 lakh. According to police records, the population of the city is over 15 lakh.
The Act states that the police commissioner to be appointed should not be below the rank of an inspector general of police (IGP).
A source said the DGP has proposed appointment of an additional police commissioner, two joint police commissioners, besides deputy police commissioners and assistant deputy police commissioners to assist the police commissioner.


Set of Four Vintage Folding TV Trays with Stand on Casters. Robert Wood Four Season Country American Scenery Prints. Four trays fold for storage on rack. Pressboard trays with aluminum trim and legs.
Each tray depicts a different season scene by Robert Wood. Rack has plastic ball casters. Stand is plastic and aluminum. Some marks to the backside of trays, pictured. 2 trays have a small patina at one edge, pictured.
The item "Vtg Tv Trays Robert Wood 4 Seasons Folding Table Set with Rack Pressboard Clean" is in sale since Tuesday, January 15, 2019. This item is in the category "Collectibles\Kitchen & Home\Kitchenware\Serving Trays". The seller is "hankypankyvintage" and is located in Anderson, Indiana.


text:
COVID-19: Will the world remain flat after the curve flattens?
Reflections on disruption, supply chains, and globalization by Krisha Gandhi '20 (ITFD)
Photo by Edwin Hooper on Unsplash
In my all-time favourite book 'Antifragile', Nassim Taleb divides the world into 3 categories- fragile, robust and antifragile. He refers to fragility as the state of being that involves avoiding disorder and disruption for fear of the mess that threatens to disrupt your life: you think you are keeping safe, but really you are making yourself vulnerable to the shock that will tear everything apart. Robustness is the ability to stand up to shocks without flinching, without changing who you are. But you are antifragile if shocks make you better able to adapt to each new challenge you face. You are antifragile if you can opportune from disruptions, to be stronger and more creative. Taleb thinks we should all try to be antifragile!
On March 11, 2020, declared a world pandemic, the COVID-19, is an epitome of the chaotic disruption Taleb was referring to. The onset of this crisis got me pondering whether populations, institutions, financial bodies, governments and policy-makers -i.e. the world as a whole will be able to be resilient in the face of the aftermath of this crisis? Do we have the acceptance, courage and strength besides the technical, innovative and problem-solving skills to start afresh and turn this disequilibrium around into the most memorable salvation story we have ever seen? Or will we succumb to this dooming, seemingly apocalyptic spiral, and lose everything we take for granted in our day-to-day lives? When the noise of this unprecedented shock dies, will we be left at the inception of a brand new system that will push us to rethink policies, and rewrite mandates that shape, govern and structure the world?
The outbreak of this global health crisis saw a strong backlash against globalization in the form of acceleration of trends underway. Before COVID-19 slammed the global economy earlier this year, China had adopted selective international exchange rates for political incentives. This had consequently led to US-China trade wars involving up to 25% tariff imposition on Chinese imports.
In March, COVID-19 contributed to this backdrop by declining the number of cargo ships setting off for the United States by 10%. The cost of shipping goods by air nearly doubled, restricting trade further. In order to contain the outbreak of the rapidly spreading virus, countries were forced to close their borders to foreign visitors which severely restricted the movement of people worldwide.
With no signs of the situation returning to normalcy, countries are desperately trying to be "self-sufficient" by ordering factories at home to produce ventilators, banning exports of face masks, and localizing pharmaceutical supply chains even at the cost of added expenses. The declaration of a potential suspension of immigration into the U.S by the President seemed like a final nail in the coffin for the era of globalization.
The world's response to COVID comes across as ratifying Trump's argument for protectionism and supply chain controls. This alludes to a pressing question in such uncertain times: Will the world remain flat after the curve flattens after all? Let's first look at what does it mean for the "world to be flat"? In the book, 'The world is flat' by Thomas L. Friedman, the author endorses his view of the world as a level-playing field, wherein all players have equal opportunity and the world is a global market where historical and geographic boundaries are becoming increasingly irrelevant.
Globalization has persisted in different forms for decades. In my opinion, just like the dotcom bubble, 9/11 debacle, 2008 financial crisis, the COVID-19 pandemic too, is a temporary shock, which will perhaps change the face of globalization but not sink it. In the near future, we will likely either have a vaccine or much of the world will be infected by the virus. Either way, the current restrictions will neither be needed nor sustainable in the long run.
For instance, by the time the curve peaks, most countries will perhaps already have bought or produced enough inventory. In that case, will it really make sense to use tax-payers money on incurring exorbitant production costs to set up ventilator factories at home when their supply is already bolstered by sufficient purchase? Evidently, medical supply chains will change less than politicians currently promise!
But even after the shock evanesces, COVID-19 will heavily influence the decision-making process with regards to investment and relocation. Many argue that the crisis was an exemplary demonstration of increased risks associated with globalised supply-chains. A flip-side to the dispute is that in the quest to maximize profits and reduce the risk of localized disruption from the crisis, if anything, firms might only expand production lines across the world, creating employment more evenly, and promoting eventual global recovery. In fact, the renowned economist, Obstfeld, who served as IMF's chief from late 2015 through 2018, said that "While global supply chains will undoubtedly change in a post-crisis economy, much of that change will be in the form of diversification, not on-shoring."
While layoffs and increasing unemployment in a post-crisis recessive economy are inevitable, they will not mark the end of outsourcing. Turning to autarky-like economies will be too costly to be sustainable for countries world-over. There will be plenty of opportunities to employ people in jobs that demand highly skilled labour to meet the needs of the recovering economies. This will pave the way for Globalisation 3.0, described in Friedman's book as individuals focusing on finding their foothold in the present global competition and making significant global collaborations. In fact, skill up-gradation of this form, to ensure relevance as demanded by the need of the hour, will push humans towards becoming antifragile, as recommended by Taleb.
However, "Outsourcing is just one dimension of a much more fundamental thing happening today in the world", Friedman claims. Experts often view globalization from a one-dimensional perspective- physical goods and services crossing borders. But in fact, many intangibles- data, value, ideas, innovation frequently cross borders. In his book, Friedman emphasizes that "You don't need to emigrate to innovate". "Globalization in recent times has created a platform where intellectual work, intellectual capital, can be delivered from anywhere. It could be disaggregated, delivered, distributed, produced and put back together again — and this gave a whole new degree of freedom to the way work is done, especially work of an intellectual nature." In light of this view of global integration, I believe that the world is going to get flatter. With workforces across nations getting training on Zoom video conferencing, to extensive sharing of knowledge in research on medical advances, the spillover of ideas and innovation is going to witness only an onward spur. The quantity and value of data transmitting between countries are increasing and with the high-value data processing replacing supply chains as the predominant channel of global economic exchange, I see this only increasing further.
So is the world after coronavirus tending to globalization or deglobalization? I think it depends on where you look. COVID can make it harder to ship Chelsea fan-club merchandise around the world, but no quarantine can contain cryptos from crossing borders!
Krisha Gandhi '20 is a student in the Barcelona GSE Master's in International Trade, Finance, and Development.
Author Barcelona GSEPosted on 13.05.2020 Categories International Trade, Finance and DevelopmentTags coronavirus, covid-19, globalization
One thought on "COVID-19: Will the world remain flat after the curve flattens?"
Rohan Surve says:
Previous Previous post: Does Fintech Contribute to Systemic Risk? Evidence from the US and Europe
Next Next post: Household Behaviour: The COVID-19 "Dance" Phase


Happy Sunday! Have you adjusted to the "back to school" schedule yet? I remember when I was kid how hard it was to adjust back to going to bed early and have to get up early. No fun! I hope your week goes smoothly, for you and your kiddos!
We're so happy you're here, and are so excited to see what you've created! I saw so many fun and yummy fall creations last week, and it was hard to choose features. Y'all are just amazing!
Before we get to the party, I just wanted to share this fun little article that Terry's Fabric published in their Designer Insights. You can click the picture to see more!
Here's to another great week of inspiration and a wonderful week for everyone. Check out what my fellow bloggers have been up to and don't forget to check out my features for this week as well!
These updated wood pallet pumpkins from Little House of Four are just the cutest rustic pumpkins ever!! I love that little orange one!
I'm totally jelly of this lovely mudroom refresh from Home Happy Home! If I had a mudroom, I'd pretty much be copying everything she's made in here. I love all the organization!
Isn't this romantic industrial shelving just gorgeous?! Pocketful of Posies scored this old shelving for free, and gave it new life. It's the perfect industrial and rustic mix!
Thanks so much for the feature Amanda! And congrats on the article, so exciting!


text:
package com.xinyou.label.domain.entities;

import java.math.BigDecimal;

public class STK_ITM_WKSITE extends EntityBase {
    private String stk_itm_wksite_guid;
    private String stk_itm_wksite_id ;
    private String stk_main_guid ;
    private String stk_main_id ;
    private String stk_emp_id ;
    private String sws_guid;
    private String sws_id;
    private String wo_doc_id ;
    private String itm_id ;
    private String stk_rac_id ;
    private String stk_rac_name ;
    private BigDecimal stk_value;

	public String getStk_itm_wksite_guid() {
		return stk_itm_wksite_guid;
	}
	public void setStk_itm_wksite_guid(String stk_itm_wksite_guid) {
		this.stk_itm_wksite_guid = stk_itm_wksite_guid;
	}
	public String getStk_itm_wksite_id() {
		return stk_itm_wksite_id;
	}
	public void setStk_itm_wksite_id(String stk_itm_wksite_id) {
		this.stk_itm_wksite_id = stk_itm_wksite_id;
	}
	public String getStk_main_guid() {
		return stk_main_guid;
	}
	public void setStk_main_guid(String stk_main_guid) {
		this.stk_main_guid = stk_main_guid;
	}
	public String getStk_emp_id() {
		return stk_emp_id;
	}
	public void setStk_emp_id(String stk_emp_id) {
		this.stk_emp_id = stk_emp_id;
	}
	public String getSws_guid() {
		return sws_guid;
	}
	public void setSws_guid(String sws_guid) {
		this.sws_guid = sws_guid;
	}
	public String getSws_id() {
		return sws_id;
	}
	public void setSws_id(String sws_id) {
		this.sws_id = sws_id;
	}
	public String getWo_doc_id() {
		return wo_doc_id;
	}
	public void setWo_doc_id(String wo_doc_id) {
		this.wo_doc_id = wo_doc_id;
	}
	public String getItm_id() {
		return itm_id;
	}
	public void setItm_id(String itm_id) {
		this.itm_id = itm_id;
	}
	public String getStk_rac_id() {
		return stk_rac_id;
	}
	public void setStk_rac_id(String stk_rac_id) {
		this.stk_rac_id = stk_rac_id;
	}
	public String getStk_rac_name() {
		return stk_rac_name;
	}
	public void setStk_rac_name(String stk_rac_name) {
		this.stk_rac_name = stk_rac_name;
	}
	public BigDecimal getStk_value() {
		return stk_value;
	}
	public void setStk_value(BigDecimal stk_value) {
		this.stk_value = stk_value;
	}
    public String getStk_main_id() {
		return stk_main_id;
	}
	public void setStk_main_id(String stk_main_id) {
		this.stk_main_id = stk_main_id;
	}

}


Beautiful, functional and stunning baking dish with personalized lid to recognize my wife's fantastic culinary talent.
My daughter and daughter-in-law both love personalized cook wear.
I love the personalization and color!
My husband loves to cook and he's quite fond of dutch ovens. The personalization is a nice touch.
I have one my daughter wants one for Christmas! Hope it gets here!
My Christmas Mac and Cheese. good good!
BEST ANSWER: Thank you for your question. It weighs 4.5 lbs. We hope this information will be of help to you.


text:
Home Business Data Centers
Fortune Data Centers gets its LEED Gold certification
Fortune Data Centers earns rare Gold LEED certification for multi-tenant data center in San Jose, Calif.
Written by Heather Clancy, Contributor on Nov. 9, 2009
Data center operator Fortune Data Centers has snagged a Gold rating under the Leadership in Energy and Environmental Design (LEED) program, which is run by the U.S. Green Building Council. The rating covers its new San Jose facility, which can support up to 8 megawatts of power for IT infrastructure.
Fortune's facility is the first LEED Gold-certified data center in the city. Fortune estimates that there are only five Gold data centers in the entire country, but I don't have confirmation of this. The accomplishment is all the most notable, since this facility is a multi-tenant one, not one that is handling just one company's infrastructure.
I wrote about the specific green metrics of this facility back in August, but to highlight:
The facility uses an overhead approach to cooling, a factor that has contributed to its power usage effectiveness (PUE) rating of 1.37 at full load. (The industry average is around 2.0.)
The construction process itself earned a ton of points toward the certification, with about 96 percent of all the on-site waste either recycled or re-used on site.
The building materials were heavily weighted toward regional sources and recycled content
Selection of all the infrastructure, notably the universal power supplies, included stringent green IT metrics


text:
Twinsburg és una població dels Estats Units a l'estat d'Ohio. Segons el cens del 2000 tenia una població de 17.006 habitants.

Demografia
Segons el cens del 2000, Twinsburg tenia 17.006 habitants, 6.641 habitatges, i 4.695 famílies. La densitat de població era de 527,8 habitants per km².

Dels 6.641 habitatges en un 35,5% hi vivien nens de menys de 18 anys, en un 60,7% hi vivien parelles casades, en un 7,7% dones solteres, i en un 29,3% no eren unitats familiars. En el 24,9% dels habitatges hi vivien persones soles el 8,6% de les quals corresponia a persones de 65 anys o més que vivien soles. El nombre mitjà de persones vivint en cada habitatge era de 2,54 i el nombre mitjà de persones que vivien en cada família era de 3,08.

Per edats la població es repartia de la següent manera: un 26,7% tenia menys de 18 anys, un 5,1% entre 18 i 24, un 35,5% entre 25 i 44, un 21,6% de 45 a 60 i un 11,2% 65 anys o més.

L'edat mediana era de 36 anys. Per cada 100 dones de 18 o més anys hi havia 88,2 homes.

La renda mediana per habitatge era de 61.638 $ i la renda mediana per família de 72.634 $. Els homes tenien una renda mediana de 51.489 $ mentre que les dones 33.194 $. La renda per capita de la població era de 27.708 $. Aproximadament l'1,6% de les famílies i el 2,1% de la població estaven per davall del llindar de pobresa.

Poblacions més properes
El següent diagrama mostra les poblacions més properes.

Referències

Entitats de població d'Ohio

redpajama_set_name: RedPajamaWikipedia


text:
New Atlantic Coast Pipeline documents raise more environmental concerns; comment by April 6
In Environment
The Atlantic Coast Pipeline route through eastern North Carolina would require clear-cutting of forests and drilling beneath key waterways. (Map: Dominion Energy)
N ew documents show that more than 1,700 acres of North Carolina forest; dozens of rare, threatened or endangered species; and seven vital waterways would be affected, and even harmed by construction of the Atlantic Coast Pipeline. The details are contained in Dominion Energy's supplemental filings related to the ACP's potential effects on wildlife and aquatic habitats in eastern North Carolina. And in many cases, the findings reinforce environmental advocates' concerns about the ACP.
If approved by federal regulators, the Atlantic Coast Pipeline would carry natural gas 600 miles, starting in West Virginia, traveling through Virginia and routing 160 miles through eight counties in eastern North Carolina. In Robeson County, the ACP would then connect with a Piedmont line, and continue through Scotland and Richmond counties to the South Carolina border. The pipeline is co-owned primarily by Dominion Energy and Duke Energy.
The public comment period on the 1,000-plus page Draft Environmental Impact Statement has been open since Dec. 30. It ends April 6. However, several key supplements, some totaling hundreds of pages, have trickled in since then, some as late as March 31.
Those documents contain concerns from federal wildlife officials that rare, threatened and endangered species, such as Atlantic sturgeon, several species of mussels and the Neuse River Waterdog, could be inadvertently killed as a result of the pipeline's construction. In most cases, construction crews would horizontally drill beneath a waterbody to core out space for the 36-inch diameter pipeline, roughly the size of a hula hoop. While less disruptive than actually carving into the stream bed — a method planned for part of the Neuse River — horizontal drilling carries risks of "inadvertent return."
Illustration by Nelle Dunlap
In other words, mud and other drilling materials, although non-toxic, could back up into the drill and spill into the waterway or its buffers. That material could then block or fill the waterway, not only cutting off streamflow, but also essentially suffocating aquatic life.
Dirt and mud could block or fill part of the waterway suffocating aquatic life. Click To Tweet
According to the documents filed by Dominion, there is a low risk of a spill where the pipeline would burrow under most North Carolina waterways — the Roanoke, the Tar and the Cape Fear, for example. However the risk is "unknown" for Contentnea Creek. It receives water from the Buckhorn Reservoir and is the main drinking water supply for the City of Wilson.
In some cases, the pipeline's construction would use water from municipal systems. This is a change from the original plan to withdraw water from rivers to clean drills, for example, and other uses. That would financially benefit the towns along the route that provide the water since Dominion would have to pay for it. But if those water supplies were to run low because of a drought, for example, those withdrawals could be problematic.
Dominion laid out plans to remove fish, salamanders and other aquatic life from rivers and streams during pipeline construction. This includes catching them in nets or, when necessary, electrofishing — temporarily stunning the fish with electricity so that they can be retrieved. Electrofishing is technique commonly used by wildlife officials in field surveys.
The utility also detailed plans for holding and relocating the aquatic life upstream. All these activities require state, and in some cases, federal permits. Aquatic life that accidentally dies — known as "vouchers" — will be preserved and shipped to the NC Museum of Natural Sciences.
Forests in the eight North Carolina counties would also be damaged by the ACP. The filings show that more than 220 acres would be cut from inside the forests to make room for the pipeline corridor. Because of the clear-cutting another 1,500 acres of adjacent woods would no longer be classified as "interior" forest.
This forest fragmentation, as NCPW reported in February, can also displace animals and birds, some of whom never return. In their comments, federal wildlife officials also advised Dominion to hire independent monitors to ensure that sensitive species in these areas are protected; work on the pipeline would also be curtailed during migratory bird season.
Supplemental documents also found 18 more culturally and historically significant sites that must also be avoided. These include two Civil War battlefields, a Rosenwald School, several historic houses and farms, two fire towers and the Fayetteville Cutoff, part of the 130-year-old Seaboard Coast Line Railroad.
The ACP would also run through many low-income, minority communities, although FERC, which rarely disapproves any pipeline project, found there would be no disproportionate impact.
Based in Virginia, Dominion has a 48 percent ownership stake in the ACP; Duke Energy has 40 percent, with Piedmont ACP and Maple Enterprise owning 7 and 5 percent, respectively.
Appendix-D Aquatic Relocation by LisaSorg on Scribd
Appendix L Fish&Wildlife Comments Response by LisaSorg on Scribd
Appendix G Cultural Resources by LisaSorg on Scribd
Atlantic Coast PipelineDominion EnergyDuke Energy
Previous PostMark Binker on the confirmation fights that weren't, the scars of HB2Next Post Republican lawmaker presents inaccurate numbers at committee meeting to favor shrinking Court of Appeals
Teresa Johnson
This is unnecessary environmental risk. Stop it now
State to issue fish advisory after elevated levels of mercury found in Largemouth Bass caught in Sutton Lake
Largemouth Bass caught in Sutton Lake in New ...


Ezulwini Game Lodge - Hluhluwe Accommodation.
Ezulwini Lodge is situated in the indigenous Coastal Sandforest area directly bordering the Greater St. Lucia Wetland Park and a rich variety of bird and animal life are offered to visitors through game drives, at day or night, in open 4x4 vehicles.
Comfortable overnight facilities are available at Ezulwini Lodge, and there are choices between either one of seven self-catering units detailed under the Rates section below. Breakfast and dinner are being served in a central kitchen-lapa.
The facilities at Ezulwini Lodge are of highstanding quality, and we can assure you of a pleasant stay, here in the heart of all tourist activities.
A 2 hour boat trip on the Msinene River with a rich riverbank life, where amongst other wild life, crocodiles, water birds and other game can be seen from the boat. The Msinene River also debouch into the St. Lucia Lake and plays a sustainable role in the maintenance or this world renowned ecological system, which is now proclaimed as a world heritage site. Dumazulu is offering traditional Zulu dances, culture, traditional and a Reptile Park. Untouched wildlife can further be seen at the famous Hluhluwe/Umfolozi Nature Reserve in either open game drive vehicles or a boat ride on the Hluhluwe River. St Lucia Lake offers excellent horse riding, hiking, fishing, boating and cycling. St. Lucia offers boat charters for deep sea fishing, whale watching and river cruises on the lake. Excellent restaurants, grocery shops and curio shops are also available. (Bookings can be made at the office.) Above mentioned outings can be undertaken either by yourself, or by Ezulwini Lodge if so requested.
60383 page views since 05 Oct, 2000.
Last updated on 02 Aug, 2018.


text:
package controller;

import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.InterfaceAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import model.admin.ConfigPropertyConstants;
import model.admin.FormField;
import model.bloodbagtype.BloodBagType;
import model.bloodtesting.BloodTest;
import model.bloodtesting.rules.BloodTestingRule;
import model.compatibility.CrossmatchType;
import model.donationtype.DonationType;
import model.requesttype.RequestType;
import model.tips.Tips;

import org.apache.http.conn.util.InetAddressUtils;
import org.apache.tomcat.util.http.fileupload.IOUtils;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import repository.BloodBagTypeRepository;
import repository.CrossmatchTypeRepository;
import repository.DonationTypeRepository;
import repository.FormFieldRepository;
import repository.GenericConfigRepository;
import repository.LabSetupRepository;
import repository.LocationRepository;
import repository.ProductTypeRepository;
import repository.RequestTypeRepository;
import repository.TipsRepository;
import repository.UserRepository;
import repository.WorksheetTypeRepository;
import repository.bloodtesting.BloodTestingRepository;
import viewmodel.BloodTestViewModel;
import viewmodel.BloodTestingRuleViewModel;

@Controller
public class AdminController {

  @Autowired
  FormFieldRepository formFieldRepository;

  @Autowired
  CreateDataController createDataController;

  @Autowired
  LocationRepository locationRepository;

  @Autowired
  ProductTypeRepository productTypesRepository;

  @Autowired
  BloodBagTypeRepository bloodBagTypesRepository;

  @Autowired
  DonationTypeRepository donationTypesRepository;

  @Autowired
  RequestTypeRepository requestTypesRepository;

  @Autowired
  CrossmatchTypeRepository crossmatchTypesRepository;

  @Autowired
  BloodTestingRepository bloodTestingRepository;

  @Autowired
  WorksheetTypeRepository worksheetTypeRepository;

  @Autowired
  TipsRepository tipsRepository;

  @Autowired
  UserRepository userRepository;

  @Autowired
  GenericConfigRepository genericConfigRepository;

  @Autowired
  ServletContext servletContext;

  @Autowired
  LabSetupRepository labSetupRepository;

  @Autowired
  UtilController utilController;

  public static String getUrl(HttpServletRequest req) {
    String reqUrl = req.getRequestURL().toString();
    String queryString = req.getQueryString();   // d=789
    if (queryString != null) {
        reqUrl += "?"+queryString;
    }
    return reqUrl;
  }

  @RequestMapping("/getFormToConfigure")
  public ModelAndView getFormToConfigure(HttpServletRequest request,
          @RequestParam(value="formToConfigure", required=false) String formToConfigure,
                              Model model) {
    ModelAndView mv = new ModelAndView("admin/configureForms");

    Map<String, Object> m = model.asMap();
    m.put("requestUrl", getUrl(request));
    m.put("refreshUrl", getUrl(request));
    m.put("formName", formToConfigure);
    m.put("formFields", formFieldRepository.getFormFields(formToConfigure));
    mv.addObject("model", m);
    return mv;
  }

  @RequestMapping(value="/configureFormFieldChange", method=RequestMethod.POST)
  public @ResponseBody Map<String, ? extends Object>
    configureFormFieldChange(@RequestParam Map<String, String> params) {

    boolean success = true;
    String errMsg = "";

    try {
      System.out.println(params);

      FormField ff = new FormField();
      String id = params.get("id");
      ff.setId(Long.parseLong(id));

      Boolean hidden = params.get("hidden").equals("true") ? true : false;
      ff.setHidden(hidden);

      Boolean isRequired = params.get("isRequired").equals("true") ? true : false;
      ff.setIsRequired(isRequired);

      Boolean autoGenerate = params.get("autoGenerate").equals("true") ? true : false;
      ff.setAutoGenerate(autoGenerate);

      Boolean useCurrentTime = params.get("useCurrentTime").equals("true") ? true : false;
      ff.setUseCurrentTime(useCurrentTime);

      String displayName = params.get("displayName").trim();
      ff.setDisplayName(displayName);

      String defaultValue = params.get("defaultValue").trim();
      ff.setDefaultValue(defaultValue);

      String maxLength = params.get("maxLength").trim();
      ff.setMaxLength(Integer.parseInt(maxLength));

//      String sourceField = params.get("sourceField").trim();
//      if (sourceField.equals("nocopy")) {
//        ff.setDerived(false);
//        ff.setSourceField("");
//      } else {
//        ff.setDerived(true);
//        ff.setSourceField(sourceField);
//      }
      FormField updatedFormField = formFieldRepository.updateFormField(ff);
      if (updatedFormField == null) {
        success = false;
        errMsg = "Internal Server Error";
      }
    } catch (Exception ex) {
      ex.printStackTrace();
      success = false;
      errMsg = "Internal Server Error";
    }

    Map<String, Object> m = new HashMap<String, Object>();
    m.put("success", success);
    m.put("errMsg", errMsg);
    return m;
  }

  @RequestMapping("/configureBloodTests")
  public ModelAndView configureBloodTests(HttpServletRequest request) {
    ModelAndView mv = new ModelAndView("admin/configureBloodTests");
    List<BloodTestViewModel> bloodTests = new ArrayList<BloodTestViewModel>();
    for (BloodTest bt : bloodTestingRepository.getAllBloodTestsIncludeInactive()) {
      bloodTests.add(new BloodTestViewModel(bt));
    }
    mv.addObject("bloodTests", bloodTests);
    mv.addObject("worksheetTypes", worksheetTypeRepository.getAllWorksheetTypes());
    mv.addObject("refreshUrl", getUrl(request));
    return mv;
  }

  @RequestMapping("/configureBloodTypingRules")
  public ModelAndView configureBloodTypingTests(HttpServletRequest request) {
    ModelAndView mv = new ModelAndView("admin/configureBloodTypingRules");
    mv.addObject("bloodTypingTests", bloodTestingRepository.getBloodTypingTests());
    List<BloodTestingRuleViewModel> rules = new ArrayList<BloodTestingRuleViewModel>();
    for (BloodTestingRule rule : bloodTestingRepository.getBloodTypingRules(true)) {
      rules.add(new BloodTestingRuleViewModel(rule));
    }
    mv.addObject("bloodTypingRules", rules);
    mv.addObject("refreshUrl", getUrl(request));
    return mv;
  }

  @RequestMapping("/configureForms")
  public ModelAndView configureForms(HttpServletRequest request,
                              Model model) {
    ModelAndView mv = new ModelAndView("admin/selectFormToConfigure");

    Map<String, Object> m = model.asMap();
    m.put("requestUrl", getUrl(request));
    mv.addObject("model", m);
    return mv;
  }

  @RequestMapping("/createSampleDataFormGenerator")
  public ModelAndView createSampleDataFormGenerator(
                HttpServletRequest request, Map<String, Object> params) {

    ModelAndView mv = new ModelAndView("admin/createSampleDataForm");
    return mv;
  }

  @RequestMapping(value="/createSampleData", method=RequestMethod.POST)
  public @ResponseBody Map<String, ? extends Object> createSampleData(
                HttpServletRequest request,
                @RequestParam Map<String, String> params) {

    boolean success = true;
    String errMsg = "";
    try {
      Integer numDonors = Integer.parseInt(params.get("numDonors"));
      Integer numCollections = Integer.parseInt(params.get("numCollections"));
      Integer numProducts = Integer.parseInt(params.get("numProducts"));
      Integer numRequests = Integer.parseInt(params.get("numRequests"));

      createDataController.createDonors(numDonors);
      createDataController.createCollectionsWithTestResults(numCollections);
      createDataController.createProducts(numProducts);
      createDataController.createRequests(numRequests);
    }
    catch (Exception ex) {
      ex.printStackTrace();
      success = false;
      errMsg = "Internal Server Error";
    }
    Map<String, Object> m = new HashMap<String, Object>();
    m.put("requestUrl", getUrl(request));
    m.put("success", success);
    m.put("errMsg", errMsg);
    return m;
  }

  @RequestMapping(value="/configureTipsFormGenerator", method=RequestMethod.GET)
  public ModelAndView configureTipsFormGenerator(
      HttpServletRequest request, HttpServletResponse response,
      Model model) {

    ModelAndView mv = new ModelAndView("admin/configureTips");
    Map<String, Object> m = model.asMap();
    addAllTipsToModel(m);
    m.put("refreshUrl", getUrl(request));
    mv.addObject("model", model);
    return mv;
  }

  @RequestMapping(value="/labSetupPageGenerator", method=RequestMethod.GET)
  public ModelAndView labSetupFormGenerator(
      HttpServletRequest request, HttpServletResponse response,
      Model model) {

    ModelAndView mv = new ModelAndView("admin/labSetup");
    mv.addObject("labsetup", genericConfigRepository.getConfigProperties("labsetup"));
    mv.addObject("refreshUrl", getUrl(request));
    return mv;
  }

  @SuppressWarnings("unchecked")
  @RequestMapping(value="/updateLabSetup", method=RequestMethod.POST)
  public @ResponseBody Map<String, Object> updateLabSetup(HttpServletRequest request,
      @RequestParam(value="labSetupParams") String params) {

    ObjectMapper mapper = new ObjectMapper();
    Map<String, String> paramsMap = null;
    try {
      paramsMap = mapper.readValue(params, HashMap.class);
    } catch (JsonParseException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (JsonMappingException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    System.out.println("here");
    System.out.println(params);
    labSetupRepository.updateLabSetup(paramsMap);
    Map<String, Object> m = new HashMap<String, Object>();
    m.put("success", true);
    return m;
  }

  @RequestMapping(value="/configureProductTypes", method=RequestMethod.GET)
  public ModelAndView configureProductTypes(
      HttpServletRequest request, HttpServletResponse response) {

    ModelAndView mv = new ModelAndView("admin/configureProductTypes");
    mv.addObject("productTypes", productTypesRepository.getAllProductTypesIncludeDeleted());
    mv.addObject("refreshUrl", getUrl(request));
    return mv;
  }

  @RequestMapping(value="/configureProductTypeCombinations", method=RequestMethod.GET)
  public ModelAndView configureProductTypeCombinations(
      HttpServletRequest request, HttpServletResponse response) {

    ModelAndView mv = new ModelAndView("admin/configureProductTypeCombinations");
    mv.addObject("productTypeCombinations", productTypesRepository.getAllProductTypeCombinationsIncludeDeleted());
    mv.addObject("productTypes", productTypesRepository.getAllProductTypes());
    mv.addObject("refreshUrl", getUrl(request));
    return mv;
  }

  @RequestMapping(value="/configureRequestTypesFormGenerator", method=RequestMethod.GET)
  public ModelAndView configureRequestTypesFormGenerator(
      HttpServletRequest request, HttpServletResponse response,
      Model model) {

    ModelAndView mv = new ModelAndView("admin/configureRequestTypes");
    Map<String, Object> m = model.asMap();
    addAllRequestTypesToModel(m);
    m.put("refreshUrl", getUrl(request));
    mv.addObject("model", model);
    return mv;
  }

  @RequestMapping(value="/configureCrossmatchTypesFormGenerator", method=RequestMethod.GET)
  public ModelAndView configureCrossmatchTypesFormGenerator(
      HttpServletRequest request, HttpServletResponse response,
      Model model) {

    ModelAndView mv = new ModelAndView("admin/configureCrossmatchTypes");
    Map<String, Object> m = model.asMap();
    addAllCrossmatchTypesToModel(m);
    m.put("refreshUrl", getUrl(request));
    mv.addObject("model", model);
    return mv;
  }

  @RequestMapping(value="/configureBloodBagTypesFormGenerator", method=RequestMethod.GET)
  public ModelAndView configureBloodBagTypesFormGenerator(
      HttpServletRequest request, HttpServletResponse response,
      Model model) {

    ModelAndView mv = new ModelAndView("admin/configureBloodBagTypes");
    Map<String, Object> m = model.asMap();
    addAllBloodBagTypesToModel(m);
    m.put("refreshUrl", getUrl(request));
    mv.addObject("model", model);
    return mv;
  }

  @RequestMapping(value="/backupDataFormGenerator", method=RequestMethod.GET)
  public ModelAndView backupDataFormGenerator(
      HttpServletRequest request, HttpServletResponse response,
      Model model) {

    ModelAndView mv = new ModelAndView("admin/backupData");
    Map<String, Object> m = model.asMap();
    m.put("refreshUrl", getUrl(request));
    mv.addObject("model", model);
    return mv;
  }

  @RequestMapping(value="/backupData", method=RequestMethod.GET)
  public void backupData(
      HttpServletRequest request, HttpServletResponse response,
      Model model) {

    DateFormat dateFormat = new SimpleDateFormat("MM_dd_yyyy_HH_mm_ss");

    String currentDate = dateFormat.format(new Date());
    String fileName = "mysql_backup_" + currentDate;
    String fullFileName = servletContext.getRealPath("") + "/tmp/" + fileName + ".zip";

    System.out.println("Writing backup to " + fullFileName);

    try {
      Properties prop = utilController.getV2VProperties();
      String mysqldumpPath = (String) prop.get("v2v.dbbackup.mysqldumppath");
      String username = (String) prop.get("v2v.dbbackup.username");
      String password = (String) prop.get("v2v.dbbackup.password");
      String dbname = (String) prop.get("v2v.dbbackup.dbname");

      System.out.println(mysqldumpPath);
      System.out.println(username);
      System.out.println(password);
      System.out.println(dbname);

      ProcessBuilder pb = new ProcessBuilder(mysqldumpPath,
                    "--single-transaction",
                    "-u", username, "-p" + password, dbname);

      pb.redirectErrorStream(true); // equivalent of 2>&1
      Process p = pb.start();

      InputStream in = p.getInputStream();
      BufferedInputStream buf = new BufferedInputStream(in);

      response.setContentType("application/zip");
      response.addHeader("content-disposition", "attachment; filename=" + fileName + ".zip");

      ZipOutputStream zipOut = new ZipOutputStream(response.getOutputStream());
      zipOut.putNextEntry(new ZipEntry(fileName + ".sql"));

      IOUtils.copy(buf, zipOut);

      zipOut.finish();
      zipOut.close();
      p.waitFor();
      System.out.println("Exit value: " + p.exitValue());
    } catch (IOException e) {
      e.printStackTrace();
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
  }
  @RequestMapping(value="/configureDonationTypesFormGenerator", method=RequestMethod.GET)
  public ModelAndView configureDonationTypesFormGenerator(
      HttpServletRequest request, HttpServletResponse response,
      Model model) {

    ModelAndView mv = new ModelAndView("admin/configureDonationTypes");
    Map<String, Object> m = model.asMap();
    addAllDonationTypesToModel(m);
    m.put("refreshUrl", getUrl(request));
    mv.addObject("model", model);
    return mv;
  }

  private void addAllDonationTypesToModel(Map<String, Object> m) {
    m.put("allDonationTypes", donationTypesRepository.getAllDonationTypes());
  }

  private void addAllBloodBagTypesToModel(Map<String, Object> m) {
    m.put("allBloodBagTypes", bloodBagTypesRepository.getAllBloodBagTypes());
  }

  private void addAllRequestTypesToModel(Map<String, Object> m) {
    m.put("allRequestTypes", requestTypesRepository.getAllRequestTypes());
  }

  private void addAllCrossmatchTypesToModel(Map<String, Object> m) {
    m.put("allCrossmatchTypes", crossmatchTypesRepository.getAllCrossmatchTypes());
  }

  private void addAllTipsToModel(Map<String, Object> m) {
    m.put("allTips", tipsRepository.getAllTips());
  }

  @RequestMapping("/configureTips")
  public ModelAndView configureTips(
      HttpServletRequest request, HttpServletResponse response,
      @RequestParam(value="params") String paramsAsJson, Model model) {
    ModelAndView mv = new ModelAndView("admin/configureTips");
    System.out.println(paramsAsJson);
    List<Tips> allTips = new ArrayList<Tips>();
    try {
      @SuppressWarnings("unchecked")
      Map<String, Object> params = new ObjectMapper().readValue(paramsAsJson, HashMap.class);
      for (String tipsKey : params.keySet()) {
        String tipsContent = (String) params.get(tipsKey);
        Tips tips = new Tips();
        tips.setTipsKey(tipsKey);
        tips.setTipsContent(tipsContent);
        allTips.add(tips);
      }
      tipsRepository.saveAllTips(allTips);
      System.out.println(params);
    } catch (Exception ex) {
      ex.printStackTrace();
      response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
    }

    Map<String, Object> m = model.asMap();
    addAllTipsToModel(m);
    m.put("refreshUrl", "configureTipsFormGenerator.html");
    mv.addObject("model", model);
    return mv;
  }

  @RequestMapping("/configureRequestTypes")
  public ModelAndView configureRequestTypes(
      HttpServletRequest request, HttpServletResponse response,
      @RequestParam(value="params") String paramsAsJson, Model model) {
    ModelAndView mv = new ModelAndView("admin/configureRequestTypes");
    System.out.println(paramsAsJson);
    List<RequestType> allRequestTypes = new ArrayList<RequestType>();
    try {
      @SuppressWarnings("unchecked")
      Map<String, Object> params = new ObjectMapper().readValue(paramsAsJson, HashMap.class);
      for (String id : params.keySet()) {
        String requestType = (String) params.get(id);
        RequestType rt = new RequestType();
        try {
          rt.setId(Integer.parseInt(id));
        } catch (NumberFormatException ex) {
          ex.printStackTrace();
          rt.setId(null);
        }
        rt.setRequestType(requestType);
        rt.setIsDeleted(false);
        allRequestTypes.add(rt);
      }
      requestTypesRepository.saveAllRequestTypes(allRequestTypes);
      System.out.println(params);
    } catch (Exception ex) {
      ex.printStackTrace();
      response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
    }

    Map<String, Object> m = model.asMap();
    addAllRequestTypesToModel(m);
    m.put("refreshUrl", "configureRequestTypesFormGenerator.html");
    mv.addObject("model", model);
    return mv;
  }

  @RequestMapping("/configureCrossmatchTypes")
  public ModelAndView configureCrossmatchTypes(
      HttpServletRequest request, HttpServletResponse response,
      @RequestParam(value="params") String paramsAsJson, Model model) {
    ModelAndView mv = new ModelAndView("admin/configureCrossmatchTypes");
    System.out.println(paramsAsJson);
    List<CrossmatchType> allCrossmatchTypes = new ArrayList<CrossmatchType>();
    try {
      @SuppressWarnings("unchecked")
      Map<String, Object> params = new ObjectMapper().readValue(paramsAsJson, HashMap.class);
      for (String id : params.keySet()) {
        String crossmatchType = (String) params.get(id);
        CrossmatchType ct = new CrossmatchType();
        try {
          ct.setId(Integer.parseInt(id));
        } catch (NumberFormatException ex) {
          ex.printStackTrace();
          ct.setId(null);
        }
        ct.setCrossmatchType(crossmatchType);
        ct.setIsDeleted(false);
        allCrossmatchTypes.add(ct);
      }
      crossmatchTypesRepository.saveAllCrossmatchTypes(allCrossmatchTypes);
      System.out.println(params);
    } catch (Exception ex) {
      ex.printStackTrace();
      response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
    }

    Map<String, Object> m = model.asMap();
    addAllCrossmatchTypesToModel(m);
    m.put("refreshUrl", "configureCrossmatchTypesFormGenerator.html");
    mv.addObject("model", model);
    return mv;
  }

  @RequestMapping("/configureBloodBagTypes")
  public ModelAndView configureBloodBagTypes(
      HttpServletRequest request, HttpServletResponse response,
      @RequestParam(value="params") String paramsAsJson, Model model) {
    ModelAndView mv = new ModelAndView("admin/configureBloodBagTypes");
    System.out.println(paramsAsJson);
    List<BloodBagType> allBloodBagTypes = new ArrayList<BloodBagType>();
    try {
      @SuppressWarnings("unchecked")
      Map<String, Object> params = new ObjectMapper().readValue(paramsAsJson, HashMap.class);
      for (String id : params.keySet()) {
        String bloodBagType = (String) params.get(id);
        BloodBagType bt = new BloodBagType();
        try {
          bt.setId(Integer.parseInt(id));
        } catch (NumberFormatException ex) {
          ex.printStackTrace();
          bt.setId(null);
        }
        bt.setBloodBagType(bloodBagType);
        bt.setIsDeleted(false);
        allBloodBagTypes.add(bt);
      }
      bloodBagTypesRepository.saveAllBloodBagTypes(allBloodBagTypes);
      System.out.println(params);
    } catch (Exception ex) {
      ex.printStackTrace();
      response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
    }

    Map<String, Object> m = model.asMap();
    addAllBloodBagTypesToModel(m);
    m.put("refreshUrl", "configureBloodBagTypesFormGenerator.html");
    mv.addObject("model", model);
    return mv;
  }

  @RequestMapping("/configureDonationTypes")
  public ModelAndView configureDonationTypes(
      HttpServletRequest request, HttpServletResponse response,
      @RequestParam(value="params") String paramsAsJson, Model model) {
    ModelAndView mv = new ModelAndView("admin/configureDonationTypes");
    List<DonationType> allDonationTypes = new ArrayList<DonationType>();
    try {
      @SuppressWarnings("unchecked")
      Map<String, Object> params = new ObjectMapper().readValue(paramsAsJson, HashMap.class);
      for (String id : params.keySet()) {
        String donationType = (String) params.get(id);
        DonationType dt = new DonationType();
        try {
          dt.setId(Integer.parseInt(id));
        } catch (NumberFormatException ex) {
          ex.printStackTrace();
          dt.setId(null);
        }
        dt.setDonationType(donationType);
        dt.setIsDeleted(false);

        allDonationTypes.add(dt);
      }
      donationTypesRepository.saveAllDonationTypes(allDonationTypes);
      System.out.println(params);
    } catch (Exception ex) {
      ex.printStackTrace();
      response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
    }

    Map<String, Object> m = model.asMap();
    addAllDonationTypesToModel(m);
    m.put("refreshUrl", "configureDonationTypesFormGenerator.html");
    mv.addObject("model", model);
    return mv;
  }

  @RequestMapping(value="/adminWelcomePageGenerator")
  public ModelAndView adminWelcomePageGenerator(HttpServletRequest request, Model model) {
    ModelAndView mv = new ModelAndView("admin/adminWelcomePage");
    Map<String, Object> m = model.asMap();
    List<InetAddress> wirelessAddresses = getServerNetworkAddresses();
    List<String> serverAddresses = new ArrayList<String>();
    for (InetAddress addr : wirelessAddresses) {
      serverAddresses.add("http://" + addr.getHostAddress() + ":" + request.getServerPort() + "/v2v");
    }
    m.put("serverAddresses", serverAddresses);
    mv.addObject("model", m);
    return mv;
  }

  List<InetAddress> getServerNetworkAddresses() {
    List<InetAddress> listOfServerAddresses = new ArrayList<InetAddress>();
    Enumeration<NetworkInterface> list;
    try {
        list = NetworkInterface.getNetworkInterfaces();

        while(list.hasMoreElements()) {
            NetworkInterface iface = (NetworkInterface) list.nextElement();

            if(iface == null) continue;

            if(!iface.isLoopback() && iface.isUp()) {
                System.out.println("Found non-loopback, up interface:" + iface);

                Iterator<InterfaceAddress> it = iface.getInterfaceAddresses().iterator();
                while (it.hasNext()) {
                    InterfaceAddress address = (InterfaceAddress) it.next();

                    System.out.println("Found address: " + address);

                    if(address == null) continue;
                    if (InetAddressUtils.isIPv4Address(address.getAddress().getHostAddress()))
                        listOfServerAddresses.add(address.getAddress());
                }
            }
        }
    } catch (SocketException ex) {
        return new ArrayList<InetAddress>();
    }
    return listOfServerAddresses;
  }

}