If you are looking for the latest stylish trends on fashion out there then your in the right place. We have searched the web to bring together the best deals on fashion, dresses, skirts, tops and more at discounted prices. We only show deals that are on offer and have been heavily discounted so this we you know you will be making a saving every time.


MINNEAPOLIS– The Minnesota baseball team released its 2010 schedule on according to an announcement by Golden Gopher head coach John Anderson.
NCAA Super Regionals in 2009 and four out of conference opponents that were part of NCAA Regional play in 2009.
The Golden Gophers will start things off when they bring back the Pro-Alumni Game for the first time since 2007. It will take place on Saturday, Feb. 6 at 6:05 p.m.
Minnesota will open up the season against Akron (19-33, 12-15 in 2009) in Fort Myers, Fla. on Feb. 19-21. The next week, the Golden Gophers will travel to St. Petersburg, Fla. where they will compete in the Big East-Big Ten Challenge. Minnesota will face St. John's (30-22, 16-11) in Dunedin on Friday, Feb. 26, Connecticut (36-24, 14-13) in St. Petersburg on Saturday, Feb. 27 and 2009 Super Regional participant Louisville in St. Petersburg on Sunday, Feb. 28.
The Golden Gophers will return home to host the Dairy Queen Classic on Mar. 5-7. Minnesota will welcome Loyola Marymount (30-29, 13-8), Northwestern (14-35, 5-17) and 2009 NCAA Regional participant Oklahoma State (34-24, 9-16) to the 26th annual installment of the Dairy Queen Classic. Minnesota will face Loyola Marymount on Friday, Mar. 5 at 6:35 p.m., Oklahoma State on Saturday, Mar. 6 at 6:35 p.m. and Northwestern on Sunday, Mar. 7 at 3:05 p.m.
Following the Dairy Queen Classic, the Golden Gophers will host Division III National Champion St. Thomas (41-13) at the Metrodome on Wednesday, Mar. 10. Minnesota will host the Metrodome Tournament on Mar. 12-14. The Golden Gophers will welcome Creighton (31-25, 14-9), Harvard (13-28, 10-10) and South Dakota State (26-30, 17-10) to the Metrodome that weekend. Minnesota will host Harvard on Friday, Mar. 12, Creighton on Saturday, Mar. 13 and South Dakota State on Sunday, Mar. 14.
After the Metrodome Classic, Minnesota will embark on six-game road trip to Alabama and Samford. The Golden Gophers will face 2009 NCAA Regional participant Alabama (37-21, 18-11) in a two-game series on Mar. 16-17. Minnesota will then head to Samford (17-35, 9-21) for a four-game series on Mar. 18-21.
Minnesota will host North Dakota State (16-28, 10-14) at the Metrodome on Mar. 23-24. The Golden Gophers will host a three-game series against Louisiana Tech (29-22, 13-11) on Mar. 26-28. The Saturday game will be played at Target Field at 1:05 p.m., while the Friday and Sunday games will be at the Metrodome.
The Golden Gophers will open up Big Ten play on the road at Purdue on Apr. 2-4. Minnesota will return home to the Metrodome for the first Big Ten series against Michigan State on Apr. 16-18.
Minnesota's other road series in the Big Ten will be against Northwestern (Apr. 16-18), Iowa (Apr. 30-May 2) and 2009 Big Ten Regular-Season Champion Ohio State (May 20-22). The Golden Gophers will have home conference series at the Metrodome against 2009 Big Ten Tournament Champion Indiana (Apr. 23-25), Michigan (May 7-9) and Penn State (May 14-16).
The Golden Gophers will also play midweek games during the conference season against Concordia-Moorhead (Mar. 31), Hamline (Apr. 6), South Dakota State (at home Apr. 14, on the road Apr. 20), North Dakota State (on the road Apr. 28) and at Kansas State (May 4-5).
Minnesota returns 20 players who saw action from a 2009 squad that finished 40-19, finished second in the Big Ten regular-season at 17-6, advanced to the Big Ten Tournament Championship and advanced to the final game of the NCAA Regionals in LSU.


Set of bangle bracelets costume jewelry. 1 red, 1 rainbow, 1 gold, 1 antique silver, 1 with jewels.
Set of bangle bracelets costume jewelry. 1 red with small jewels, 1 rainbow, 1 gold, 1 antique silver, 1 with colored beads.
Beaded Bracelet - 2 pieces. Black and white beads.


text:
Dig Diary – Wednesday, August 1, 2012
Wednesday, August, 1, 2012
The north-east corner buttress of Structure Fourteen is revealed.
We have had an interesting day on the Ness, if blowy, wet and intermittently miserable.
Hugo, in Structure Fourteen and ancillary areas, was happy.
But Hugo is always happy when he can use a mattock (definition: large, heavy sharp instrument with long handle).
In case anyone gets the wrong idea, a mattock can be used with great delicacy and the absolute minimum of swinging. It is, of course, useful for removing large areas of material quickly, and in the extension to Structure Fourteen midden has, indeed, come off with remarkable speed on the north-west side of the trench.
On the north-east side, further work has been done on the recently revealed walling and paving. However, the new pier, which was revealed at the end of last week, has now been shown to be a corner buttress, as is found in nearby Structure One. Most intriguingly, Structure Fourteen can now be seen as having a mixture of elements from Structures Eight, Twelve and One.
Covers stay in place in Structure One to protect vulnerable floor deposits.
The bad weather has meant that much of the precious floor areas of Structure One have remained covered by plastic.
In the east entrance, excavation has continued on the square, stone setting found there.
It is not a hearth (like the one in the entrance to Structure Eight at the nearby Barnhouse Settlement), as had been expected, but is instead a simple stone box filled with a very homogenous material, which is more like earth than midden.
Suggestions that it is a foot bath at the door for grubby Neolithic feet are generally derided!
The stratigraphy of midden dumps in the central midden area, up against walls, has led to suggestions that Structure Twelve may be later than Structure Eight, despite the earlier feeling that they were contemporary.
Mai half sections the stone setting in the side entrance to Structure One.
Certainly, the north wall of Structure Twelve, which adjoins the central midden (via the "porch") has certainly been remodeled on several occasions.
This issue will become clearer soon, but in the meantime Structure Twelve has come up with another mystery.
As we mentioned yesterday, the baulk of midden, which was left, partly to define the robber trench, is being removed.
It has now been revealed to contain what appears to be a stone cist within the midden infill, and certainly late in the sequence for the structure. More of this to come in following days.
The external sondage to the west end of Structure Ten is being extended by Andy to try to find out the relationship between the deposition of the midden and the end of life of the structure.
The two halves of the polished stone chisel with one half still wet from a gentle clean.
The interior of Structure Ten, however, remains horrendously difficult to understand.
The removal of some elements, as mentioned yesterday, has allowed a sight of the very thick sealing of clay, which may seal the primary floor of the structure, perhaps (and hopefully) as a leveling layer.
However, there remains the possibility that the primary floor may no longer exist and that what we are seeing is an early glimpse of material covering the earlier structure which lies under Structure Ten.
This is improbable, but it is all very difficult to disentangle. However, further excavation should begin to make sense of it soon.
Tomorrow, more rain is forecast. We shall see, and no doubt suffer.
Two exquisite finds have come light today, just to the west of Structure One – two halves of a polished stone "chisel" that match exactly, and also a miniature flint axe. Although several other polished stone axes have been recovered, this is the first flint one.
Although not polished, but merely flaked, this is a beautiful object yet only circa three centimetres.
Also the incised stone slab that turned up in the east wall of Structure One last week has revealed the beauty of its very slight incised decoration.
Close-up photography, by finds assistant Scott Forsyth in the early morning light, suddenly highlighted parallel bands of different designs – chevrons, cross-hatching, and crosses.
Photos like this really do dispel the idea that these are not careful designs and just random incisions.
Close-up of some of the incised decoration – each band is circa 1cm wide.
A plethora of section lines in the new extension clarify the infill and later robbing events relating to Structure Fourteen.
Hello! I'm Siân Killick and I'm one of the new recruits who started on site this week, so I'm already on day three of my two-week stint here on the Ness.
Although archaeology has been the focus of my studies for the past seven years, this is only my second real experience of "life at the trowel's edge" and it's very different from digging in rural Hampshire!
This trip is also my first lone excursion and I've had to brave two planes and a taxi ride to get here from Kent – all I can say is that the journey is definitely being proved worthwhile!
I've mainly been working in Structure Fourteen, alongside Ken (who's come all the way back from America to dig for a second time), where we have been trowelling through the stratigraphic layers to reveal the walls and areas of fill within the structure. Just this afternoon, I have begun to define an internal corner of the section I'm working on – having spent all morning lifting a particularly delicate collection of pottery.
After yesterday's glorious sunshine, the weather today has taken a swift turn for the worst and we've all been battered by the wind and rain!
Despite the weather, spirits are still high in the trenches as we all plough on. Unfortunately, the usually constant stream of visitors has slowed slightly in the rain but the odd one or two who've decided to brave the weather have been impressed by the site and what it has to offer. The on-site dig shop is particularly good and I must admit I've already bought a stash of fridge magnets and postcards to take home with me!
Other than hoping the weather improves slightly, I'm having a great time so far and I look forward to finding out what the rest of my time here on the Ness of Brodgar has to offer!
Next story The view from above . . .
Previous story Dig Diary – Tuesday, July 31, 2012
Dig Diary — Tuesday, August 13, 2013
Tuesday, August, 13, 2013
Dig Diary – Monday, August 21, 2017
Monday, August, 21, 2017
Dig Diary Extra — Zoom in and get up close to Trench P (and not forgetting Trench X)
Thursday, August, 4, 2016

redpajama_set_name: RedPajamaCommonCrawl


text:
Q: SQL: Sort for start date if there is no end date I created a little SQL-fiddle: http://sqlfiddle.com/#!9/1cbee/1
I would like to sort these values:
INSERT INTO ForgeRock
    (`id`, `title`, `startdate`, `enddate`)
VALUES
    (1, 'Test 1', '2015-12-01 13:30:00', '0000-00-00 00:00:00'),
    (2, 'Test 2', '2015-12-01 14:30:00', '0000-00-00 00:00:00'),
    (3, 'Test 3', '2016-01-01 10:30:00', '2016-01-01 14:30:00'),
    (4, 'Test 4', '2016-01-01 09:30:00', '2016-01-01 15:30:00');

With SQL. The problem is: I would like to sort it according to the start date - if there is an end date, I would like to sort by end date.
The result should be:
    (2, 'Test 2', '2015-12-01 14:30:00', '0000-00-00 00:00:00'),
    (1, 'Test 1', '2015-12-01 13:30:00', '0000-00-00 00:00:00'),
    (4, 'Test 4', '2016-01-01 09:30:00', '2016-01-01 15:30:00');
    (3, 'Test 3', '2016-01-01 10:30:00', '2016-01-01 14:30:00'),

So the first items should be shown with descending order. All items with an end date should be displayed after (!) the items with no end date.
Any ideas how to solve that?

A: Try this:
SELECT
  title,
  startdate,
  enddate
FROM
  ForgeRock
ORDER BY
   CASE WHEN enddate = '0000-00-00 00:00:00' THEN 0 ELSE 1 END,
   enddate DESC,
   startdate DESC

This will display all items without an end date first, followed by all items with an end date.

A: you can use the below query given you don't have invalid date
SELECT
  title,
  startdate,
  enddate
FROM
  ForgeRock
order by startdate,enddate

A: 0000-00-00 is an invalid date.
You may need to change it as null.
Query
SELECT
  title,
  startdate,
  enddate
FROM
  ForgeRock
ORDER BY
   CASE WHEN enddate = '0000-00-00 00:00:00' /* or enddate IS NULL */
   THEN startdate END DESC,
   enddate DESC;

A: If the datatype of StartDate and End Date is varchar then you can use the below query -
   select * from ForgeRock
   order by
     Case when enddate = '0000-00-00 00:00:00'
              Then '9999-12-31 00:00:00'
          Else enddate END desc,
     startdate desc

redpajama_set_name: RedPajamaStackExchange


If you are a fan of the Cubist painter Pablo Picasso, you should definitely visit this museum full of his drawings and paintings.
The museum is housed in five palaces dating back to the 13th and 14th centuries. Opened in 1963, it was the first museum dedicated to Picasso's work. The permanent collection comprises more than 3,500 artworks. Most of them were donated by Jaime Sabartés - former secretary and a friend of Picasso.
Please note that when the admission to the museum is free, there are long lines. Use the free cloakroom service for bags measuring over 30×30 cm and don't take photographs inside.
Admission is free every Thursday from 6 pm and the first Sunday of every month.


Para la masa, cocinar el cous cous, hirviendo 2 tazas de agua. Remover la olla de agua del fuego y agregar el cous cous. Dejar que se expanda y absorba el agua por 2-3 minutos y luego revolver con un tenedor para separar los granos.
Una vez este listo, agregarle el resto de los ingredientes y mezclar bien.
Para el relleno, procesar todos los ingredientes hasta obtener una mezcla de espinacas. Probarla y condimentar a gusto.
Tomar una tartera o fuente para horno y ponerle papel manteca. Verter la masa de cous cous (deja un poquito para ponerle arriba) sobre la fuente y esparcir con los dedos hasta cubrirla, incluyendo los bordes.
Agregarle el relleno de espinaca, ponerle las almendras arriba y luego cubrir con el resto de la masa de cous cous.
Hornear por 25 minutos. Es importante que pongas la tarta en la rejilla mas baja del horno para que se cocine bien por abajo y quede bien crocante!
Pre-heat the oven to 180C/350F.For the crust, start by cooking the cous cous. Boil 2 cups of water and add the cous cous. Leave it for 2-3 minutes, until it expands and absorbs the water and then !u" with a fork to separate the grains.
Once ready, add the remaining crust ingredients and mix well.
For the filling, process all ingredients. Taste it and season to taste.
Take a pie plate or baking dish and put wax paper on it. Pour the cous cous crust (leave some for the top) and spread with your fingers to cover the bottom and edges.
Add the spinach filling, put the almonds on top and then cover with the rest of the cous cous.
Bake for 25 minutes. It is important to put the quiche on the lowest rack of the oven so the bottom goldens!


It's amazing how my mood changed this week, the sun is out, I am having my breakfasts and lunches in the garden, we've been spending time at the lake, and it finally feels truly feels like summer .
I was so inspired by all this sunshine that I designed lots of new bright and sunny earrings for my shop you can find them in my new "What's New" section.
This is my new favorite necklace, I've been wearing for a week and it goes with everything in my wardrobe!! It's also available with a lovely giant crystal bead and I have a special promotion 10% discount if you get two necklace this weekend!
I spent this morning walking around and enjoying the sun in our local flea market and suddenly spotted this lovely $20 find ! it's a handmade quilt, big enough to fit our queen size bed and made with the prettiest fabrics ever!!! here are a few photos of my new find and if any of you can help me out with some info on this kind of quilt or how old you think it might be I will be more then happy!!! (just heard from my aunt Susan, my quilt is from the late 40's early 50's).
It's the 2nd year anniversary of our kitchen renovation and for those who are are thinking of renewing your kitchen I thought I would just let you know that we still adore it, it still looks and works like new although with 3 kids and constant cooking it get a huge amount of traffic and use.
I also took some photos of the garden this morning, evrything is blooming or about to bloom and the veggie garden is really amazing, we are so very pleased with it!
I did manage to clean out and re-do every closet in the house including the linen closet, kitchen drawers, laundry room, fridge etc...it took 5 seconds for the kids closets to go back to their previous chaotic condition...but I don't care! they are home!!! yeayy!!
I also managed to get some work in the last two days, and after making lots of those new lavender sachets I made a few new jewelry pieces..
I am very excited to add a new item to my shop!! I am trying to create a well rounded place were one can shop for accessories and home products too, these new 5" square pillow sachets are made with premium super lovely French lavender buds and smell heavenly! I am selling them in bundles of three and I used a mix of 100% floral cotton fabrics.
You can also throw them in the dryer for a lovely delicate scent, one sachets will scent about 8-10 loads! I recently learned that lavender sachets are also a great natural moth repellent!
They make a great hostess gift too!!
Happy birthday to moi...I can't believe another year went by so fast! last year we celebrated my birthday here, and since the boys are all still away I will be celebrating when they get back on Wed., boy do I miss them!!!


Have you ever heard about WordPress Maintenance Service?
Well, it allows you to get a fresh and SEO friendly website. Fundamentally, wordpress maintenance service goes through various functions ranging from WordPress Updates to Theme and Plugin Updates, WordPress Backups to WordPress Security and Analytics Tracking & Reporting to WordPress Hosting Packages.
Using wordpress website maintenance service, you can also excel in some other areas of your corporate website such as search engine optimization (SEO), publishing SEO friendly content, uploading fresh content, client's testimonials, comment approval and replies, spam cleaning, news updates, blog postings, guest blogging, blog commenting and much more.
The WordPress Maintenance Service is pivotal for your businesses in Saudi Arabia, because it helps you to prevent your website from security issues and vulnerabilities. Secondly, it decreases your website pages loading time. Next, wordpress maintenance services are claimed to give an excellent user experience in Saudi Arabia. Another important benefit of using this type of service is that it enhances your search engine rankings, visibility, credibility and versatility instantly. We help our esteemed clients to prevent from their website issues and vulnerabilities by providing them professional, reliable, affordable and durable WordPress Website Maintenance Services in Saudi Arabia. Thus, our professional WordPress maintenance service gives businesses a great opportunity to establish their long-lasting customer relationships and constant revenue generation.


Polio is a world-wide contagious viral disease. Polio's most severe form causes the worst nerve injury leading to body part paralysis, breathing problems and even death. Today, despite the global effort to completely wipe out the Polio, poliovirus remains to affect children and adults in parts of Africa and Asia. Miles Pharmacy advises you to take some necessary precautions to defend yourself from polio if you're planning to travel any area where the risk of polio disease. Adults who have been vaccinated in their childhood who plan to travel to an area where polio is transpiring should get a booster dose of inactivated poliovirus vaccine (IPV). Immunity after a booster lasts for a lifetime.
Although polio infection can cause paralysis and death, the majority of the population who are affected by polio don't show signs and get sick. They aren't aware they've been infected with the Polio.
Few people who develop the Polio symptoms contract a type of polio which doesn't lead to paralysis. This usually causes the same mild, flu-like symptoms typical of other viral diseases.
Your child hasn't finished the vaccine series.
Your child exposes an allergic reaction to the polio vaccine.
Your child has difficulties other than a soreness or mild redness at the vaccine injection place.
You had polio many years back and are now having unexplained fatigue and weakness.
Miles Pharmacy is a full-service pharmacy serving the UK. We're local, independent, and owner-managed. With free delivery, personalised service, custom medication compounding and free flavourings, we're here to help you lead a safer, healthier, and fuller life. When you visit our website, you'll find interesting and hand-selected medicine brands, from a fully stocked vitamin department to the best travel medicines & vaccinations. Many customers prefer our services for their reliability and affordable rates.
This entry was posted	in Polio Vaccination On Jun 22, 2018 .


More than half of the genetic variations associated with neuroticism are expressed in the brain, the researchers said.
Your depression might be the result of your genes associated with anxiety, worry and low mood, researchers say, that the findings may shed light on the causes of depression, and could help improve diagnosis and treatment.
The study, DNA analysis of over 300,000 people, revealed 116 gene variations linked to neuroticism -- characterised by feelings of anxiety, worry and guilt.
The same genes associated with neuroticism had some overlap with genes linked to a susceptibility to depression and some other psychiatric conditions.
"For millennia it has been recognised that people have a greater or lesser tendency to feel low, worry, and experience other negative emotions. We knew that a part of the explanation is genetic differences between people, but it's been a mystery which genes are involved," said Michelle Luciano, from the University of Edinburgh.
"These new results make a substantial contribution to solving that mystery by pointing to many specific places in the genome that are linked with neuroticism," Luciano added.
For the study, published in the journal Nature Genetics, the team analysed genetic information from a group of people aged from 39 to 73, whose levels of neuroticism had been measured by a personality questionnaire.
The results promise paths to understand the mechanisms whereby some people become depressed, and of broader human differences in happiness. They are a resource for those seeking treatments for depression, the researchers said.


Full serve, high quality, low cost… Arnold's advises, space-plans, project manages, delivers, and installs new and used office furniture in and around New York City, NY to medium and large businesses while saving you the most money!! Whether you're looking for open plan office furniture or used office cubicles near New York City, Arnold's has you covered in the big apple!
From blank floor plan to fully furnished office space, Arnold's has completed nearly 1,000 successful office furniture projects nationwide. We don't sell a single chair or a one off desk. We provide dozens to hundreds of used office cubicles, open plan workstations, or other types of new or used office furniture for projects in and around New York City, NY and across the nation.
From moving your office to financing, these local companies have you covered in the big apple!
Shleppers offers office moving and storage services as part of its dedicated division of professional commercial moving services. Our expert relocation consultants plan and coordinate every detail of your move with minimal interference to your day-to-day operations. We move businesses of varying size and scope.
Manhattan Chamber of Commerce (MCC) is a vibrant business membership organization comprised of a cross section of 15,000 business members and subscribers ranging from sole proprietors to large corporations and multi-national firms.
We'll pay for your plane ticket from New York City to visit our showroom near Philadelphia!
Delivery and Installation to New York City charges are based on distance from our warehouses as well as the complexity of the installation. A simple installation might be as low as $150 per desk whereas a more complex installation might cost about $400 per cubicle. In every case, we will work hard to combine items and we always secure multiple bids for shipping to your area to make sure you get the best price. For an exact quote, please fill out the request a quote form with as much detail as possible and we will contact you promptly.


text:
ed lee is officially running for mayor of san francisco
Oh, it is on, San Francisco. Fear the 'stache. Looks like it took some convincing, but after many emphatic promises to the contrary, Ed Lee has announced that he is running for a full four-year term as San Francisco mayor: SF Mayor Ed Lee changes mind, will seek full term.
Lee was insistent that he would not seek a full term when he was appointed interim mayor seven months ago, saying he wanted his old job back. This didn't stop his supporters, who launched grassroots campaigns urging him to run.
But somewhere along the way, I guess he changed his mind. This morning, Lee formally listed himself as a candidate at the city's Department of Elections:
Lee said he'll make his case immediately, participating in a candidates' forum tonight at the Castro Theatre.
His common refrain in his early months as mayor was clear: "I am not a politician." But tonight he'll share the stage with nine other serious contenders who have been in the race for months, including three who backed him in a crucial early vote by the board of supervisors to put him in office.
The idea at the time was to place the city in capable hands without conferring the benefits of incumbency to someone looking to win the office outright. After all, many on the board wanted to run for mayor themselves.
Now Lee supervises dozens of staff who work on city policy, commands the media attention that accompanies the mayor's office and has the advantage of showing voters what he would do in the job.
Ed Lee now joins (and arguably upsets the balance of) an extremely crowded field of mayoral candidates, which includes Supervisor David Chiu, Assessor-Recorder Phil Ting and State Senator Leland Yee.
And of course, as you can imagine, there are more than a few folks who are upset that Mayor Lee went back on his promise not to run. Yup, the race is on, San Francisco. More here: Ed Lee's new tone of civility hits sour note.


Scala designs, builds and project manages high end new custom home and remodel projects in Los Angeles and the surrounding region.
Scala designs, builds and manages high end residential remodel and new home construction projects in Calgary and Los Angeles. Scala has been featured on HGTV and is experienced in working with celebrity and high profile clients.


Picking up the pieces of a late loved one's life is something no one looks forward to. Many businesses know this and will do what they can to ease you through the process. Then there's Bank of America.
Consumerist reader Matt is still in college but he's already having to deal with the loss of his mother, who passed away on Oct. 1. Since then, he has been going through the process of notifying credit card companies, utilities, and everyone else.
The first call ended after the associate we were speaking to told us that the only person they could talk to was the person who was listed on the mortgage: my mother.
Since she was deceased, that's obviously not possible, so we explained "death" to the person we were speaking to. They said they had to talk to my mother, we decided it was hopeless, and gave up.
We later got on the phone with someone else who said to send them a copy of the death certificate. They lost that one. Then they lost the next one. Then they lost the third, hand-delivered, death certificate. They finally managed to get the death certificate to a filing cabinet on the fourth try. They sent a letter acknowledging they had received the death certificate, but still they asked to speak with the person on the mortgage.
Somewhere around the fourth attempt at sending the death certificate, BofA's internal debt collectors started calling for their missing mortgage payments.
After days of these collection calls, Matt finally got someone on the phone who appeared to be the top of the department.
A BofA attorney eventually contacted Matt to ask if he was feeling "harassed" by the collections department, and if he would like to place a Cease & Desist order on them.
"I happily said, 'DO THAT. PLEASE.' The order was placed 24 hours after that call," says Matt, who hasn't heard from BofA collections since.
But that wasn't the end of the nightmare.
Thirty days after his mother had passed, Matt sent BofA a letter of testamentary to demonstrate that an executor for the estate had been named.
"Again, they lost three of them," he writes. "Again, only one department knew about them. After a conference call last week, we finally managed to get through to some managers. One of the managers gave us his whole name and put us on hold, but we got disconnected. When we got back on the phone with another manager, we told that manager the name we were given, but they 'couldn't find any records' of the person we spoke to.
By Matt's total, that brings the total to 6 lost documents, one Cease & Desist order, a misplaced (or fictionally named) branch manager, and 8 weeks that should have been spent mourning his loss rather than re-sending the same paperwork over and over.
Matt says he's already put in his vote for next spring's Worst Company In America tournament. We doubt he'll be alone.


Nombu Kanji / Gruel is prepared during the Islamic Month of Ramadan. It is a well known Iftar Meal usually taken after breaking fast.
I was introduced to this kanji by my mom's friend who is a Muslim. My mom and me like this kanji a lot. Before marriage, my aunt used to give this kanji. I have not tasted this anywhere else. For past 2 years i had this craving for kanji, and i used to ask my mom to get this kanji from aunt. Finally i thought to prepare this at home and got the recipe from aunt. I made it little thick and had for lunch and dinner. There are two versions to prepare this porridge. I'm sharing vegetarian version using carrots. You can also try this with minced meat.
Wash raw rice and drain the water completely. Spread rice on a paper or kitchen cloth. Let it dry for few mins.
Grind in a mixer for a second. Make sure to not grind it as powder. If you have broken rice, then you can just wash the rice and drain the completely.
Heat oil in a pressure cooker. Tamper cloves and cinnamon. Add chopped onions and fry for a minute.
Add chopped tomatoes and ginger-garlic paste. Saute a while. Add green chilies, chopped carrots, mint leaves and coriander leaves. Saute a while.
Add broken rice, washed moong dal and channa dal. Saute it. Add water and salt to taste.
Close the lid and pressure cook for 1 or 2 whistles. Remove from the heat and once the pressure settles, add coconut milk to it and salt if needed.
Heat it on medium flame. Add more water if needed. Adjust the salt according to your taste. Serve hot.
good try PT 🙂 some how last picture is attracting !
We too have such a porridge for breaking fast but a lot has to do with our local ingredients. This is so tempting and beautifully flavored.
I love this kanji very much. Every year my muslim friend used to bring it for me from mosque. I will not cook dinner that day. We all have this kanji piping hot. It is so filling and delicious.Beautiful pictures!!
Yupp I can smell it.. wondeful was planning to try it..
Healthy and delicious kanji.. Beautiful clicks da..
When do you add carrot?
thanks for pointing out the mistake.. will add it now..


As chairman of the governing board of the California State University system, Herbert L. Carter has positioned himself as a consensus builder at a time when the system has been battered as never before by budget cuts, student protests and discord over salary and hiring policies.
The former president of the United Way and chairman of the Los Angeles Commission on Human Relations has spent decades attempting to forge compromise with differing factions. But now he is struggling to bridge the gap between Republicans and Democrats in the state Legislature to win a second term on the Board of Trustees.
Senate Republicans have signaled that they will block the confirmation, citing Carter's role in controversial decisions last year to increase executive pay while also boosting student tuition.
Democrats see the opposition as partisan posturing having little to do with those actions. Although Democrats control both legislative houses, Republicans have leverage in this fight: nominations to the Cal State board are among the few that require a two-thirds majority, meaning at least two Republican votes are needed.
A decision must be made by Monday, the last Senate floor session before the confirmation deadline on Wednesday.
Last week, Sen. Joel Anderson (R-San Diego) sent a letter to Gov. Jerry Brown asking him to withdraw his appointment of Carter.
"Since 1984, Herbert Carter has been near the center of every CSU pay hike scandal," Anderson wrote. "The CSU trustees don't seem to understand that their 'compromise' of setting a CSU's president's pay at $325,000 is insulting to California students, parents, and taxpayers."
Anderson referred to the board's recent action — proposed by Carter — to cap the pay of new executives at 10% above that of their predecessor, with a limit of $325,000 in public funds.
Brown spokesman Evan Westrup said that Carter "has a long and distinguished record of service and commitment to higher education and he deserves the consideration and support of all senators, regardless of party affiliation."
Speaking to reporters on Friday in Washington, D.C., the governor said Republicans "get a little petty. They don't have much power left, so if they can take a shot they will."
Carter, 78, one of the few board members with an extensive education background, was appointed by former Gov. Arnold Schwarzenegger to the 25-member panel in 2004. Carter declined a request to be interviewed.
He became chairman in 2009, presiding over a system that has suffered devastating budget cuts and imposed steep tuition increases — from $2,334 in 2004 to $5,472 this academic year for undergraduates.
A board meeting in November at which trustees approved another 9% fee hike for fall 2012 was marked by violent disruptions. Trustees were criticized for leaving the session and reconvening in another room with no members of the public present. That followed a public outcry over the $400,000 salary — $100,000 more than his predecessor — awarded last summer to San Diego State President Elliot Hirshman.
Criticism of those actions, though, was led by Democrats including Sen. Leland Yee (D-San Francisco), Sen. Elaine Alquist (D-Santa Clara) and Sen. Ted Lieu (D-Torrance), all of whom crafted legislation to limit pay for campus presidents. Gov. Jerry Brown also wrote a scathing letter to Carter criticizing the moves.
Republicans cited Brown's letter about the pay packages and said the issue had not been adequately resolved.
"If they were consistent they would stand with us," Sen. Tony Strickland (R-Moorpark) said of his Democratic colleagues. "I'm going to oppose any of these trustees that come up for confirmation who voted for pay increases during these tough economic times. I would be shocked if some of these Democrats don't join us in opposing this appointment."
Lieu, however, supports Carter and accused Republicans of politicizing the appointment.
"He is the kind of trustee that you want — someone who will respond to what students, faculty and legislators say to him — and it would be a shame if he is not reconfirmed," Lieu said.
Carter was raised in Arkansas and received a bachelor's degree at the University of Arkansas, Pine Bluff, and a doctorate in public administration at USC. He was executive director of the Los Angeles Commission on Human Relations in the late 1960s, and president and chief executive of the United Way of Greater Los Angeles in the 1990s. He served in several academic posts in the Cal State system, including affirmative action officer, executive vice chancellor for administration and acting president of Cal State Dominguez Hills.
Those who have known or worked with Carter describe him as fair-minded and decent, an unlikely figure to have become a political foil in the rough and tumble jousting of state politics. While he presides over the sometimes contentious bi-monthly meeting of trustees in Long Beach, much of the ire over fee hikes and salary disputes has been aimed at Cal State Chancellor Charles B. Reed.
San Francisco State President Robert Corrigan said Carter has been an effective advocate for students and the university.
"The heart of the matter is that he has only the best interests of the university in mind," said Corrigan, who is retiring at the end of the school year after 24 years as president. "He speaks eloquently about the needs of students, he is open and fair in meetings and I think we will be weakened if we do in fact lose him as a member of board …It's not good for the campuses, not good for students and frankly, unfair to Herb."
As a trustee, Carter has sought student input and often seeks the middle ground on difficult issues, said Gregory Washington, a Cal State Fullerton student and president of the Cal State Student Assn.
"He has always seen students as an ally that can work with CSU and not as opponents," Washington said. "He was also a leader of civil rights in higher education and he offers the voice of compromise a lot of the time."


text:
Resending an email to a new contact
Status: Voting Open Submitted by Nick03 on 05-31-2016 01:01 PM
I don't like how many steps you have to go through to simply add a new contact to send them an email that had been previously sent. It's cumbersome and takes up too much time.
PMover
It would be nice to have the ability to re-send a campaign to a different list. Currently the campaign can only be resent to new contacts added to the original lists that the campaign was first sent to, or we can paste in a small list of recipients, neither of these work in this scenario. Our contacts are on several different lists. Our campaigns are always sent to more than one list. If we inadvertently forget to select a specific list on the original send, it would be nice to be able to re-send to the missed list. If we simply copy and send a new campaign to the missed list, some contacts could end up receiving the campaign twice. If we can send to the missed list using the original campaign, the system should know that a contact has already received the campaign and not send to that email again.
Hannah_M
Status changed to: Voting Open
DaveR7
just select the client by checking the box to the right of the client in the contacts page and go to more actions at the top toolbar and select quick send. This works great if the campaign you want to send is in the mors recet 10 sent. If any further back you have to do the multi step process which, I agree is cumbersome.
KristineN31
To resend I have to copy the original email, then reschedule, then pick the new list I want to send to. why can't I just hit resend and have the option to select a new list there instead of going around in circles to accomplish the same thing
PamC3932
Occasional Participant
Constant Contact would be more useful if we didn't have to make a copy of the same campaign to send to other contacts. But yet, all we would have to do is change the contacts and send the SAME CAMPAIGN.
unitedwaytucson
Still a great suggestion - a simple add to for existing lists to resend
TechD
Yesterday, I wanted to resend an email to three new contacts. The text said "it would send to any new contacts recently added." I wanted to confirm who those contacts were, but I was unable to see to whom the resend was going to go to. You used to be able to specify those who were getting the resend.
HerlisaH
Constant contact definitely needs a resend to new list option.
Some students need to get the same email more than once, later on. For example, if we remind students who haven't completed their items three weeks later. Then they just get the same email later. I shouldn't have to copy the campaign to resend. Its ridiculous that you cant send an email to the same student more than once.
Read my solution above, posted on 7/8/2016. We have been using this method to resend to clients that have not opened an email, or that we wish to resend again as a reminder. You can use this same method to send an existing email to a new list. Just open the list you want to send to, click the select all checkbox, go to quick send, select the email and send. Takes 1-2 minutes tops.


text:
* Super-fast cluster boot-up (few seconds instead of several minutes for vagrant)
* Reduced disk usage thanks to [COW](https://en.wikibooks.org/wiki/QEMU/Images#Copy_on_write)
* Reduced memory footprint thanks to [KSM](https://www.kernel.org/doc/Documentation/vm/ksm.txt)

### Prerequisites

1. Install [dnsmasq](http://www.thekelleys.org.uk/dnsmasq/doc.html)
2. Install [ebtables](http://ebtables.netfilter.org/)
3. Install [qemu](http://wiki.qemu.org/Main_Page)
4. Install [libvirt](http://libvirt.org/)
5. Enable and start the libvirt daemon, e.g:
   * ``systemctl enable libvirtd``
   * ``systemctl start libvirtd``
6. [Grant libvirt access to your user¹](https://libvirt.org/aclpolkit.html)
7. Check that your $HOME is accessible to the qemu user²

#### ¹ Depending on your distribution, libvirt access may be denied by default or may require a password at each access.

You can test it with the following command:
```
virsh -c qemu:///system pool-list
```

If you have access error messages, please read https://libvirt.org/acl.html and https://libvirt.org/aclpolkit.html .

In short, if your libvirt has been compiled with Polkit support (ex: Arch, Fedora 21), you can create `/etc/polkit-1/rules.d/50-org.libvirt.unix.manage.rules` as follows to grant full access to libvirt to `$USER`

```
sudo /bin/sh -c "cat - > /etc/polkit-1/rules.d/50-org.libvirt.unix.manage.rules" << EOF
polkit.addRule(function(action, subject) {
        if (action.id == "org.libvirt.unix.manage" &&
            subject.user == "$USER") {
                return polkit.Result.YES;
                polkit.log("action=" + action);
                polkit.log("subject=" + subject);
        }
});
EOF
```

If your libvirt has not been compiled with Polkit (ex: Ubuntu 14.04.1 LTS), check the permissions on the libvirt unix socket:

```
ls -l /var/run/libvirt/libvirt-sock
srwxrwx--- 1 root libvirtd 0 févr. 12 16:03 /var/run/libvirt/libvirt-sock

usermod -a -G libvirtd $USER
# $USER needs to logout/login to have the new group be taken into account
```

(Replace `$USER` with your login name)

#### ² Qemu will run with a specific user. It must have access to the VMs drives

All the disk drive resources needed by the VM (CoreOS disk image, kubernetes binaries, cloud-init files, etc.) are put inside `./cluster/libvirt-coreos/libvirt_storage_pool`.

As we're using the `qemu:///system` instance of libvirt, qemu will run with a specific `user:group` distinct from your user. It is configured in `/etc/libvirt/qemu.conf`. That qemu user must have access to that libvirt storage pool.

If your `$HOME` is world readable, everything is fine. If your $HOME is private, `cluster/kube-up.sh` will fail with an error message like:

```
error: Cannot access storage file '$HOME/.../kubernetes/cluster/libvirt-coreos/libvirt_storage_pool/kubernetes_master.img' (as uid:99, gid:78): Permission denied
```

In order to fix that issue, you have several possibilities:
* set `POOL_PATH` inside `cluster/libvirt-coreos/config-default.sh` to a directory:
  * backed by a filesystem with a lot of free disk space
  * writable by your user;
  * accessible by the qemu user.
* Grant the qemu user access to the storage pool.

On Arch:

```
setfacl -m g:kvm:--x ~
```

### Setup

By default, the libvirt-coreos setup will create a single kubernetes master and 3 kubernetes minions. Because the VM drives use Copy-on-Write and because of memory ballooning and KSM, there is a lot of resource over-allocation.

To start your local cluster, open a shell and run:

```shell
cd kubernetes

export KUBERNETES_PROVIDER=libvirt-coreos
cluster/kube-up.sh
```

The `KUBERNETES_PROVIDER` environment variable tells all of the various cluster management scripts which variant to use.  If you forget to set this, the assumption is you are running on Google Compute Engine.

The `NUM_MINIONS` environment variable may be set to specify the number of minions to start. If it is not set, the number of minions defaults to 3.

The `KUBE_PUSH` environment variable may be set to specify which kubernetes binaries must be deployed on the cluster. Its possible values are:

* `release` (default if `KUBE_PUSH` is not set) will deploy the binaries of `_output/release-tars/kubernetes-server-….tar.gz`. This is built with `make release` or `make release-skip-tests`.
* `local` will deploy the binaries of `_output/local/go/bin`. These are built with `make`.

You can check that your machines are there and running with:

```
virsh -c qemu:///system list
 Id    Name                           State
----------------------------------------------------
 15    kubernetes_master              running
 16    kubernetes_minion-01           running
 17    kubernetes_minion-02           running
 18    kubernetes_minion-03           running
 ```

You can check that the kubernetes cluster is working with:

```
$ ./cluster/kubectl.sh get minions
NAME                LABELS              STATUS
192.168.10.2        <none>              Ready
192.168.10.3        <none>              Ready
192.168.10.4        <none>              Ready
```

The VMs are running [CoreOS](https://coreos.com/).
Your ssh keys have already been pushed to the VM. (It looks for ~/.ssh/id_*.pub)
The user to use to connect to the VM is `core`.
The IP to connect to the master is 192.168.10.1.
The IPs to connect to the minions are 192.168.10.2 and onwards.

Connect to `kubernetes_master`:
```
ssh core@192.168.10.1
```

Connect to `kubernetes_minion-01`:
```
ssh core@192.168.10.2
```

### Interacting with your Kubernetes cluster with the `kube-*` scripts.

All of the following commands assume you have set `KUBERNETES_PROVIDER` appropriately:

```
export KUBERNETES_PROVIDER=libvirt-coreos
```

Bring up a libvirt-CoreOS cluster of 5 minions

```
NUM_MINIONS=5 cluster/kube-up.sh
```

Destroy the libvirt-CoreOS cluster

```
cluster/kube-down.sh
```

Update the libvirt-CoreOS cluster with a new Kubernetes release produced by `make release` or `make release-skip-tests`:

```
cluster/kube-push.sh
```

Update the libvirt-CoreOS cluster with the locally built Kubernetes binaries produced by `make`:
```
KUBE_PUSH=local cluster/kube-push.sh
```

Interact with the cluster

```
cluster/kubectl.sh
```

### Troubleshooting

#### !!! Cannot find kubernetes-server-linux-amd64.tar.gz

Build the release tarballs:

```
make release
```

#### Can't find virsh in PATH, please fix and retry.

Install libvirt

On Arch:

```
pacman -S qemu libvirt
```

On Ubuntu 14.04.1:

```
aptitude install qemu-system-x86 libvirt-bin
```

On Fedora 21:

```
yum install qemu libvirt
```

#### error: Failed to connect socket to '/var/run/libvirt/libvirt-sock': No such file or directory

Start the libvirt daemon

On Arch:

```
systemctl start libvirtd
```

On Ubuntu 14.04.1:

```
service libvirt-bin start
```

#### error: Failed to connect socket to '/var/run/libvirt/libvirt-sock': Permission denied

Fix libvirt access permission (Remember to adapt `$USER`)

On Arch and Fedora 21:

```
cat > /etc/polkit-1/rules.d/50-org.libvirt.unix.manage.rules <<EOF
polkit.addRule(function(action, subject) {
        if (action.id == "org.libvirt.unix.manage" &&
            subject.user == "$USER") {
                return polkit.Result.YES;
                polkit.log("action=" + action);
                polkit.log("subject=" + subject);
        }
});
EOF
```

On Ubuntu:

```
usermod -a -G libvirtd $USER
```

#### error: Out of memory initializing network (virsh net-create...)

Ensure libvirtd has been restarted since ebtables was installed.

[![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/docs/getting-started-guides/libvirt-coreos.md?pixel)]()

redpajama_set_name: RedPajamaGithub


text:
Q: How to pass parameter through "Run-->Parameters" in Inno Setup? I worked with passing command line parameters through Command prompt. (/d<name>=<value>). It's work.
Later I found "parameters" option in "Run" menu of "Inno Setup 5". I tried but failed to pass.
My Attempts
"/dWish=Hello"
/dWish=Hello
"Wish=Hello"
Wish="Hello"
Wish="Hello"
Wish=Hello
And access like {#Wish}. But compilation filed with error undeclared identifier "Wish"
This is for option

A: Settings configured via Run -> Parameters are used to pass instructions to the installer being executed after compilation, not the build compiler (ISCC). Options that may be set are available in the InnoSetup help under Setup Command Line Parameters.
To pass parameters to the compiler itself, run the compiler from the command-line, and use the /D switch. So to set variable VAR to value val, use:
iscc "/dVAR=val" "MyInstallerScript.iss"

The ISCC.exe program is located in:
%programfiles%\Inno Setup 5\ISCC.exe


Myrna J. Holder, 72, of Festus, entered into rest on April 1, 2014 at Mercy Hospital Jefferson. Born November 27, 1941 in Evansville, Indiana; she was the daughter of Edwin A. and Ramona "Christine" (Hartford)Holder.
Ms. Holder was a former legal secretary. She enjoyed reading and gardening.
She is survived by a son, Larry "Skip" (Pam) Snyde II of Gainesille, Florida; a daughter, Kelly (Ben) Ivey of Chiefland, Florida; a brother, Duane (Judy) Holder of Festus, Missouri and three grandchildren, Sarah Ivey, Daniel Ivey and Dylan Probert.


Convergence Investments is a Jackson, Wyoming based private equity real estate investment firm. We operate in a specialized corner of real estate: Master Planned Community Development. We use our investment model to passionately shape land into innovative, highly desirable planned communities across the country. Our model creates wealth for our investors and communities that offer exceptional living experiences to our residents.
Put away any notion you may have of "developer" communities. We are not your typical real estate developer. We are a team dedicated to pushing boundaries to create the neighborhoods of tomorrow, today.
We rely on our values to guide us in creating a cohesive vision for each community.
Timeless Design: we use design techniques and land planning to create an enduring sense of place.
Balanced Environment: we make sure the natural and built worlds work together in harmony.
Product Diversity: we develop a mix of home types to build multi-generational communities.
We develop a comprehensive plan to create a top-selling community brand and provide homeowners with an unrivaled living experience. We are brand-led; from our initial site plan design to the execution of our marketing and sales program, we are guided by the vision we create for each community. This aligned and focused strategy benefits everyone involved in bringing the community to life. It drives home sales and builds a thriving community for homeowners, generates more opportunities for our development partners, and creates wealth for our investors.
We call this 360⁰ brand-led approach ConvergenceCore.
Every member of our team of real estate experts is invested in our funds and committed to the success of our master planned communities. We have the expansive network to find projects that meet our strict investment criteria, as well as the skillset, knowledge and passion to be leaders in our markets.


text:
import json
from datetime import datetime
from io import BytesIO
from unittest.mock import mock_open, patch, Mock

import pytest
import pytz
from pytest_lazyfixture import lazy_fixture

from boxsdk.config import API
from boxsdk.exception import BoxAPIException
from boxsdk.object.comment import Comment
from boxsdk.object.file import File
from boxsdk.object.file_version import FileVersion
from boxsdk.object.task import Task
from boxsdk.object.upload_session import UploadSession
from boxsdk.util.chunked_uploader import ChunkedUploader
from boxsdk.util.datetime_formatter import normalize_date_to_rfc3339_format
from boxsdk.util.default_arg_value import SDK_VALUE_NOT_SET

# pylint:disable=protected-access
# pylint:disable=too-many-lines
# pylint:disable=redefined-outer-name

@pytest.fixture()
def mock_accelerator_upload_url_for_update():
    return 'https://upload.box.com/api/2.0/files/fake_file_id/content?upload_session_id=123'

@pytest.fixture(scope='function')
def mock_accelerator_response_for_update(make_mock_box_request, mock_accelerator_upload_url_for_update):
    mock_response, _ = make_mock_box_request(
        response={
            'upload_url': mock_accelerator_upload_url_for_update,
            'download_url': None,
        }
    )
    return mock_response

def test_delete_file(test_file, mock_box_session, etag, if_match_header):
    test_file.delete(etag=etag)
    expected_url = test_file.get_url()
    mock_box_session.delete.assert_called_once_with(
        expected_url,
        expect_json_response=False,
        params={},
        headers=if_match_header,
    )

def test_create_upload_session(test_file, mock_box_session):
    expected_url = f'{API.UPLOAD_URL}/files/{test_file.object_id}/upload_sessions'
    file_size = 197520
    part_size = 12345
    total_parts = 16
    num_parts_processed = 0
    upload_session_type = 'upload_session'
    upload_session_id = 'F971964745A5CD0C001BBE4E58196BFD'
    file_name = 'test_file.pdf'
    expected_data = {
        'file_id': test_file.object_id,
        'file_size': file_size,
        'file_name': file_name
    }
    mock_box_session.post.return_value.json.return_value = {
        'id': upload_session_id,
        'type': upload_session_type,
        'num_parts_processed': num_parts_processed,
        'total_parts': total_parts,
        'part_size': part_size,
    }
    upload_session = test_file.create_upload_session(file_size, file_name)
    mock_box_session.post.assert_called_once_with(expected_url, data=json.dumps(expected_data))
    assert isinstance(upload_session, UploadSession)
    assert upload_session._session == mock_box_session
    assert upload_session.part_size == part_size
    assert upload_session.total_parts == total_parts
    assert upload_session.num_parts_processed == num_parts_processed
    assert upload_session.type == upload_session_type
    assert upload_session.id == upload_session_id

def test_get_chunked_uploader(mock_box_session, mock_content_response, mock_file_path, test_file):
    expected_url = f'{API.UPLOAD_URL}/files/{test_file.object_id}/upload_sessions'
    mock_file_stream = BytesIO(mock_content_response.content)
    file_size = 197520
    part_size = 12345
    total_parts = 16
    num_parts_processed = 0
    upload_session_type = 'upload_session'
    upload_session_id = 'F971964745A5CD0C001BBE4E58196BFD'
    expected_data = {
        'file_id': test_file.object_id,
        'file_size': file_size,
    }
    mock_box_session.post.return_value.json.return_value = {
        'id': upload_session_id,
        'type': upload_session_type,
        'num_parts_processed': num_parts_processed,
        'total_parts': total_parts,
        'part_size': part_size,
    }
    with patch('os.stat') as stat:
        stat.return_value.st_size = file_size
        with patch('boxsdk.object.file.open', return_value=mock_file_stream):
            chunked_uploader = test_file.get_chunked_uploader(mock_file_path)
    mock_box_session.post.assert_called_once_with(expected_url, data=json.dumps(expected_data))
    upload_session = chunked_uploader._upload_session
    assert upload_session.part_size == part_size
    assert upload_session.total_parts == total_parts
    assert upload_session.num_parts_processed == num_parts_processed
    assert upload_session.type == upload_session_type
    assert upload_session.id == upload_session_id
    assert isinstance(chunked_uploader, ChunkedUploader)

@pytest.mark.parametrize(
    'due_at',
    [
        '2014-04-03T11:09:43+14:00',
        datetime(2014, 4, 3, 11, 9, 43, tzinfo=pytz.timezone('US/Alaska'))
    ]
)
def test_create_task(test_file, test_task, mock_box_session, due_at):
    # pylint:disable=redefined-outer-name
    expected_url = f"{API.BASE_API_URL}/tasks"
    action = 'review'
    message = 'Test Message'
    mock_box_session.post.return_value.json.return_value = {
        'type': test_task.object_type,
        'id': test_task.object_id,
        'due_at': '2014-04-03T11:09:43+14:00',
        'action': action,
        'message': message,
    }

    new_task = test_file.create_task(message=message, due_at=due_at)

    expected_body = {
        'item': {
            'type': 'file',
            'id': '42',
        },
        'action': action,
        'message': message,
        'due_at': '2014-04-03T11:09:43+14:00'
    }
    mock_box_session.post.assert_called_once_with(expected_url, data=json.dumps(expected_body))
    assert isinstance(new_task, Task)
    assert new_task.object_type == test_task.object_type
    assert new_task.object_id == test_task.object_id
    assert new_task.action == action
    assert new_task.message == message
    assert new_task.due_at == '2014-04-03T11:09:43+14:00'

def test_create_task_with_review(test_file, test_task, mock_box_session):
    # pylint:disable=redefined-outer-name
    expected_url = f"{API.BASE_API_URL}/tasks"
    due_at = '2020-09-18T12:09:43+00:00'
    action = 'complete'
    message = 'Test Message'
    completion_rule = 'any_assignee'
    expected_body = {
        'item': {
            'type': 'file',
            'id': '42',
        },
        'action': action,
        'message': message,
        'due_at': due_at,
        'completion_rule': completion_rule,
    }
    mock_box_session.post.return_value.json.return_value = {
        'type': test_task.object_type,
        'id': test_task.object_id,
        'due_at': due_at,
        'action': action,
        'message': message,
        'completion_rule': completion_rule,
    }
    value = json.dumps(expected_body)
    new_task = test_file.create_task(
        message=message,
        due_at=due_at,
        action=action,
        completion_rule=completion_rule,
    )
    mock_box_session.post.assert_called_once_with(expected_url, data=value)
    assert isinstance(new_task, Task)
    assert new_task.object_type == test_task.object_type
    assert new_task.object_id == test_task.object_id
    assert new_task.action == action
    assert new_task.message == message
    assert new_task.due_at == due_at
    assert new_task.completion_rule == completion_rule

def test_get_tasks(test_file, mock_box_session):
    expected_url = test_file.get_url('tasks')
    task_body = {
        'type': 'task',
        'id': '12345',
        'item': {
            'type': 'file',
            'id': '33333',
        },
    }
    mock_box_session.get.return_value.json.return_value = {
        'limit': 100,
        'entries': [task_body],
    }
    tasks = test_file.get_tasks()
    task = tasks.next()
    mock_box_session.get.assert_called_once_with(expected_url, params={})
    assert isinstance(task, Task)
    assert task.id == task_body['id']
    assert task.object_type == task_body['type']
    assert task.item['id'] == task_body['item']['id']

def test_get_download_url(test_file, mock_box_session):
    expected_url = f'{API.BASE_API_URL}/files/{test_file.object_id}/content'
    download_url = 'https://dl.boxcloud.com/sdjhfgksdjfgshdbg'
    mock_box_session.get.return_value.headers = {
        'location': download_url
    }
    url = test_file.get_download_url()
    mock_box_session.get.assert_called_once_with(
        expected_url,
        params=None,
        expect_json_response=False,
        allow_redirects=False
    )
    assert url == download_url

def test_get_download_url_file_version(test_file, test_file_version, mock_box_session):
    expected_url = f'{API.BASE_API_URL}/files/{test_file.object_id}/content'
    download_url = 'https://dl.boxcloud.com/sdjhfgksdjfgshdbg'
    mock_box_session.get.return_value.headers = {
        'location': download_url
    }
    url = test_file.get_download_url(file_version=test_file_version)
    mock_box_session.get.assert_called_once_with(
        expected_url,
        params={'version': test_file_version.object_id},
        expect_json_response=False,
        allow_redirects=False
    )
    assert url == download_url

@pytest.mark.parametrize('params,expected_query,expected_headers', [
    ({}, None, None),
    ({'byte_range': (100, 199)}, None, {'Range': 'bytes=100-199'}),
    ({'byte_range': (100,)}, None, {'Range': 'bytes=100-'}),
])
def test_download_to(test_file, mock_box_session, mock_content_response, params, expected_query, expected_headers):
    expected_url = f'{API.BASE_API_URL}/files/{test_file.object_id}/content'
    mock_box_session.get.return_value = mock_content_response
    mock_writeable_stream = BytesIO()
    test_file.download_to(mock_writeable_stream, **params)
    mock_writeable_stream.seek(0)
    assert mock_writeable_stream.read() == mock_content_response.content
    mock_box_session.get.assert_called_once_with(
        expected_url,
        expect_json_response=False,
        stream=True,
        params=expected_query,
        headers=expected_headers
    )

def test_download_to_file_version(test_file, test_file_version, mock_box_session, mock_content_response):
    expected_url = f'{API.BASE_API_URL}/files/{test_file.object_id}/content'
    mock_box_session.get.return_value = mock_content_response
    mock_writeable_stream = BytesIO()
    test_file.download_to(mock_writeable_stream, file_version=test_file_version)
    mock_writeable_stream.seek(0)
    assert mock_writeable_stream.read() == mock_content_response.content
    mock_box_session.get.assert_called_once_with(
        expected_url,
        expect_json_response=False,
        stream=True,
        headers=None,
        params={'version': test_file_version.object_id}
    )

@pytest.mark.parametrize('params,expected_query,expected_headers', [
    ({}, None, None),
    ({'byte_range': (100, 199)}, None, {'Range': 'bytes=100-199'}),
])
def test_get_content(test_file, mock_box_session, mock_content_response, params, expected_query, expected_headers):
    expected_url = test_file.get_url('content')
    mock_box_session.get.return_value = mock_content_response
    file_content = test_file.content(**params)
    assert file_content == mock_content_response.content
    mock_box_session.get.assert_called_once_with(
        expected_url,
        expect_json_response=False,
        params=expected_query,
        headers=expected_headers
    )

def test_get_content_file_version(test_file, mock_box_session, mock_content_response, test_file_version):
    expected_url = test_file.get_url('content')
    mock_box_session.get.return_value = mock_content_response
    file_content = test_file.content(file_version=test_file_version)
    assert file_content == mock_content_response.content
    mock_box_session.get.assert_called_once_with(
        expected_url,
        expect_json_response=False,
        params={'version': test_file_version.object_id},
        headers=None
    )

@pytest.mark.parametrize('content_modified_at', [
    '1970-01-01T11:11:11.500+14:00',
    datetime(1970, 1, 1, 11, 11, 11, microsecond=500, tzinfo=pytz.timezone('US/Alaska'))
])
@pytest.mark.parametrize('is_stream', (True, False))
def test_update_contents(
        test_file,
        mock_box_session,
        mock_content_response,
        mock_upload_response,
        mock_file_path,
        etag,
        sha1,
        upload_using_accelerator,
        mock_accelerator_response_for_update,
        mock_accelerator_upload_url_for_update,
        upload_using_accelerator_fails,
        if_match_sha1_header,
        is_stream,
        content_modified_at
):
    # pylint:disable=too-many-locals
    file_new_name = 'new_file_name'
    additional_attributes = {'attr': 123}
    expected_url = test_file.get_url('content').replace(API.BASE_API_URL, API.UPLOAD_URL)
    if upload_using_accelerator:
        if upload_using_accelerator_fails:
            mock_box_session.options.side_effect = BoxAPIException(400)
        else:
            mock_box_session.options.return_value = mock_accelerator_response_for_update
            expected_url = mock_accelerator_upload_url_for_update

    mock_box_session.post.return_value = mock_upload_response

    if is_stream:
        mock_file_stream = BytesIO(mock_content_response.content)
        new_file = test_file.update_contents_with_stream(
            mock_file_stream,
            etag=etag,
            upload_using_accelerator=upload_using_accelerator,
            file_name=file_new_name,
            content_modified_at=content_modified_at,
            additional_attributes=additional_attributes,
            sha1=sha1,
        )
    else:
        mock_file = mock_open(read_data=mock_content_response.content)
        mock_file_stream = mock_file.return_value
        with patch('boxsdk.object.file.open', mock_file, create=True):
            new_file = test_file.update_contents(
                mock_file_path,
                etag=etag,
                upload_using_accelerator=upload_using_accelerator,
                file_name=file_new_name,
                content_modified_at=content_modified_at,
                additional_attributes=additional_attributes,
                sha1=sha1,
            )

    mock_files = {'file': ('unused', mock_file_stream)}
    attributes = {
        'name': file_new_name,
        'content_modified_at': '1970-01-01T11:11:11+14:00',
    }
    # Using `update` to mirror the actual impl, since the attributes could otherwise come through in a different order
    # in Python 2 tests
    attributes.update(additional_attributes)
    data = {'attributes': json.dumps(attributes)}
    mock_box_session.post.assert_called_once_with(
        expected_url,
        expect_json_response=False,
        files=mock_files,
        data=data,
        headers=if_match_sha1_header,
    )
    assert isinstance(new_file, File)
    assert new_file.object_id == test_file.object_id
    assert 'id' in new_file
    assert new_file['id'] == test_file.object_id
    assert not hasattr(new_file, 'entries')
    assert 'entries' not in new_file

@pytest.mark.parametrize('is_stream', (True, False))
def test_update_contents_combines_preflight_and_accelerator_calls_if_both_are_requested(
        test_file,
        mock_box_session,
        mock_file_path,
        mock_content_response,
        mock_accelerator_response_for_update,
        is_stream
):
    mock_box_session.options.return_value = mock_accelerator_response_for_update

    if is_stream:
        mock_file_stream = BytesIO(mock_content_response.content)
        test_file.update_contents_with_stream(
            mock_file_stream,
            preflight_check=True,
            upload_using_accelerator=True,
        )
    else:
        mock_file = mock_open(read_data=mock_content_response.content)
        with patch('boxsdk.object.file.open', mock_file, create=True):
            test_file.update_contents(
                mock_file_path,
                preflight_check=True,
                upload_using_accelerator=True,
            )

    mock_box_session.options.assert_called_once()

def test_update_contents_with_stream_does_preflight_check_if_specified(
        test_file,
        preflight_check,
        file_size,
        preflight_fails,
        mock_box_session,
):
    with patch.object(File, 'preflight_check', return_value=None):
        kwargs = {'file_stream': BytesIO(b'some bytes')}
        if preflight_check:
            kwargs['preflight_check'] = preflight_check
            kwargs['preflight_expected_size'] = file_size
        if preflight_fails:
            test_file.preflight_check.side_effect = BoxAPIException(400)
            with pytest.raises(BoxAPIException):
                test_file.update_contents_with_stream(**kwargs)
        else:
            test_file.update_contents_with_stream(**kwargs)

        if preflight_check:
            assert test_file.preflight_check.called_once_with(size=file_size)
            if preflight_fails:
                assert not mock_box_session.post.called
            else:
                assert mock_box_session.post.called
        else:
            assert not test_file.preflight_check.called

@patch('boxsdk.object.file.open', mock_open(read_data=b'some bytes'), create=True)
def test_update_contents_does_preflight_check_if_specified(
        test_file,
        mock_file_path,
        preflight_check,
        file_size,
        preflight_fails,
        mock_box_session,
):
    with patch.object(File, 'preflight_check', return_value=None):
        kwargs = {'file_path': mock_file_path}
        if preflight_check:
            kwargs['preflight_check'] = preflight_check
            kwargs['preflight_expected_size'] = file_size
        if preflight_fails:
            test_file.preflight_check.side_effect = BoxAPIException(400)
            with pytest.raises(BoxAPIException):
                test_file.update_contents(**kwargs)
        else:
            test_file.update_contents(**kwargs)

        if preflight_check:
            assert test_file.preflight_check.called_once_with(size=file_size)
            if preflight_fails:
                assert not mock_box_session.post.called
            else:
                assert mock_box_session.post.called
        else:
            assert not test_file.preflight_check.called

@pytest.mark.parametrize('params,expected_data', [
    ({}, {'is_download_prevented': False}),
    ({'prevent_download': False}, {'is_download_prevented': False}),
    ({'prevent_download': True}, {'is_download_prevented': True}),
    ({'expire_time': '2018-11-06T19:40:00-08:00'},
     {
        'is_download_prevented': False,
        'expires_at': '2018-11-06T19:40:00-08:00'
    }),
    ({'expire_time': datetime(2018, 11, 6, 19, 40, 00, tzinfo=pytz.timezone('US/Alaska'))},
     {
        'is_download_prevented': False,
        'expires_at': '2018-11-06T19:40:00+14:00'
    }),
])
def test_lock(test_file, mock_box_session, mock_file_response, params, expected_data):
    expected_url = test_file.get_url()
    expected_body = {
        'lock': {
            'type': 'lock'
        }
    }

    if 'is_download_prevented' in expected_data.keys():
        expected_body['lock']['is_download_prevented'] = expected_data['is_download_prevented']
    if 'expires_at' in expected_data.keys():
        expected_body['lock']['expires_at'] = expected_data['expires_at']

    mock_box_session.put.return_value = mock_file_response
    test_file.lock(**params)
    mock_box_session.put.assert_called_once_with(
        expected_url,
        data=json.dumps(expected_body),
        params=None,
        headers=None,
    )

def test_unlock(test_file, mock_box_session, mock_file_response):
    expected_url = test_file.get_url()
    mock_box_session.put.return_value = mock_file_response
    test_file.unlock()
    mock_box_session.put.assert_called_once_with(
        expected_url,
        data=json.dumps({'lock': None}),
        params=None,
        headers=None,
    )

@pytest.mark.parametrize(
    'size, name, expected_data',
    [
        # Test case for specifying the name of the file for preflight
        (
            100,
            'foo.txt',
            json.dumps({'size': 100, 'name': 'foo.txt'}),
        ),

        # Test case for omitting the name of the file for preflight
        (
            200,
            None,
            json.dumps({'size': 200})
        ),
    ]
)
def test_preflight_check(
        test_file,
        mock_object_id,
        mock_box_session,
        mock_accelerator_response_for_update,
        mock_accelerator_upload_url_for_update,
        size,
        name,
        expected_data,
):
    mock_box_session.options.return_value = mock_accelerator_response_for_update
    kwargs = {'size': size}
    if name:
        kwargs['name'] = name

    accelerator_url = test_file.preflight_check(**kwargs)

    mock_box_session.options.assert_called_once_with(
        url=f'{API.BASE_API_URL}/files/{mock_object_id}/content',
        expect_json_response=True,
        data=expected_data,
    )
    assert accelerator_url == mock_accelerator_upload_url_for_update

def test_get_shared_link(
        test_file,
        mock_box_session,
        shared_link_access,
        shared_link_unshared_at,
        shared_link_password,
        shared_link_can_download,
        shared_link_can_preview,
        shared_link_can_edit,
        shared_link_vanity_name,
        test_url,
        etag,
        if_match_header,
):
    # pylint:disable=redefined-outer-name, protected-access
    expected_url = test_file.get_url()
    mock_box_session.put.return_value.json.return_value = {
        'type': test_file.object_type,
        'id': test_file.object_id,
        'shared_link': {
            'url': test_url,
        },
    }
    expected_data = {'shared_link': {}}
    if shared_link_access is not None:
        expected_data['shared_link']['access'] = shared_link_access
    if shared_link_unshared_at is not SDK_VALUE_NOT_SET:
        expected_data['shared_link']['unshared_at'] = normalize_date_to_rfc3339_format(shared_link_unshared_at)
    permissions = {}
    if shared_link_can_download is not None:
        permissions['can_download'] = shared_link_can_download
    if shared_link_can_preview is not None:
        permissions['can_preview'] = shared_link_can_preview
    if shared_link_can_edit is not None:
        permissions['can_edit'] = shared_link_can_edit
    if permissions:
        expected_data['shared_link']['permissions'] = permissions
    if shared_link_password is not None:
        expected_data['shared_link']['password'] = shared_link_password
    if shared_link_vanity_name is not None:
        expected_data['shared_link']['vanity_name'] = shared_link_vanity_name

    url = test_file.get_shared_link(
        etag=etag,
        access=shared_link_access,
        unshared_at=shared_link_unshared_at,
        password=shared_link_password,
        allow_download=shared_link_can_download,
        allow_preview=shared_link_can_preview,
        allow_edit=shared_link_can_edit,
        vanity_name=shared_link_vanity_name,
    )
    mock_box_session.put.assert_called_once_with(
        expected_url,
        data=json.dumps(expected_data),
        headers=if_match_header,
        params=None,
    )
    assert url == test_url

def test_get_shared_link_download_url(
        test_file,
        mock_box_session,
        shared_link_access,
        shared_link_unshared_at,
        shared_link_password,
        shared_link_can_preview,
        shared_link_vanity_name,
        test_url,
        etag,
        if_match_header,
):
    # pylint:disable=redefined-outer-name, protected-access
    expected_url = test_file.get_url()
    mock_box_session.put.return_value.json.return_value = {
        'type': test_file.object_type,
        'id': test_file.object_id,
        'shared_link': {
            'url': None,
            'download_url': test_url,
        },
    }
    expected_data = {
        'shared_link': {},
    }
    if shared_link_access is not None:
        expected_data['shared_link']['access'] = shared_link_access
    if shared_link_unshared_at is not SDK_VALUE_NOT_SET:
        expected_data['shared_link']['unshared_at'] = normalize_date_to_rfc3339_format(shared_link_unshared_at)
    if shared_link_can_preview is not None:
        expected_data['shared_link']['permissions'] = permissions = {}
        permissions['can_preview'] = shared_link_can_preview
    if shared_link_password is not None:
        expected_data['shared_link']['password'] = shared_link_password
    if shared_link_vanity_name is not None:
        expected_data['shared_link']['vanity_name'] = shared_link_vanity_name

    url = test_file.get_shared_link_download_url(
        etag=etag,
        access=shared_link_access,
        unshared_at=shared_link_unshared_at,
        password=shared_link_password,
        allow_preview=shared_link_can_preview,
        vanity_name=shared_link_vanity_name,
    )
    mock_box_session.put.assert_called_once_with(
        expected_url,
        data=json.dumps(expected_data),
        headers=if_match_header,
        params=None,
    )
    assert url == test_url

def test_get_comments(test_file, mock_box_session):
    expected_url = test_file.get_url('comments')
    mock_comment1 = {
        'type': 'comment',
        'id': '11111',
        'message': 'Foo'
    }
    mock_comment2 = {
        'type': 'comment',
        'id': '22222',
        'tagged_message': 'Well hello there, @[33333:friend]!'
    }
    mock_box_session.get.return_value.json.return_value = {
        'total_count': 2,
        'offset': 0,
        'limit': 100,
        'entries': [mock_comment1, mock_comment2]
    }
    comments = test_file.get_comments()
    comment1 = comments.next()
    mock_box_session.get.assert_called_once_with(expected_url, params={'offset': 0})
    assert comment1.object_id == mock_comment1['id']
    assert comment1.message == mock_comment1['message']

    comment2 = comments.next()
    assert comment2.object_id == mock_comment2['id']
    assert comment2.tagged_message == mock_comment2['tagged_message']

def test_add_comment(test_file, mock_box_session, comment_params):
    expected_url = 'https://api.box.com/2.0/comments'
    comment_id = '12345'
    (message_type, message) = comment_params
    expected_data = {
        message_type: message,
        'item': {
            'type': 'file',
            'id': test_file.object_id
        }
    }
    mock_box_session.post.return_value.json.return_value = {
        'type': 'comment',
        'id': comment_id,
        message_type: message
    }
    comment = test_file.add_comment(message)
    mock_box_session.post.assert_called_once_with(expected_url, data=json.dumps(expected_data))
    assert isinstance(comment, Comment)
    assert comment.object_id == comment_id

def test_get_previous_versions(test_file, mock_box_session):
    expected_url = f'{API.BASE_API_URL}/files/{test_file.object_id}/versions'
    mock_version1 = {
        'type': 'file_version',
        'id': '11111',
        'sha1': '4788db35f85f87acaaa5ba82cc99d72c9323281f',
    }
    mock_version2 = {
        'type': 'comment',
        'id': '22222',
        'sha1': '4788db35f85f87acaaa5ba82cc99d72c9323281f',
    }
    mock_box_session.get.return_value.json.return_value = {
        'total_count': 2,
        'offset': 0,
        'limit': 100,
        'entries': [mock_version1, mock_version2]
    }
    versions = test_file.get_previous_versions()
    version1 = versions.next()
    mock_box_session.get.assert_called_once_with(expected_url, params={'offset': None})
    assert version1.object_id == mock_version1['id']
    assert version1.sha1 == mock_version1['sha1']

    version2 = versions.next()
    assert version2.object_id == mock_version2['id']
    assert version2.sha1 == mock_version2['sha1']

def test_promote_version(test_file, test_file_version, mock_box_session):
    expected_url = f'{API.BASE_API_URL}/files/{test_file.object_id}/versions/current'
    sha1 = '12039d6dd9a7e6eefc78846802e'
    expected_body = {
        'type': 'file_version',
        'id': test_file_version.object_id,
    }
    mock_box_session.post.return_value.json.return_value = {
        'type': 'file_version',
        'id': '77777',
        'sha1': sha1,
    }
    new_version = test_file.promote_version(test_file_version)
    mock_box_session.post.assert_called_once_with(expected_url, data=json.dumps(expected_body))
    assert isinstance(new_version, FileVersion)
    assert new_version.object_id == '77777'
    assert new_version.sha1 == sha1

@pytest.mark.parametrize('params,expected_headers', [
    ({}, None),
    ({'etag': 'foobar'}, {'If-Match': 'foobar'}),
])
def test_delete_version(test_file, test_file_version, mock_box_session, params, expected_headers):
    expected_url = f'{API.BASE_API_URL}/files/{test_file.object_id}/versions/{test_file_version.object_id}'
    mock_box_session.delete.return_value.ok = True
    is_success = test_file.delete_version(test_file_version, **params)
    mock_box_session.delete.assert_called_once_with(expected_url, expect_json_response=False, headers=expected_headers)
    assert is_success is True

def test_get_embed_url(test_file, mock_box_session):
    expected_url = f'{API.BASE_API_URL}/files/{test_file.object_id}'
    expected_params = {
        'fields': 'expiring_embed_link'
    }
    embed_url = 'https://app.box.com/preview/mystuff'
    mock_box_session.get.return_value.json.return_value = {
        'type': 'file',
        'id': test_file.object_id,
        'expiring_embed_link': {
            'url': embed_url,
        },
    }

    url = test_file.get_embed_url()
    mock_box_session.get.assert_called_once_with(expected_url, params=expected_params)
    assert url == embed_url

@pytest.mark.parametrize('rep_hints,expected_headers', [
    (None, None),
    ('[pdf]', {'X-Rep-Hints': '[pdf]'}),
])
def test_get_representation_info(test_file, mock_box_session, rep_hints, expected_headers):
    expected_url = f'{API.BASE_API_URL}/files/{test_file.object_id}'
    expected_params = {'fields': 'representations'}

    info_url = 'https://api.box.com/2.0/representations/pdf'
    mock_box_session.get.return_value.json.return_value = {
        'type': 'file',
        'id': test_file.object_id,
        'representations': {
            'total_count': 1,
            'entries': [
                {
                    'representation': 'pdf',
                    'info': {
                        'url': info_url,
                    },
                },
            ],
        },
    }

    reps = test_file.get_representation_info(rep_hints=rep_hints)
    mock_box_session.get.assert_called_once_with(expected_url, params=expected_params, headers=expected_headers)
    assert isinstance(reps, list)
    assert len(reps) == 1
    rep = reps[0]
    assert rep['representation'] == 'pdf'
    assert rep['info']['url'] == info_url

@pytest.mark.parametrize('extension,min_width,min_height,max_width,max_height,expected_params', [
    ('png', None, None, None, None, {}),
    ('png', None, None, None, None, {}),
    ('jpg', None, None, None, None, {}),
    ('png', 1, 2, None, None, {'min_width': 1, 'min_height': 2}),
    ('png', 1, 2, 3, 4, {'min_width': 1, 'min_height': 2, 'max_width': 3, 'max_height': 4}),
])
def test_get_thumbnail(
        test_file,
        mock_box_session,
        mock_content_response,
        extension,
        min_width,
        min_height,
        max_width,
        max_height,
        expected_params,
):
    expected_url = f'{API.BASE_API_URL}/files/{test_file.object_id}/thumbnail.{extension}'
    mock_box_session.get.return_value = mock_content_response

    thumb = test_file.get_thumbnail(
        extension=extension,
        min_width=min_width,
        min_height=min_height,
        max_width=max_width,
        max_height=max_height,
    )

    mock_box_session.get.assert_called_once_with(expected_url, expect_json_response=False, params=expected_params)
    assert thumb == mock_content_response.content

@pytest.mark.parametrize('dimensions,extension', [
    ('92x92', 'png'),
    ('92x92', 'jpg'),
])
def test_get_thumbnail_representation(
        test_file,
        mock_box_session,
        mock_content_response,
        dimensions,
        extension,
):
    representation_url = f'{API.BASE_API_URL}/files/{test_file.object_id}'
    content_url = 'https://dl.boxcloud.com/api/2.0/internal_files/123/versions/345/representations/jpg/content/'

    mock_representations_response = Mock()
    mock_representations_response.json.return_value = {
        'etag': '1',
        'id': test_file.object_id,
        'representations': {
            'entries': [
                {
                    'content': {
                        'url_template': content_url + '{+asset_path}'
                    },
                    'info': {
                        'url': 'https://api.box.com/2.0/internal_files/123/versions/345/representations/jpg'
                    },
                    'properties': {},
                    'representation': 'pdf',
                    'status': {
                        'state': 'success'
                    }
                }
            ]
        },
        'type': 'file'
    }

    mock_box_session.get.side_effect = [mock_representations_response, mock_content_response]

    thumb = test_file.get_thumbnail_representation(
        dimensions=dimensions,
        extension=extension,
    )

    mock_box_session.get.assert_any_call(representation_url, headers={'X-Rep-Hints': f'[{extension}?dimensions=92x92]'},
                                         params={'fields': 'representations'})
    mock_box_session.get.assert_any_call(content_url, expect_json_response=False)
    assert thumb == mock_content_response.content

def test_get_thumbnail_representation_not_found(
        test_file,
        mock_box_session,
        mock_content_response,
):
    representation_url = f'{API.BASE_API_URL}/files/{test_file.object_id}'
    dimensions = '100x100'
    extension = 'jpg'

    mock_representations_response = Mock()
    mock_representations_response.json.return_value = {
        'etag': '1',
        'id': test_file.object_id,
        'representations': {
            'entries': [],
        },
        'type': 'file'
    }

    mock_box_session.get.side_effect = [mock_representations_response, mock_content_response]

    thumb = test_file.get_thumbnail_representation(
        dimensions=dimensions,
        extension=extension,
    )

    mock_box_session.get.assert_any_call(
        representation_url,
        headers={'X-Rep-Hints': f'[{extension}?dimensions={dimensions}]'},
        params={'fields': 'representations'},
    )
    assert thumb == b''

def test_get_thumbnail_representation_not_available(
        test_file,
        mock_box_session,
        mock_content_response,
):
    representation_url = f'{API.BASE_API_URL}/files/{test_file.object_id}'
    dimensions = '100x100'
    extension = 'jpg'

    mock_representations_response = Mock()
    mock_representations_response.json.return_value = {
        'etag': '1',
        'id': test_file.object_id,
        'representations': {
            'entries': [
                {
                    'content': {
                        'url_template': 'content_url {+asset_path}'
                    },
                    'info': {
                        'url': 'https://api.box.com/2.0/internal_files/123/versions/345/representations/jpg'
                    },
                    'properties': {},
                    'representation': 'pdf',
                    'status': {'state': 'error', 'code': 'error_password_protected'}
                }
            ]
        },
        'type': 'file'
    }

    mock_box_session.get.side_effect = [mock_representations_response, mock_content_response]

    thumb = test_file.get_thumbnail_representation(
        dimensions=dimensions,
        extension=extension,
    )

    mock_box_session.get.assert_any_call(
        representation_url,
        headers={'X-Rep-Hints': f'[{extension}?dimensions={dimensions}]'},
        params={'fields': 'representations'},
    )
    assert thumb == b''

@pytest.mark.parametrize(
    'disposition_at',
    (
        lazy_fixture('mock_datetime_rfc3339_str'),
        "2035-03-04T10:14:24.000+14:00",
        "2035/03/04 10:14:24.000+14:00",
        lazy_fixture('mock_timezone_aware_datetime_obj'),
    )
)
def test_set_diposition_at(
        test_file,
        mock_box_session,
        disposition_at,
        mock_datetime_rfc3339_str,
):
    expected_url = test_file.get_url()
    expected_data = {'disposition_at': mock_datetime_rfc3339_str}

    test_file.set_disposition_at(disposition_at)

    mock_box_session.put.assert_called_once_with(
        expected_url,
        data=json.dumps(expected_data),
        headers=None,
        params=None,
    )


text:
Patrizia M. Gianni () é uma matemática italiana, especializada em álgebra computacional. É conhecida por sua pesquisa inicial em bases de Gröbner, incluindo sua descoberta do algoritmo FGLM para alterar ordenações monomiais em bases de Gröbner, e por seu desenvolvimento dos componentes do sistema de álgebra computacional Axiom sobre polinômios e funções racionais.

Gianni é professora de álgebra no departamento de matemática da Universidade de Pisa. Obteve uma laurea na Universidade de Pisa e trabalhou para a IBM Research, bem como para a Universidade de Pisa.

Referências

Ligações externas
Página pessoal

Algebristas
Professores da Universidade de Pisa
Matemáticos da Itália
Matemáticas da Itália
Alunos da Universidade de Pisa
Pessoas vivas

redpajama_set_name: RedPajamaWikipedia


This guide is subject to UK law and was last updated in July 2013.
From 6 April 2014 platform services must only be paid for by an explicit charge agreed with the consumer, with some limited exceptions under rules introduced by regulator the Financial Conduct Authority (FCA). This guide explains how those rules work.
In 2012 the rules governing payments to financial advisers changed when parts of the Retail Distribution Review (RDR) came into force. A consumer choosing a product acting on adviser advice could no longer trigger a commission: payment had to be explicit and direct from client to adviser, as outlined in Out-Law's guide to adviser charging.
The new FCA rules will have a similar effect on the platforms that advisers and consumers use to arrange financial services purchases.
Under the rules platform services must be remunerated solely by an explicit platform charge agreed with the consumer and cash rebates from product providers to customers will be prohibited.
The FCA said that it is introducing the changes to improve remuneration transparency and to help consumers compare platform services and decide which offers the best value.
The FCA policy statement on the changes said that they were designed to protect consumers and increase competition in the platforms market. The rules complement the FCA's wider RDR aims of restricting product providers' ability to influence distribution and matching the interests of intermediaries with those of its clients.
Subject to limited exceptions, platform service providers must only be remunerated for the platform service by 'platform charges', which must be paid by clients only. Payments received by platform providers in performance of their business from alternative sources in the distribution chain will not be considered to be "platform charges".
According to the Policy Statement a platform charge is "any form of charge payable by or on behalf of a retail client to a firm in relation to the provision of a platform service and which is agreed between the platform service provider and the retail client".
any payment, other than product charges or platform charges, in its capacity as a retail investment product provider, for the provision of retail investment products to retail clients via its platform service.
The new rules reflect the FCA's objective of setting clear pricing for platform services, and products if the platform provider is also the product provider, and agreeing these with the customer up front.
Platforms will be entitled to continue to receive payments from product providers for legacy business until 6 April 2016.
These payments must not vary "inappropriately" according to the provider firm making the payment and must be reasonable and proportionate for the service. The payments or service must not channel business to that particular provider firm other than via the normal effect of "general advertising".
These further restrictions on otherwise exempted payments reflect the FCA's concern about potential abuse of the rules by operators seeking to disguise prohibited payments. In particular the FCA has explained that "advertising" payments should not enable products to appear on shortlists or influence their ranking. The FCA said in the Policy Statement that abuse of these permitted payments could lead to an outright ban on payments between product and platform providers.
Subject to some limited exceptions, cash rebates to consumers will be prohibited for all platform services from the implementation of these rules.
As part of the RDR process financial regulators prohibited the payment of cash rebates from product providers or platforms to consumers when those consumers were advised by a financial adviser. This was to bring that process in line with the RDR's ban on commission payments from product providers to advisers and was designed to restrict the opportunity for conflicts of interest between consumer and adviser in the selling and promoting of products.
This was then extended to non-advised sales.
One of the exceptions to the rules governing cash rebates is that product providers can pay cash rebates to the platform provider if the rebate is passed on to the customer in full in the form of additional units.
Though this appears to support the objective of removing conflicts of interest in a provider's promotion of certain products it is unclear how this is preferable to full cash rebating in respect of clarifying the overall product price to the consumer. The FCA has said that cash rebating makes calculating the true cost of the platform too complex for consumers, but receiving unit rebates may not make this any easier.


If you find yourself tossing and turning in bed every night then you're probably not getting enough good quality sleep. We all need a good rest every night to keep us feeling happy and healthy so it's important to make your bed as comfortable as possible.
Do you know what thread count the sheets on your bed are? The higher the thread count the softer and cosier your sheets will be. We recommend sheets with a thread count of about 400 – 600, look out for terms like Egyptian Cotton and Pima Cotton for luxurious sheets that will feel soft on your skin all night long.
If you find that you're waking up every morning with a stiff neck or a sore back then you may benefit from supportive pillows. Supportive pillows can be made from foam, memory foam, or latex. There are a huge variety of different therapeutic pillows available on the market from contoured pillows to leg positioner pillows and lumbar roll pillows.
If you find it difficult to regulate your temperature in the night then instead of having one big thick duvet try having multiple layers on your bed. Try layering different blankets on your bed so that you can add them and remove them as required.
If you don't think it's time for a new mattress yet but you're not comfortable, try investing in a memory foam mattress topper, that little extra layer can make all the difference!
If it's time for a new mattress then consider your options carefully before buying. At CP Furniture Sales we have a huge variety of different mattressesavailable, including special supportive ones for people who suffer from backache and luxurious memory foam mattresses.


text:
ACP, 16, 2611–2629, 2016
Atmos. Chem. Phys., 16, 2611–2629, 2016
https://doi.org/10.5194/acp-16-2611-2016
Research article 03 Mar 2016
Research article | 03 Mar 2016
Understanding cirrus ice crystal number variability for different heterogeneous ice nucleation spectra
Sylvia C. Sullivan1, Ricardo Morales Betancourt2, Donifan Barahona3, and Athanasios Nenes1,4,5,6 Sylvia C. Sullivan et al. Sylvia C. Sullivan1, Ricardo Morales Betancourt2, Donifan Barahona3, and Athanasios Nenes1,4,5,6
1Department of Chemical and Biomolecular Engineering, Georgia Institute of Technology, Atlanta, GA 30332, USA
2Department of Civil and Environmental Engineering, University of Los Andes, Bogotá, Colombia
3NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA
4Department of Earth and Atmospheric Sciences, Georgia Institute of Technology, Atlanta, GA 30332, USA
5ICE-HT, Foundation for Research and Technology, Hellas, 26504 Patras, Greece
6IERSD, National Observatory of Athens, Palea Penteli, 15236, Greece
Correspondence: Athanasios Nenes (athanasios.nenes@gatech.edu)
Received: 16 Jun 2015 – Discussion started: 11 Aug 2015 – Revised: 27 Nov 2015 – Accepted: 05 Jan 2016 – Published: 03 Mar 2016
Abstract. Along with minimizing parameter uncertainty, understanding the cause of temporal and spatial variability of the nucleated ice crystal number, Ni, is key to improving the representation of cirrus clouds in climate models. To this end, sensitivities of Ni to input variables like aerosol number and diameter provide valuable information about nucleation regime and efficiency for a given model formulation. Here we use the adjoint model of the adjoint of a cirrus formation parameterization (Barahona and Nenes, 2009b) to understand Ni variability for various ice-nucleating particle (INP) spectra. Inputs are generated with the Community Atmosphere Model version 5, and simulations are done with a theoretically derived spectrum, an empirical lab-based spectrum and two field-based empirical spectra that differ in the nucleation threshold for black carbon particles and in the active site density for dust. The magnitude and sign of Ni sensitivity to insoluble aerosol number can be directly linked to nucleation regime and efficiency of various INP. The lab-based spectrum calculates much higher INP efficiencies than field-based ones, which reveals a disparity in aerosol surface properties. Ni sensitivity to temperature tends to be low, due to the compensating effects of temperature on INP spectrum parameters; this low temperature sensitivity regime has been experimentally reported before but never deconstructed as done here.
How to cite. Sullivan, S. C., Morales Betancourt, R., Barahona, D., and Nenes, A.: Understanding cirrus ice crystal number variability for different heterogeneous ice nucleation spectra, Atmos. Chem. Phys., 16, 2611–2629, https://doi.org/10.5194/acp-16-2611-2016, 2016.
We use the adjoint model of a cirrus parameterization to quantify sources of crystal variability for various ice-nucleating spectra and output from CAM5. The sensitivities can be directly linked to nucleation regime and efficiency of various INP. The lab-based spectrum calculates much higher INP efficiencies than field-based ones, owing to aerosol surface properties. The sensitivity to temperature tends to be low, due to the compensating effects of temperature on INP spectrum parameters.
We use the adjoint model of a cirrus parameterization to quantify sources of crystal variability...