So, is iOS 11 WiFi or Bluetooth always on or turns on by itself? Here's how to fix the issue on your iPhone or iPad.
Now that Apple's iOS 11 has been available for download for a couple of days, users around the globe have been getting to grips with the software after installing it on their iPhones and iPads. As tends to be the case with any major new software release however, there have been some teething problems.
Perhaps uncharacteristically however, the most high-profile of those problems is not a bug, or something that simply does not work, but rather a change in the way an existing feature works. You may have seen people complaining that the Control Center toggles for WiFi and Bluetooth are not disabling either radio with iOS 11 installed, and they are correct, they do not. The thing is, that's the way Apple likes it and it's like that by design now starting with iOS 11. You best get used to it.
The change in behavior is a strange one, but Apple seems to have its heart in the right place here. Whereas before toggling either WiFi or Bluetooth off from Control Center would disable the respective radio, now all it does is disconnect from the WiFi network or Bluetooth devices that are connected at the time. This, according to Apple, is what most people used the toggles for, so the company decided to change the way the buttons behave. Makes sense, right?
The problem comes in the fact that Apple did not bother to tell anyone this would happen. Admittedly, when toggling WiFi off, for example, you now get a message in Control Center that says you have been disconnected from whichever WiFi network you were on, but if we are being honest, nobody reads those messages and even if they did, it's just ambiguous enough to not give the game away. Is any of this the end of the world? No, of course not, but Apple could have popped a message up the first time Control Center was invoked post-iOS 11 installation, could it not?
This has also caused quite a concern amongst security researchers whereby Bluetooth and WiFi connectivity left open leaves room for malicious maneuvers from anyone attempting to hack the device. So if you're worried about such opinions, luckily all is not lost.
Disabling WiFi or Bluetooth completely now requires a trip into the Settings app just like in pre-iOS 7 days where both radios can be completely disabled at will, so fear not folks, you can still turn these radios off when you want – it's just going to take a few more taps than it did before. Additionally, you can also 3D Touch your way into their shortcuts from Home screen Settings.app icon and disable them in a jiffy.
Also check: How To Fix iOS 11 WiFi Issues On iPhone And iPad.
I guess they figure enough people have swallowed the BS pill that they'll just let Apple dictate everything about their phone usage.
Worst part is when bluetooth is on the icon stays illuminated/ lit up even when you're not connected to a bluetooth device. It doesn't gray out anymore, this is really annoying.
the whole point of having the quick access is so i can turn it "ON" and "OFF" not hide it.
Most people also want the radio off because it saves battery when they are not actually using it!
Soon, on iOS there will be no option to turn off wifi/bluetooth. Have fun…… that would be the day I switch to android cause smooth OS and a trouble free operation and nice camera does not mean I sell my last bits of soul to Apple…. Atleast give us some fake sense of security….
but still, the most red-iculous post of red-mond pie..


text:
Los Angeles Rams vs Green Bay Packers Predictions, Picks, Odds, and Betting Preview – NFL NFC Divisional Round | January 16 2021
The Los Angeles Rams pulled off a gutsy win in the wild-card round and their reward for doing that is a match against Arron Rodgers and the Green Bay Packers at Lambeau Field. Will the Rams pull off another upset? Or will the Packers advance to the AFC title game with a win here?
Betting Preview for the Los Angeles Rams vs Green Bay Packers NFC Divisional Round Round January 16, 2021
When: Saturday, January 16, 2021, 4:35 PM ET
Line: Los Angeles Rams (+7) vs Green Bay Packers (-7) – view all 2021 NFL lines
TV Broadcast: FOX
Betting on the Los Angeles Rams (+7)
Regular Season Record: 10-6
The Rams became the first underdog to win in this year's playoffs after eliminating the Seattle Seahawks in a 30-20 win in the wild-card round last Sunday. The Rams leaned on their defense and on rookie running back Cam Akers in that game. Russell Wilson was bottled up all game long, as he got sacked by the Rams five times for a loss of 32 yards. Jalen Ramsey silenced DK Metcalf, who only caught five of 11 targets. As for Akers, he recorded 131 rushing yards and a touchdown on 28 carries. Ramsey's ability to take away the opponents' most lethal weapon downfield will be a huge key for the Rams, as they plan to contain the Packers' Davante Adams. The Rams are also hopeful that Aaron Donald will be ready to go for the divisional round. Donald exited the Rams game with a rib injury. Given that it's the playoffs, look for him to give it a go this coming Sunday against the Packers. As of this writing, it remains uncertain whether John Wolford or Jared Goff will start on Sunday. Wolford suffered a neck injury against the Seahawks, while Goff is still dealing with a thumb issue in his throwing hand.
The under is 4-1 in the Rams' last five games overall.
Betting on the Green Bay Packers (-7)
Aaron Rodgers and the Packers are ready to go. Thanks to a bye in the first round of the playoffs, the Packers will come into this game against the Rams with much fresher bodies. The last time the Packers were on the field, they were seen dismantling the Chicago Bears in a 35-16 road win in Week 17. Rodgers toyed with Chicago's defense, as the favorite to win the NFL MVP this season passed for 240 yards and four touchdowns with zero interceptions on 19-of-24 completions. As long as Rodgers is healthy and playing at that level, the Packers are always going to spell trouble for any defense. It also helps Rodgers that he is operating behind an offensive line that is doing an excellent job of protecting him, as the Packers finished the regular season with just 21 sacks allowed – tied for second-fewest in the league.
The Packers are 7-3 against the spread in their last 10 games overall.
Los Angeles Rams vs Green Bay Packers Predictions,…
NFL Divisional Round Picks and Predictions 2021
Chicago Bears vs Green Bay Packers Predictions,…
Jacksonville Jaguars vs Los Angeles Rams…
Los Angeles Rams vs Green Bay Packers Odds
Los Angeles Rams vs Green Bay Packers Pick
Los Angeles Rams vs Green Bay Packers Picks
Los Angeles Rams vs Green Bay Packers Prediction
Los Angeles Rams vs Green Bay Packers Predictions
Los Angeles Rams vs Green Bay Packers Preview
NFC Divisional Round
Rams vs Packers Odds
Rams vs Packers Pick
Rams vs Packers Picks
Rams vs Packers Prediction
Rams vs Packers Predictions
Rams vs Packers Preview

redpajama_set_name: RedPajamaCommonCrawl


Springfield - 5871 South 6TH ST.
From the Airport: Take David Jones Expressway to Veterans Parkway, take I-72 East to I-55 South. The Baymont Inn and Suites of Springfield, IL is pleased to provide the guests with exceptional service and quality amenities at an affordable price. Whether you are here for business or leisure you can enjoy the Heated Indoor Swimming Pool, Free High Speed Internet in all guest rooms, Free Cable HBO, Fitness Center, All Non-Smoking Rooms, Meeting Rooms and much more. After a restful night of sleep, you can look forward to starting your day with a Complimentary Enhanced Continental Breakfast. To make your stay even more rewarding, please join Wyndham Rewards, the guest loyalty program. We are within close proximity to the Illinois State Capitol, University of Illinois Springfield, the Illinois State Police Academy, Abraham Lincoln Historic, Frank Lloyd Wrights Lawrence Memorial Library, Abraham Lincoln Presidential Museum, Dana Thomas House, Executive Mansion, Knights Recreation and Waterslide and Abraham Lincoln Capital Airport. Pets Accepted. The hotel has several restaurants nearby - Cracker Barrel, Saputos Italian Village, Red Lobster, Bob Evans and the list goes on. -1 km to the nearest fair site (?), 15 kms to the nearest airport (capital), 2 kms to city centre.


text:
De Sögel-Wohldegroep (Duits: Sögel-Wohlde-Kreis) is een groep archeologische culturen uit de Midden-Bronstijd (±1600–1000 v.Chr.) in Noord-Duitsland tot in Hessen, Nederland, België en Noord-Frankrijk. Ze is vernoemd naar de plaatsen Sögel en Dohnsen-Wohlde in Nedersaksen.

De term "Sögel-Wohlde-Kreis" werd voor het eerst gebruikt in 1971 door de Duitse prehistoricus Friedrich Laux. Eerder in de jaren 1920 had de archeoloog Ernst Sprockhoff de term "Sögeler Kulturkreis" gebruikt om de specifieke grafvondsten te beschrijven. De cultuur wordt gezien als deel uitmakend van het zogenaamde Únětice-complex.

Op de Hümmling liggen de grafheuvelgroepen van Bockholte en Wehm, Sögel, Spahn, Vrees en Werpeloh, welke tot de Sögelgroep gerekend worden. De uit heideplaggen gevormde grafheuvels werden meestal boven een boomkist opgericht. Rond de kist en de voet van de heuvel werden vaak stenen geplaatst.

Een belangrijke Nederlandse vondst is het graf van de hoofdman van Drouwen.

Grafvondsten

Kenmerkende grafgiften in de mannengraven zijn bronzen kortzwaarden en randbijlen, soms ook zogenaamde Sögeler dolken. De twee kortzwaarden waarnaar het Sögeler type vernoemd is werden in 1898 bij wegwerkzaamheden tussen Spahn en Werpeloh gevonden. Type, vorm en decoratie van de zwaarden tonen een relatie met vondsten uit dezelfde periode in het oosten van Hongarije. Karakteristiek zijn de ronde hechtplaat en de opvallende versieringen met lijngroepen, puntlijnen en slingerbogen. Het Wohlder type, voor het eerst in 1937 beschreven, heeft daarentegen een trapeziumvormige hechtplaat. De kortzwaarden van het Wohlder type zijn afgeleid van Hongaarse kortzwaarden met trapeziumvormige greepplaten. Soms bezitten ze ook enige karakteristieken van het Sögeler type.

De zwaarden werden mogelijk door handwerkers afkomstig uit de Moravisch-Hongaarse regio vervaardigd. Hierop wijzen in de graven en nederzettingen gevonden kleine aardewerken pijpjes die als mondstukjes voor blaasbalgen uitgelegd worden. Deze bewijzen de aanwezigheid van smeltovens. Ze worden gevonden van Hongarije tot in Noordwest-Europa en Noord-Italië. In Oost-Europa zijn dergelijke pijpjes gevonden bij Kalinovka ten noorden van Wolgograd, waar het graf van een bronswerker uit de Poltavkacultuur werd opgegraven.

Ook het gieten van brons is aangetoond. Men kende al een- en tweedelige gietvormen en de verlorenwasmethode.

Uit vuursteen werden pijlpunten en slagstenen vervaardigd. Om vuur te maken gebruikte men naast vuurstenen en pyrietknollen ook de tonderzwam. Pyrietknollen werden in een graf bij Langendamm gevonden. Wetstenen vond men in twee graven bij Sörgel. In het graf van Bargloy vond men negen meest hartvormige pijlpunten uit grijze, bruine, witte en rode vuursteen van 24 tot 4,6 cm lengte. Met name de rode pijlpunt is interessant omdat dit rode Helgolander vuursteen slechts op Helgoland voorkomt.

De Sögel-Wohldeperiode eindigde met het verschijnen van hielbijlen en langere zwaarden van een Brits type.

Bronstijdcultuur in Europa
Nederlandse Bronstijd

redpajama_set_name: RedPajamaWikipedia


A month ago the Philippine Supreme Court promulgated a very interesting decision that has to do with trade merchandising representatives as fixed term and/or project employees. The case is Fontera Brands Phils., Inc. vs. Leonardo Largado and Teotimo Estrellado (G.R. No. 205300, March 18, 2015).
Fonterra contracted the services of Zytron Marketing and Promotions Corp. (Zytron) for the marketing of its milk and dairy products. Pursuant to their contract, Zytron provided Fonterra with Largado (in 2003) and Estrellado (in 2002) as trade merchandising representatives (TMRs).
Sometime in 2006 Fonterra terminated its promotions contract with Zytron and entered into a manpower supply agreement with A.C. Sicat Marketing and Promotional Services (A.C. Sicat). It appears Largado and Estrellado wanted to continue as TMRs for Fonterra and therefore they submitted their job applications with A.C. Sicat. A.C. Sicat hired them for a term of five months.
After the expiration of the 5-month period, Largado and Estrellado's contracts were not renewed. The latter filed a case for illegal dismissal (among other claims) against Fonterra, Zytron and A.C. Sicat but did not assert any claim against Zytron and A.C. Sicat.
The Labor Arbiter found in favor of respondents. The NLRC affirmed the Labor Arbiter. But when the case reached the Court of Appeals the CA said respondents (i.e., complainants in the original case before the LA) were illegally dismissed as early as June 6, 2006 because Zytron was in its view not a legitimate job contractor (thus making Fonterra the real employer and the one liable for respondents' alleged illegal dismissal) and respondents' transfer to A.C. Sicat is tantamount to a completely new engagement by another employer.
2. The SC also found A.C. Sicat to be a legitimate job contractor.
Previous Previous post: Good to Great?


text:
Q: Ruby on Rails - use where with array of object my Post object has post_categories array
Post.post_categories = []

For my all Post object i need to filter posts by post_categories which include 1
like this
Post.all.where :post_categories.include? 1

how can i do
these are models
class Post < ActiveRecord::Base
  has_many :categorizes
  has_many :post_categories, :through=>:categorizes
  accepts_nested_attributes_for :post_categories
end

class PostCategory < ActiveRecord::Base
  has_many :categorizes
  has_many :posts, :through=>:categorizes
end

class Categorize < ActiveRecord::Base
    belongs_to :post
    belongs_to :post_category
end

A: You can use a join and filter on the ID field of the joined table:
Post.joins(:post_categories).where('post_categories.id' => 1)

redpajama_set_name: RedPajamaStackExchange


Hasbro has unveiled a new wave of Marvel Legends figures and other toys - including Chimichanga-themed Deadpool collectibles - at New York Comic-Con 2018.
Here's the full wave of figures, which ranges from the Black Order, to Beta Ray Bill, and Hydra Captain America.
The figures are due for release in March 2019.


text:
Retail clinic growth slows
Christine Blank
Contributing Editor Christine Blank is a freelance writer based in Florida.
The DeLoitte Center for Health Solutions has released a study projecting a slow-down in growth of retail pharmacy clinics across the United States in the next two years.
Even though retail clinics have grown significantly over the past few years, their growth is projected to slow over the next two years, according to a new study.
Although the number of U.S. retail clinics grew 30 percent in 2008, such locations showed a five percent decrease in growth during the first five months of 2009 to around 1,107 clinics, according to the Deloitte Center for Health Solutions in Washington, D.C. "The economic downturn that began in 2007 had a chilling effect on retailers; conditions also were challenging for private investors backing startups in retail medicine," a passage in Deloitte's retail clinic study said.
"Cautious" growth will resume in 2010, according to the study, and the industry will experience a slower 10 percent to 15 percent growth rate from 2010 through 2012.
"The capital markets have said this is a promising sector, but it needs to definite its business model better," he added.
Still, the retail clinic industry is expected to grow more dramatically, at around 30 percent a year in 2013 and 2014, according to the Deloitte study. Deloitte projects a total of approximately 2,500 retail clinics in the U.S. by 2013 and estimates that there will be 3,200 by 2014.
By 2013 and 2014, "Lipitor [and other drugs] will have gone generic, and you have some economic recovery, with unemployment back to around seven percent and consumer spending back some," Keckley said.
In the current market, retail pharmacy chains such as CVS dominate the retail clinic business, accounting for 82 percent of locations. Grocery stores make up 12 percent of the retail clinic business, and big-box retailers account for six percent.
Retail clinic operators MinuteClinic and Take Care continue to dominate the market, with a 72 percent market share between them, the study said.
Community Practice | News | Chain Pharmacy | Health System


The Hydropower Regulatory Efficiency Act of 2013 (H.R. 267) is a bill that was introduced into the United States House of Representatives of the 113th United States Congress on January 15, 2013. It passed the House on February 13, 2013 by a vote of 422-0. President Obama signed the Act into law on August 9, 2013.
This bill was enacted after being signed by the President on August 9, 2013.
This activity took place on a related bill, H.R. 3680 (112th).
This activity took place on a related bill, H.R. 5892 (112th).
H.R. 267 (113th) was a bill in the United States Congress.
Hydropower Regulatory Efficiency Act of 2013, Pub. L. No. 113-23, H.R. 267, 113th Cong..


Dubai Health Authority has kindly given us permission to park our vehicles in their premises only in the designated open sandy area during New Year celebrations (31 st December 2018 and 1 st January 2019). If vehicles are parked in non-designated areas, they will be towed and fined. Let us honor and respect their support and cooperation.


Have you hung out at the Ice Bar at the Chambers or admired ice carvings at local weddings, festivals, or corporate events? Then no doubt you've enjoyed the work of Chris Swarbrick, master ice carver and all-around chill guy. In 1998, he was simply a businessman who purchased an ice mold franchise and called it Ice Occasions. Upon finding that custom-made designs were the real sell, he taught himself how to carve. Now, he routinely wins the St. Paul Winter Carnival and even makes his own ice blocks.
The Hot Dish tracked down Swarbrick during the busy season and got him to answer a few questions for us from his studio in Ellsworth, Wisconsin.
What is your studio like? What tools and equipment do you use?
My studio is in Ellsworth, Wisconsin. I have a large building that was formerly a liquor distributor's building. I have a number of machines that make approximately 70 blocks (of ice) a week. I have three different walk-in freezers to store blocks and create sculptures in. I use a wide variety of tools. I have a computerized router that creates perfect replicas of logos and also makes shot glasses and other products. I have an ice lathe that can turn ice pillars and vases. I use chainsaws and chisels and routers to create the ice carvings. I also have a number of different drainage systems that are needed to display the ice sculptures at events.
What is the craziest or most complicated thing you've carved or created?
The craziest, I would have to say, is one I did for a wedding that was a beaver dam that said "Muskrat Love" on it. Other fun ones for weddings include a Harley engine, a shirtless fireman, and carvings of the family pet. I love doing pieces that are truly unique to each couple.
Most complicated was definitely the Multiblock World Championships in Alaska. You have to make a sculpture out of 10 blocks that are each 4 x 6 x 3 feet. That is roughly 6,000 pounds per block. My team created a 25-foot-high sculpture. Building a 30-foot ice lounge outside of the Fox News Studio for the Fox and Friends Show in the rain was a lot of work as well.
Have you made ice carvings for any celebrities or famous folks?
I have done work for many celebrity parties--some include George W. Bush, Tim Pawlenty, U2, AC/DC, and Kid Rock, to name a few. Local celebs include Bill Austin, Steve Schussler, and just recently I did a party at Rick Kupchella's house.
This week I am getting ready for the St. Paul Winter Carnival. This year they are celebrating 125 years. I am the master carver, so I am in charge of a number of large sculptures in Rice Park. We are building a 125-foot-long wall, a replica of King Tut's Coffinette, a 12-foot semicircular ice bar, and a number of other corporate sponsor sculptures. As well I will be competing in the 20-block competition and the individual two-block competition.


text:
Japan's newly installed environment minister, Shinjiro Koizumi, wants the country to close down nuclear reactors to avoid a repeat of the Fukushima catastrophe in 2011. The comments by the son of former prime minister Junichiro Koizumi, himself an anti-nuclear advocate, are likely to prove controversial in the ruling Liberal Democratic Party, which supports a return to nuclear power under new safety rules imposed after Fukushima. "I would like to study how we will scrap them, not how to retain them," Shinjiro Koizumi said at his first news conference late on Wednesday after he was appointed by Prime Minister Shinzo Abe. Japan's nuclear regulator is overseen by Koizumi's ministry. Three reactors at the Fukushima Daiichi station run by Tokyo Electric Power melted down after being hit by a massive earthquake and tsunami in March 2011, spewing radiation that forced 160,000 people to flee, many never to return. . Most of Japan's nuclear reactors, which before Fukushima supplied about 30 per cent of the country's electricity, are going through a re-licensing process under new safety standards imposed after the disaster highlighted regulatory and operational failings. Japan has six reactors operating at present, a fraction of the 54 units before Fukushima. About 40 per cent of the pre-Fukushima fleet is being decommissioned. Shinjiro Koizumi's father, a popular prime minister now retired from parliament, became a harsh critic of atomic energy after the Fukushima nuclear crisis. Australian Associated Press
https://nnimgt-a.akamaihd.net/transform/v1/crop/frm/silverstone-feed-data/a0f6d955-a605-4007-955c-f5181fcf0cb7.jpg/r0_74_800_526_w1200_h678_fmax.jpg
New Japan minister wants nuclear power end
Japan's new environment minister wants an end to nuclear power after the Fukushima disaster.
Japan's newly installed environment minister, Shinjiro Koizumi, wants the country to close down nuclear reactors to avoid a repeat of the Fukushima catastrophe in 2011.
The comments by the son of former prime minister Junichiro Koizumi, himself an anti-nuclear advocate, are likely to prove controversial in the ruling Liberal Democratic Party, which supports a return to nuclear power under new safety rules imposed after Fukushima.
"I would like to study how we will scrap them, not how to retain them," Shinjiro Koizumi said at his first news conference late on Wednesday after he was appointed by Prime Minister Shinzo Abe.
Japan's nuclear regulator is overseen by Koizumi's ministry.
Three reactors at the Fukushima Daiichi station run by Tokyo Electric Power melted down after being hit by a massive earthquake and tsunami in March 2011, spewing radiation that forced 160,000 people to flee, many never to return. .
Most of Japan's nuclear reactors, which before Fukushima supplied about 30 per cent of the country's electricity, are going through a re-licensing process under new safety standards imposed after the disaster highlighted regulatory and operational failings.
Japan has six reactors operating at present, a fraction of the 54 units before Fukushima.
About 40 per cent of the pre-Fukushima fleet is being decommissioned.
Shinjiro Koizumi's father, a popular prime minister now retired from parliament, became a harsh critic of atomic energy after the Fukushima nuclear crisis.


Having thoughts about squirrels that aren't exclusively about giving them nuts and stuff are not cool and you should talk to wiser cats about it, really.
This entry was posted in Comics and tagged cats, The Fluffy One, Things Happen. Bookmark the permalink.


At the heart of God's covenant with Israel & the Jewish people's historic ties to the land, lies the city of Jerusalem.
Since David's establishment of Jerusalem as the capital of Israel over 3,000 years ago until today, Jerusalem has only been the self declared capital of the Jewish people.
Successive U.S. Administrations have pressured Israel into making dangerous concessions.
In both past and present talks, the unity versus division of Jerusalem has been a core issue. Historically, Jerusalem was only divided from 1948-1967 during the period of Jordanian occupation after Israel's War of Independence. While there are no positive examples of a divided city in modern history—the city of Berlin in particular serves as a stark reminder—the world continues to place Jerusalem on the chopping block all the same.
Now, more than ever, Israel needs Jews and Christians worldwide to take a position by their side. We have the opportunity to turn the tide if we act now. Our mission is to mobilize a grassroots movement of faith-based political advocacy for an undivided Jerusalem as the eternal capital of the State of Israel. The Jerusalem Call is a call to engagement, a call to advocacy, a call to stand with God's promises to the Jewish people, the Land of Israel and the city of Jerusalem.
In a nation of liberty, we are blessed with Representatives in Washington elected to represent our views. It is therefore our duty as citizens to join our voices together and advocate for the safety and security of the only Jewish state in the world, the State of Israel.
You can make a difference for Jerusalem today!
Join Us - It is our goal to launch a grassroots network consisting of informed, empowered, organized and activated movements throughout the nation. We cannot do it without you! Contact us to receive more information about joining us in this effort. Check out our Events page to find Jerusalem Call events in your area. Previous Jerusalem Call's have been held in Dallas, Kerrville and Melissa, TX along with San Diego, CA.
Advocate - Encourage our nation's leaders to keep the promise they made in 1995 by passing the Jerusalem Embassy Act and to finally recognize a united Jerusalem and move our Embassy to Israel's only self declared capital - Jerusalem. Log on here and write your Congressman today on behalf of Jerusalem's future.
Give - Help spread the word across America with your generous financial support.


text:
The focus of GMM (Global Mobilization Ministries) is:
Mentoring Missional Leaders. GMM staff mentor select Missional Leaders in Eastern Africa, particularly in the area of leadership and organizational development. Mentors identify missional leaders who have a confirmed vision for mission in the region and are already leading missional ministries. Mentors guide missional leaders in strategic planning, governance, accountability, and local resource development.
Coaching Missional "Start-Ups". GMM staff work with "start-up" ministries to form a local Board of Directors, register the ministry with the government, development operations systems, governance, and plans for local resource development
Training. GMM staff participate in regional training seminars on topics such as contextualized evangelism and church planting, pastoral ministry, leadership, and resource development.
Business as Mission. GMM staff work with local churches, missional leaders, and local missionaries to identify business platforms that can be used for mission outreach and also generating resources for mission work in the region. "Business as Mission" projects, to date, include a typing and photocopying business, a small "grocery" kiosk selling staple foods, a grain storage and commodities speculating business, a guest house, and a tree farm.
Networking with other key mission leaders in Africa and around the world. GMM staff network with church leaders working in underserved communities in eastern Africa, local mission leaders in the region, churches around the world, and international NGOs and mission organizations in order to broker organizations and resources to advance the work of the Gospel among unreached people and underserved communities.


We take care of your furniture – Repairing and a removing all stains – providing a mobile leather sofa stain repair service.
We provide a comprehensive furniture care and repair package, keeping your leather in the best possible condition ever.
Our aim is to provide the most comprehensive care package for your leather sofa, period !
We don't just use any old products found on the internet or in a local shop or supermarket – We use only the best products in the world, that money can possibly buy – how do we know this – We make them !
With any leather sofa stain repair it's not an easy job to remove stains, this is why you have come to the industry leading experts, as that our daily job, providing cutting edge technology in leather sofa stain repair.
Cleaning leather requires specialist cleaners, that you can't buy in your local shop, these cleaners have been used by us for over 30 years, all items we have designed, go through six years of market research and testing, prior to being used in the public domain. Making sure we only use the best products in the world ever.


Abstract: The effect of an incoming wake on the flow around and heat transfer from the stagnation region of a circular cylinder was studied using direct numerical simulations (DNSs). Four simulations were carried out at a Reynolds number (based on free-stream velocity and cylinder diameter D) of Re = 13200: one two-dimensional (baseline) simulation and three three-dimensional simulations. The three-dimensional simulations comprised a baseline simulation with a uniform incoming velocity field, a simulation in which realistic wake data - generated in a separate precursor DNS - were introduced at the inflow plane and, finally, a simulation in which the turbulent fluctuations were removed from the incoming wake in order to study the effect of the mean velocity deficit on the heat transfer in the stagnation region. In the simulation with realistic wake data, the incoming wake still exhibited the characteristic meandering behaviour of a near-wake. When approaching the regions immediately above and below the stagnation line of the cylinder, the vortical structures from the wake were found to be significantly stretched by the strongly accelerating wall-parallel (circumferential) flow into elongated vortex tubes that became increasingly aligned with the direction of flow. As the elongated streamwise vortical structures impinge on the stagnation region, on one side they transport cool fluid towards the heated cylinder, while on the other side hot fluid is transported away from the cylinder towards the free stream, thereby increasing the heat transfer. The DNS results are compared with various semi-empirical correlations for predicting the augmentation of heat transfer due to free-stream turbulence.
Description: Copyright © 2011 Cambridge University Press.


text:
Stefan Bevier 1958-2018
When he first took a Philharmonia Chorus rehearsal in 1999, the members didn't know what had hit them. The endless repetition, zero tolerance of individual voices sticking out - 'No Führer' as he would say, boundless self-assurance. For some singers it was too much, and they fell by the wayside. But by the time of his appointment as Chorus Master in 2010 there were few doubters remaining. He could produce results like no one else. He inspired each singer to go beyond what they believed possible and to communicate to the world the greatness of the music and the glory of the Chorus. 'Send a message out!' he would say, 'Send a message out!'.
His childhood in Landau prepared the ground. He devoured music as soon as he discovered it, first at the piano, and then singing. Many boys are apprehensive about leaving home for boarding at choir school at the age of 7 or 8, but not Stefan. He could not wait to explore Bach, Handel and Schütz. Later in his teens he tried the tuba, with less than impressive results, and then turned to the double bass. Only four years later he joined the seemingly endless queue to audition for Herbert von Karajan for a single place in the Orchestral Academy of the Berlin Philharmonic Orchestra. He was chosen. So at 19, he joined the double bass section of the Berlin Philharmonic, where he stayed for four years.
He said that those were the best of times. He worshipped Karajan, for his uncompromising pursuit of excellence, and for the way he achieved his results. It was not enough to be a first class player - you had to polish the music hard so that it gleamed. This experience remained the defining influence in Stefan's approach to music making, and he brought those values and methods to every ensemble he prepared.
Many musicians would regard playing in the Berlin Philharmonic as the pinnacle of their careers. But Stefan had wider ambitions. He took conducting lessons from Sergiu Celibidache, singing lessons from Dietrich Fischer-Dieskau and embarked upon a career as a bass-baritone. Even at that time, in his twenties, his was in demand as a vocal coach by world-class singers. And conductors would ask him to prepare choruses for them.
A Stefan Bevier rehearsal was like no other. Tough, absolutely uncompromising, not letting anything go, demanding a degree of commitment and concentration from everyone equal to his own. This was infuriating to some, inspiring to others. Humour was never far from the surface. 'A German joke', he would say,'is no laughing matter'. The music too was never a laughing matter for Stefan. It was always treated with the deepest reverence. The music always came first.
Stefan exuded a warmth and humanity that inspired loyalty, affection and devotion in all his singers. He loved being with them. It was impossible to separate his personality from his music making - they were so beautifully intertwined. He spoke of the music conveying an overwhelming human spirit. That is the message he sent out.


text:
Q: Django Return String Field Instead of ID on Foreign Key I have a game object that includes data from the 'Word' model. Everything works great, besides not being able to get the string of the user instead of the ID. A lot of searches have mentioned that the __str__(self): return (self.player.name) should work, but I still get an ID in as 'player'
example of data:
[ { "game": 1, "turn": 1, "player": 1, "word": "test", "score": 18 }, { "game": 1, "turn": 2, "player": 2, "word": "test", "score": 12 } ]
would like to see:
[ { "game": 1, "turn": 1, "player": 'Bob', "word": "trend", "score": 18 }, { "game": 1, "turn": 2, "player": 'Sarah', "word": "test", "score": 12 } ]
models.py
class User(models.Model):

    name = models.CharField(max_length=255)
    email = models.EmailField()

class Word(models.Model):
    game = models.ForeignKey(Game, on_delete=models.CASCADE)
    turn = models.IntegerField()
    player = models.ForeignKey(User, on_delete=models.CASCADE)
    word = models.CharField(max_length=255)
    score = models.IntegerField()

    def __str__(self):
        return str(self.player.name)

serializers.py
class WordSerializer(serializers.ModelSerializer):
    class Meta:

        model = Word
        fields = ['game', 'turn', 'player', 'word', 'score']

class GameSerializer(serializers.ModelSerializer):

    data = serializers.SerializerMethodField(read_only=True)

    class Meta:

        model = Game
        fields = ['id', 'date' ,'data']

        def get_data(self, obj):
            return WordSerializer(obj.word, many=True).data

A: The table Word save the player id , if you want to customize the response you can do it on the serializer level
class WordSerializer(serializers.ModelSerializer):
    player_name = serializers.CharField(source='player.name')

    class Meta:

        model = Word
        fields = ['game', 'turn', 'player', 'player_name',  'word', 'score']


Vertical versus Horizontal delivery of health services: The never ending debate!
Some studies have questioned the rationale behind the decision by Government of Ethiopia to introduce the pneumonia vaccine PCV 10. The reasons that contributed to this decision were found to be political prioritization, availability of the GAVI funding and "the desire to address the burden of disease and seize the GAVI funding".  This is an example of how advocacy and financing around an intervention can result in increased coverage of a pharmaceutical product and become the center of focus for country governments. What if there wasn't any GAVI funding? Would the childhood pneumonia death still be lowered in Ethiopia? Debatable!
In a generation where most of us expect a magic pill to resolve most issues, the reality is pretty farfetched. Donors and international agencies come with stipulated funding for certain diseases and begin implementation, often overlooking the structural challenges that the health system faces especially in developing countries. So the vertical program can be used as a short term strategy alongside the efforts to strengthen the health care system with a more integrated approach. There is no evidence on why a vertical and horizontal program cannot co-exist. Studies have shown that it's not necessary all the time for a program to be completely vertical or completely horizontal.
A mixed method approach could be used, making use of the policies from vertical programs under the leadership and management of horizontal programs for a more sustainable outcome. There is no standard golden rule to the application of a particular program for a disease intervention. In the absence of evidence on which are the most effective models, countries could have their own tailored and custom made models incorporating the administrative expertise of a horizontal model and operational expertise of a vertical program. There needs to be a system in place that can combine and utilize the expertise of both the programs. This system also should have a mechanism such that the donors also help in building a stronger yet sustainable health system saving a maximum number of lives.
 Tkatchenko-Schmidt E, Renton A, Gevorgyan R, Davydenko L, Atun R. Prevention of HIV/AIDS among injecting drug users in Russia: Opportunities and barriers to scaling-up of harm reduction programmes. Health Policy. 2008 Feb 1;85(2):162–71.
 Tkatchenko-Schmidt E, Atun R, Wall M, Tobi P, Schmidt J, Renton A. Why do health systems matter? Exploring links between health systems and HIV response: a case study from Russia. Health Policy Plan. 2010 Jul 1;25(4):283–91.
 Shiffman J. Has donor prioritization of HIV/AIDS displaced aid for other health issues? Health Policy Plan. 2008 Mar 1;23(2):95–100.
 Berer M. HIV/AIDS, sexual and reproductive health: intersections and implications for national programmes. Health Policy Plan. 2004 Oct 1;19(suppl 1):i62–70.
 Unger J-P, De Paepe P, Green A. A code of best practice for disease control programmes to avoid damaging health care services in developing countries. Int J Health Plann Manage. 2003 Dec;18 Suppl 1:S27–39.
 De Maeseneer J, van Weel C, Egilman D, Mfenyana K, Kaufman A, Sewankambo N. Strengthening primary care: addressing the disparity between vertical and horizontal investment. Br J Gen Pract. 2008 Jan 1;58(546):3–4.
Next What is Global Health? Interview with Flemming Konradsen.


Head & Shoulders presents, in one of its Super Bowl 2019 commercials, entrepreneur Michael Swanson from Decatur, Georgia, as a "headstrong business owner" for having open a goat rental business.
The spot shows some of the 200 goats Michael has and reveals that, when he started his goat rental business, his wife thought he was crazy. "But Michael is a headstrong business owner and now his wife's eating her words while his goats are eating everything else," says the voiceover, who is followed by Michael urging viewers to call him the next time they need their land cleared instead of calling a landscaper. "No job too big, no job too small, and no question asked" he adds, while his goats are seen clearing quite many things, from a neighbor's lawn to a football field, to a Christmas tree thrown away in a garbage bin, to some items labeled as "top-secret".
The commercial ends with the voiceover saying that "Head&Shoulders made this Super Bowl commercial so Michael could stay headstrong".
The Georgia-based goat rental company, founded in 2009 by Michael and Kristin Swanson, is only one of the unique local companies highlighted by Head&Shoulders in its three Super Bowl LIII ads. The other two are KC Weddings 2 Go, a mobile wedding service based out of Kansas City, Missouri, and Smash Therapy in Houston, which provides customers a safe place to vent and smash things.


It's no picnic!Jun. 29, 1977USA89 Min.
Sleazy scam artist Joan Collins tries to sell phony real estate deals down in the Florida everglades. What she and her unsuspecting buyers don't know is the area has been taken over by giant ants!


text:
Edward Norton Movies
Lionel Essrog, a private detective living with Tourette syndrome, ventures to solve the murder of his mentor and best friend — a mystery that carries him from the gin-soaked jazz…
Genre: Best Thriller 2019, Crime, Drama, In theatres
Comedy Central Roast of Bruce Willis
Bruce Willis goes from "Die Hard" to dead on arrival as some of the biggest names in entertainment serve up punches of their own to Hollywood's go-to action star. And…
In the future, an outbreak of canine flu leads the mayor of a Japanese city to banish all dogs to an island that's a garbage dump. The outcasts must soon…
Country: Germany, United States of America
Genre: Adventure, Animation, Best 2018, Best Animated 2018, Best Fantasy & Sci-fi 2018, Comedy, Oscar 2019
Sausage Party, the first R-rated CG animated movie, is about one sausage leading a group of supermarket products on a quest to discover the truth about their existence and what…
Country: Canada, United States of America
Genre: Adventure, Animation, Best Animated 2016, Best Comedy 2016, Comedy, Fantasy
Saturday Night Live: 40th Anniversary Special
A three-hour prime-time special celebrating SNL 's fortieth year on the air.
Birdman or (The Unexpected Virtue of Ignorance
A fading actor best known for his portrayal of a popular superhero attempts to mount a comeback by appearing in a Broadway play. As opening night approaches, his attempts to…
Genre: Best 2014, Comedy, Drama
The Grand Budapest Hotel tells of a legendary concierge at a famous European hotel between the wars and his friendship with a young employee who becomes his trusted protégé. The…
Country: Germany, United Kingdom, United States of America
A feature documentary on formative personal and professional experiences in the life of writer J.D. Salinger
New CIA operative, Aaron Cross experiences life-or-death stakes that have been triggered by the previous actions of Jason Bourne.
Set on an island off the coast of New England in the summer of 1965, Moonrise Kingdom tells the story of two twelve-year-olds who fall in love, make a secret…
Genre: Best 2012, Comedy, Drama, Romance
The heroic story of a dictator who risks his life to ensure that democracy would never come to the country he so lovingly oppressed.
An Ivy League professor returns home, where his pot-growing twin brother has concocted a plan to take down a local drug lord.
Set in a world where the concept of lying doesn't exist, a loser changes his lot when he invents lying and uses it to get ahead.
Pride and Glory
A saga centered on a multi-generational family of New York City Police officers. The family's moral codes are tested when Ray Tierney, investigates a case that reveals an incendiary police…
Scientist Bruce Banner scours the planet for an antidote to the unbridled force of rage within him: the Hulk. But when the military masterminds who dream of exploiting his powers…
Genre: Action, Adventure, Best 2008, Marvel, Science Fiction
A British medical doctor fights a cholera outbreak in a small Chinese village, while also being trapped at home in a loveless marriage to an unfaithful wife.
Country: Canada, China, United States of America
Genre: Best 2006, Romance
With his eye on a lovely aristocrat, a gifted illusionist named Eisenheim uses his powers to win her away from her betrothed, a crowned prince. But Eisenheim's scheme creates tumult…
Genre: Best 2005, Drama, Fantasy, Romance, Thriller
After his wife dies, a blacksmith named Balian is thrust into royalty, political intrigue and bloody holy wars during the Crusades.
Country: Germany, Morocco, Spain, United Kingdom, United States of America
Genre: Action, Adventure, Best 2005, Drama, History, War
Two master thieves (Brosnan and Hayek) are finally retiring after one last succesful mission. Residing in their own tropical paradise, their old nemesis, FBI Agent Stan P. Lloyd shows up…
Charlie Croker pulled off the crime of a lifetime. The one thing that he didn't plan on was being double-crossed. Along with a drop-dead gorgeous safecracker, Croker and his team…
Country: United Kingdom, United States of America
Genre: Action, Best 2003, Crime
In New York City in the days following the events of 9/11, Monty Brogan is a convicted drug dealer about to start a seven-year prison sentence, and his final hours…
Genre: Best 2002, Crime, Drama
Former FBI Agent Will Graham, who was once almost killed by the savage Hannibal 'The Cannibal' Lecter, now has no choice but to face him again, as it seems Lecter…
Genre: Best 2002, Crime, Drama, Horror, Thriller
"Frida" chronicles the life Frida Kahlo shared unflinchingly and openly with Diego Rivera, as the young couple took the art world by storm. From her complex and enduring relationship with…
Country: Canada, Mexico, United States of America
Genre: Best 2002, Drama, Romance
Death to Smoochy
Tells the story of Rainbow Randolph, the corrupt, costumed star of a popular children's TV show, who is fired over a bribery scandal and replaced by squeaky-clean Smoochy, a puffy…
Genre: Comedy, Crime, Drama, Thriller
An aging thief hopes to retire and live off his ill-gotten wealth when a young kid convinces him into doing one last heist.
Genre: Action, Best 2001, Crime, Mystery, Thriller
A ticking-time-bomb insomniac and a slippery soap salesman channel primal male aggression into a shocking new form of therapy. Their concept catches on, with underground "fight clubs" forming in every…
Genre: Best Dramas, Best Mystery, Best Thriller, Drama
Derek Vineyard is paroled after serving 3 years in prison for killing two thugs who tried to break into/steal his truck. Through his brother, Danny Vineyard's narration, we learn that…
Genre: Best Crime, Best Dramas, Best Independent, Drama
Everyone Says I Love You
A New York girl sets her father up with a beautiful woman in a shaky marriage while her half sister gets engaged.
Genre: Comedy, Music, Romance
The People vs. Larry Flynt
Larry Flynt is the hedonistically obnoxious, but indomitable, publisher of Hustler magazine. The film recounts his struggle to make an honest living publishing his girlie magazine and how it changes…
An arrogant, high-powered attorney takes on the case of a poor altar boy found running away from the scene of the grisly murder of the bishop who has taken him…


Check out all of the names of the Leander High School alumni that attended high school in Leander that are listed above. Registering will allow you to join the directory.	We also encourage you to keep up to date on news and reconnect with Leander High School alumni.


How on earth did Sam Russell think that launching a dating site called "Where White People Meet" was not going to get him branded as a racist? Not to worry, he says. It's OK: he dated a black woman once.
Nope, Sam Russell is totally Not Racist.


text:
Drug Information, Search Drugs by Name, Generic and Brand Natural Products, Search Drug Interactions Pill Identifier
Abbreviations Audio 3D Models Common Medical Tests Figures First Aid Images Infographics Lab Tests Medical Terms The One-Page Manual of Health Pronunciations Quizzes Self-Assessment Tools Tables Videos Weights & Measures Podcasts
Fundamentals /
Rehabilitation /
Rehabilitation for Blindness /
Overview of Rehabilitation
Occupational Therapy (OT)
Treatment of Pain and Inflammation
Rehabilitation for Blindness
Rehabilitation After a Brain Injury
Rehabilitation for Heart Disorders
Rehabilitation After a Hip Fracture
Rehabilitation After Limb Amputation
Rehabilitation for Speech Disorders
Rehabilitation After a Spinal Injury
Rehabilitation for Other Disorders
Do-Not-Resuscitate (DNR) Orders
A do-not-resuscitate (DNR) order is a document placed in a person's medical record by a doctor. It informs the medical staff at a hospital that cardiopulmonary resuscitation (CPR) should not be attempted if a person's heart and/or breathing stops. CPR is often followed by more drastic measures such as use of electric shocks to the heart or insertion of a breathing tube; a DNR order stops these measures as well. When administered near the end of life, what is the success rate of CPR?
Extremely low
Moderately successful
Successful most of the time
Nearly always successful
Salvador E. Portugal
, DO, New York University, Robert I. Grossman School of Medicine
Last full review/revision Aug 2021
Rehabilitation Overview of Rehabilitation Rehabilitation services are needed by people who have lost the ability to function normally, often because of an injury, a stroke, an infection, a tumor, surgery, or a progressive disorder ... read more for people who are blind depends on whether blindness was present at birth (congenital) or at a very young age or whether it developed later in life. Children who are born blind or who become blind at a very young age usually receive special education about how to function without sight from the beginning. Thus, most of them become well-adjusted. However, people who become blind later in life must learn new ways of dealing with daily living, such as how to feed themselves. Usually, people are taught the clock method. The dinner plate is pictured as a clock, and the meat is always placed at 8 o'clock, with the vegetable at 4 o'clock and the beverage at 1 o'clock.
Therapists also teach people to rely more on their other senses and to use devices for the blind, such as Braille. The goal is to help people function as well as possible, become independent, and regain their self-confidence.
Blind people also have to learn how to use a cane, and family members and other caregivers must learn how to walk with them. Family members are instructed not to change the location of furniture or other objects without telling the blind person.
Learning how to use a seeing eye dog and Braille come much later. In the interim, audio books help the blind participate in reading.
The following English-language resources may be useful. Please note that THE MANUAL is not responsible for the content of these resources.
American Foundation for the Blind: Blindness and Low Vision: Information about the causes of vision loss and resources for people adjusting to vision loss, including tips for adapting the home and daily living
Helen Keller Services for the Blind: Resources and local programming contact information for individuals who are blind, have low vision, or combined hearing and vision loss
The Older Driver
Somatic Symptom and Related Disorders in Children


text:
JP EN 中( 简 / 繁 ) Contact
About GDA
Previous Activities
Participation[Top]
Outline[Top]
Judging Committee
Application Guidelines[Top]
Regulations[Top]
Using G Mark
Using G Mark[Top]
Promotions[Top]
Other Cooperation
Focused issues
Interview with Winners
GOOD DESIGN COMPANIES
Archives[Top]
News [Top]
JAPANESE / ENGLISH / 簡体中文 / 繁体中文
Year awarded
- 2020 2019 2018 2017 2016 2015 2014 2013 2012 2011 2010 2009 2008 2007 2006 2005 2004 2003 2002 2001 2000 1999 1998 1997 1996 1995 1994 1993 1992 1991 1990 1989 1988 1987 1986 1985 1984 1983 1982 1981 1980 1979 1978 1977 1976 1975 1974 1973 1972 1971 1970 1969 1968 1967 1966 1965 1964 1963 1962 1961 1960 1959 1958 1957 To - 2020 2019 2018 2017 2016 2015 2014 2013 2012 2011 2010 2009 2008 2007 2006 2005 2004 2003 2002 2001 2000 1999 1998 1997 1996 1995 1994 1993 1992 1991 1990 1989 1988 1987 1986 1985 1984 1983 1982 1981 1980 1979 1978 1977 1976 1975 1974 1973 1972 1971 1970 1969 1968 1967 1966 1965 1964 1963 1962 1961 1960 1959 1958 1957
Special Award
Good Design Grand Award Good Design Gold Award Good Focus Award [New Business Design] Good Focus Award [Design of Technique & Tradition] Good Focus Award [Design of Community Development] Good Focus Award [Disaster Prevention & Recovery Design] Good Design Best100 Good Design Long Life Design Award --- Good Design Special Award [Design for the Future] Good Design Special Award [Design of Production Development] Good Design Special Award [Design for Community Development] Good Design Special Award [Disaster Recovery Design] Global Design 2013 Good Design Long Life Design Special Award Good Design Sustainable Design Award Good Design Frontier Design Award Good Design Prize of Small and Medium Enterprises Good Design Prize of the Japan Chamber of Commerce and Industry Good Design Life-Scape Design Award Universal Design Prize Ecology Design Prize Interaction Design Prize Good Design Special Award of Judging Committee Chairman Design Management Prize Media Design Prize Good Design Presentation Special Prize Urban Design Prize Annual Management Prize 20th Anniversary Prize for Small and Medium Enterprises 20th Anniversary Prize of Minister of Ministry of International Trade and Industry 20th Anniversary Prize of International Trade Administration Bureau 20th Anniversary Prize for Long-selling Prize for Interface Prize for Foreign Products Prize for Items in Harmony with the Landscape Prize for Social-Conscious Products JIDPO Special Prize -Prize for Instruction of Domestic Media Equipment- JIDPO Special Prize -Prize for Ecology-Conscious Products-
Country / Region All Australia Austria Belgium Brazil Brunei Cambodia Canada China Croatia Cyprus Denmark Finland France Germany Hong Kong India Indonesia Ireland Israel Italy Japan Laos Latvia Liechtenstein Malaysia Myanmar Netherlands Norway Philippines Portugal Russia Singapore Slovenia South Korea Spain Sweden Switzerland Taiwan Thailand Turkey U.K. U.S.A. Vietnam Yugoslavia
Year awarded 2020 2019 2018 2017 2016 2015 2014 2013 2012 2011 2010 2009 2008 2007 2006 2005 2004 2003 2002 2001 2000 1999 1998 1997 1996 1995 1994 1993 1992 1991 1990 1989 1988 1987 1986 1985 1984 1983 1982 1981 1980 1979 1978 1977 1976 1975 1974 1973 1972 1971 1970 1969 1968 1967 1966 1965 1964 1963 1962 1961 1960 1959 1958 1957
Special Award Good Design Grand Award Good Design Gold Award Good Focus Award [New Business Design] Good Focus Award [Design of Technique & Tradition] Good Focus Award [Design of Community Development] Good Focus Award [Disaster Prevention & Recovery Design] Good Design Best100 Good Design Long Life Design Award --- Good Design Special Award [Design for the Future] Good Design Special Award [Design of Production Development] Good Design Special Award [Design for Community Development] Good Design Special Award [Disaster Recovery Design] Global Design 2013 Good Design Long Life Design Special Award Good Design Sustainable Design Award Good Design Frontier Design Award Good Design Prize of Small and Medium Enterprises Good Design Prize of the Japan Chamber of Commerce and Industry Good Design Life-Scape Design Award Universal Design Prize Ecology Design Prize Interaction Design Prize Good Design Special Award of Judging Committee Chairman Design Management Prize Media Design Prize Good Design Presentation Special Prize Urban Design Prize Annual Management Prize 20th Anniversary Prize for Small and Medium Enterprises 20th Anniversary Prize of Minister of Ministry of International Trade and Industry 20th Anniversary Prize of International Trade Administration Bureau 20th Anniversary Prize for Long-selling Prize for Interface Prize for Foreign Products Prize for Items in Harmony with the Landscape Prize for Social-Conscious Products JIDPO Special Prize -Prize for Instruction of Domestic Media Equipment- JIDPO Special Prize -Prize for Ecology-Conscious Products-
Display detailed search
(C)JDP All rights reserved.
Award-winning item
Residential Block [Solar Town Fuchu]
Aiba Construction
Block and community development
Masamitsu Nozawa Building Workshop (Japan)
Aiba Construction (Japan)
Outline of Good Design Award winners
Outline of Good Design Award winners 2020
Outline* The shown information is the one as of the awarded date and might has been changed.
The solar town Fuchu is made up of 16 residential houses.Realizing environmental-friendly housing with long life and maximum use of natural energy were the must, but also we wanted residents to enjoy nature to maximum.Houses were arranged along sides of a common space called a garden path which were filled with abundant greeneries, and as a result, the place became the gathering spot to all.
Toshio Mukaegawa, Aiba Construction
Masamitsu Nozawa, Masamitsu Nozawa Building Workshop
http://noz-bw.com/archives/works/stf
This project demonstrated the potential for a housing complex comprising single dwellings to create an enriching environment. While each house has a simple rectangular shape, they are laid out on their long, thin sites at a slight angle, forming irregularly shaped garden paths called commons in the middle. Simple, yet achieving maximum effectiveness, this design technique is admirable in its own right, but one should also not overlook the fact that easement—a form of private land whose public use is permitted, creating an area that is neither entirely private nor fully public—functions effectively here. Almost a decade since Solar Town Fuchu was built, its abundant greenery and the sense of community that has been fostered therein speaks volumes about the success of this project.
Good Design Award is operated by Japan Institute of Design Promotion.


text:
More info on James Shavick
James Shavick: Wikis
James Shavick is a Canadian film and television producer, currently the CEO of Shavick Entertainment. He is married to Joy MacPhail, a partner in Shavick Entertainment and a former leader of the British Columbia New Democratic Party.
James Shavick at the Internet Movie Database
Categories: Canadian film producers | Canadian television producers | Living people | Canadian people stubs


text:
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "content/child/fileapi/webfilesystem_impl.h"

#include "base/bind.h"
#include "base/lazy_instance.h"
#include "base/logging.h"
#include "base/message_loop/message_loop_proxy.h"
#include "base/strings/utf_string_conversions.h"
#include "base/synchronization/waitable_event.h"
#include "base/threading/thread_local.h"
#include "content/child/child_thread.h"
#include "content/child/fileapi/file_system_dispatcher.h"
#include "content/child/fileapi/webfilewriter_impl.h"
#include "content/common/fileapi/file_system_messages.h"
#include "third_party/WebKit/public/platform/WebFileInfo.h"
#include "third_party/WebKit/public/platform/WebFileSystemCallbacks.h"
#include "third_party/WebKit/public/platform/WebString.h"
#include "third_party/WebKit/public/platform/WebURL.h"
#include "url/gurl.h"
#include "webkit/child/worker_task_runner.h"
#include "webkit/common/fileapi/directory_entry.h"
#include "webkit/common/fileapi/file_system_util.h"
#include "webkit/glue/webkit_glue.h"

using WebKit::WebFileInfo;
using WebKit::WebFileSystemCallbacks;
using WebKit::WebFileSystemEntry;
using WebKit::WebString;
using WebKit::WebURL;
using WebKit::WebVector;
using webkit_glue::WorkerTaskRunner;

namespace content {

namespace {

base::LazyInstance<base::ThreadLocalPointer<WebFileSystemImpl> >::Leaky
    g_webfilesystem_tls = LAZY_INSTANCE_INITIALIZER;

class WaitableCallbackResults {
 public:
  static WaitableCallbackResults* MaybeCreate(
      const WebFileSystemCallbacks& callbacks) {
    if (callbacks.shouldBlockUntilCompletion())
      return new WaitableCallbackResults;
    return NULL;
  }
  ~WaitableCallbackResults() {}

  void SetResultsAndSignal(const base::Closure& results_closure) {
    results_closure_ = results_closure;
    event_->Signal();
  }

  void WaitAndRun() {
    event_->Wait();
    DCHECK(!results_closure_.is_null());
    results_closure_.Run();
  }

 private:
  WaitableCallbackResults() : event_(new base::WaitableEvent(true, false)) {}

  base::WaitableEvent* event_;
  base::Closure results_closure_;
  DISALLOW_COPY_AND_ASSIGN(WaitableCallbackResults);
};

void DidReceiveSnapshotFile(int request_id) {
  if (ChildThread::current())
    ChildThread::current()->Send(
        new FileSystemHostMsg_DidReceiveSnapshotFile(request_id));
}

int CurrentWorkerId() {
  return WorkerTaskRunner::Instance()->CurrentWorkerId();
}

template <typename Method, typename Params>
void CallDispatcherOnMainThread(
    base::MessageLoopProxy* loop,
    Method method, const Params& params,
    scoped_ptr<WaitableCallbackResults> waitable_results) {
  scoped_ptr<WaitableCallbackResults> null_waitable;
  if (!loop->RunsTasksOnCurrentThread()) {
    loop->PostTask(FROM_HERE,
                   base::Bind(&CallDispatcherOnMainThread<Method, Params>,
                              make_scoped_refptr(loop), method, params,
                              base::Passed(&null_waitable)));
    if (!waitable_results)
      return;
    waitable_results->WaitAndRun();
  }
  if (!ChildThread::current() ||
      !ChildThread::current()->file_system_dispatcher())
    return;

  DCHECK(!waitable_results);
  DispatchToMethod(ChildThread::current()->file_system_dispatcher(),
                   method, params);
}

// Run WebFileSystemCallbacks's |method| with |params|.
template <typename Method, typename Params>
void RunCallbacks(int callbacks_id, Method method, const Params& params) {
  WebFileSystemImpl* filesystem =
      WebFileSystemImpl::ThreadSpecificInstance(NULL);
  if (!filesystem)
    return;
  WebFileSystemCallbacks callbacks =
      filesystem->GetAndUnregisterCallbacks(callbacks_id);
  DispatchToMethod(&callbacks, method, params);
}

void DispatchResultsClosure(int thread_id, int callbacks_id,
                            WaitableCallbackResults* waitable_results,
                            const base::Closure& results_closure) {
  if (thread_id != CurrentWorkerId()) {
    if (waitable_results) {
      waitable_results->SetResultsAndSignal(results_closure);
      return;
    }
    WorkerTaskRunner::Instance()->PostTask(thread_id, results_closure);
    return;
  }
  results_closure.Run();
}

template <typename Method, typename Params>
void CallbackFileSystemCallbacks(
    int thread_id, int callbacks_id,
    WaitableCallbackResults* waitable_results,
    Method method, const Params& params) {
  DispatchResultsClosure(
      thread_id, callbacks_id, waitable_results,
      base::Bind(&RunCallbacks<Method, Params>, callbacks_id, method, params));
}

//-----------------------------------------------------------------------------
// Callback adapters. Callbacks must be called on the original calling thread,
// so these callback adapters relay back the results to the calling thread
// if necessary.

void OpenFileSystemCallbackAdapter(
    int thread_id, int callbacks_id,
    WaitableCallbackResults* waitable_results,
    const std::string& name, const GURL& root) {
  CallbackFileSystemCallbacks(
      thread_id, callbacks_id, waitable_results,
      &WebFileSystemCallbacks::didOpenFileSystem,
      MakeTuple(UTF8ToUTF16(name), root));
}

void ResolveURLCallbackAdapter(
    int thread_id, int callbacks_id,
    WaitableCallbackResults* waitable_results,
    const fileapi::FileSystemInfo& info,
    const base::FilePath& file_path, bool is_directory) {
  base::FilePath normalized_path(
      fileapi::VirtualPath::GetNormalizedFilePath(file_path));
  CallbackFileSystemCallbacks(
      thread_id, callbacks_id, waitable_results,
      &WebFileSystemCallbacks::didResolveURL,
      MakeTuple(UTF8ToUTF16(info.name), info.root_url,
                static_cast<WebKit::WebFileSystemType>(info.mount_type),
                normalized_path.AsUTF16Unsafe(), is_directory));
}

void StatusCallbackAdapter(int thread_id, int callbacks_id,
                           WaitableCallbackResults* waitable_results,
                           base::PlatformFileError error) {
  if (error == base::PLATFORM_FILE_OK) {
    CallbackFileSystemCallbacks(
        thread_id, callbacks_id, waitable_results,
        &WebFileSystemCallbacks::didSucceed, MakeTuple());
  } else {
    CallbackFileSystemCallbacks(
        thread_id, callbacks_id, waitable_results,
        &WebFileSystemCallbacks::didFail,
        MakeTuple(fileapi::PlatformFileErrorToWebFileError(error)));
  }
}

void ReadMetadataCallbackAdapter(int thread_id, int callbacks_id,
                                 WaitableCallbackResults* waitable_results,
                                 const base::PlatformFileInfo& file_info) {
  WebFileInfo web_file_info;
  webkit_glue::PlatformFileInfoToWebFileInfo(file_info, &web_file_info);
  CallbackFileSystemCallbacks(
      thread_id, callbacks_id, waitable_results,
      &WebFileSystemCallbacks::didReadMetadata,
      MakeTuple(web_file_info));
}

void ReadDirectoryCallbackAdapater(
    int thread_id, int callbacks_id, WaitableCallbackResults* waitable_results,
    const std::vector<fileapi::DirectoryEntry>& entries,
    bool has_more) {
  WebVector<WebFileSystemEntry> file_system_entries(entries.size());
  for (size_t i = 0; i < entries.size(); i++) {
    file_system_entries[i].name =
        base::FilePath(entries[i].name).AsUTF16Unsafe();
    file_system_entries[i].isDirectory = entries[i].is_directory;
  }
  CallbackFileSystemCallbacks(
      thread_id, callbacks_id, waitable_results,
      &WebFileSystemCallbacks::didReadDirectory,
      MakeTuple(file_system_entries, has_more));
}

void DidCreateFileWriter(
    int callbacks_id,
    const GURL& path,
    WebKit::WebFileWriterClient* client,
    base::MessageLoopProxy* main_thread_loop,
    const base::PlatformFileInfo& file_info) {
  WebFileSystemImpl* filesystem =
      WebFileSystemImpl::ThreadSpecificInstance(NULL);
  if (!filesystem)
    return;

  WebFileSystemCallbacks callbacks =
      filesystem->GetAndUnregisterCallbacks(callbacks_id);

  if (file_info.is_directory || file_info.size < 0) {
    callbacks.didFail(WebKit::WebFileErrorInvalidState);
    return;
  }
  WebFileWriterImpl::Type type =
      callbacks.shouldBlockUntilCompletion() ?
          WebFileWriterImpl::TYPE_SYNC : WebFileWriterImpl::TYPE_ASYNC;
  callbacks.didCreateFileWriter(
      new WebFileWriterImpl(path, client, type, main_thread_loop),
      file_info.size);
}

void CreateFileWriterCallbackAdapter(
    int thread_id, int callbacks_id,
    WaitableCallbackResults* waitable_results,
    base::MessageLoopProxy* main_thread_loop,
    const GURL& path,
    WebKit::WebFileWriterClient* client,
    const base::PlatformFileInfo& file_info) {
  DispatchResultsClosure(
      thread_id, callbacks_id, waitable_results,
      base::Bind(&DidCreateFileWriter, callbacks_id, path, client,
                 make_scoped_refptr(main_thread_loop), file_info));
}

void DidCreateSnapshotFile(
    int callbacks_id,
    base::MessageLoopProxy* main_thread_loop,
    const base::PlatformFileInfo& file_info,
    const base::FilePath& platform_path,
    int request_id) {
  WebFileSystemImpl* filesystem =
      WebFileSystemImpl::ThreadSpecificInstance(NULL);
  if (!filesystem)
    return;

  WebFileSystemCallbacks callbacks =
      filesystem->GetAndUnregisterCallbacks(callbacks_id);

  WebFileInfo web_file_info;
  webkit_glue::PlatformFileInfoToWebFileInfo(file_info, &web_file_info);
  web_file_info.platformPath = platform_path.AsUTF16Unsafe();
  callbacks.didCreateSnapshotFile(web_file_info);

  // TODO(michaeln,kinuko): Use ThreadSafeSender when Blob becomes
  // non-bridge model.
  main_thread_loop->PostTask(
      FROM_HERE, base::Bind(&DidReceiveSnapshotFile, request_id));
}

void CreateSnapshotFileCallbackAdapter(
    int thread_id, int callbacks_id,
    WaitableCallbackResults* waitable_results,
    base::MessageLoopProxy* main_thread_loop,
    const base::PlatformFileInfo& file_info,
    const base::FilePath& platform_path,
    int request_id) {
  DispatchResultsClosure(
      thread_id, callbacks_id, waitable_results,
      base::Bind(&DidCreateSnapshotFile, callbacks_id,
                 make_scoped_refptr(main_thread_loop),
                 file_info, platform_path, request_id));
}

}  // namespace

//-----------------------------------------------------------------------------
// WebFileSystemImpl

WebFileSystemImpl* WebFileSystemImpl::ThreadSpecificInstance(
    base::MessageLoopProxy* main_thread_loop) {
  if (g_webfilesystem_tls.Pointer()->Get() || !main_thread_loop)
    return g_webfilesystem_tls.Pointer()->Get();
  WebFileSystemImpl* filesystem = new WebFileSystemImpl(main_thread_loop);
  if (WorkerTaskRunner::Instance()->CurrentWorkerId())
    WorkerTaskRunner::Instance()->AddStopObserver(filesystem);
  return filesystem;
}

void WebFileSystemImpl::DeleteThreadSpecificInstance() {
  DCHECK(!WorkerTaskRunner::Instance()->CurrentWorkerId());
  if (g_webfilesystem_tls.Pointer()->Get())
    delete g_webfilesystem_tls.Pointer()->Get();
}

WebFileSystemImpl::WebFileSystemImpl(base::MessageLoopProxy* main_thread_loop)
    : main_thread_loop_(main_thread_loop),
      next_callbacks_id_(0) {
  g_webfilesystem_tls.Pointer()->Set(this);
}

WebFileSystemImpl::~WebFileSystemImpl() {
  g_webfilesystem_tls.Pointer()->Set(NULL);
}

void WebFileSystemImpl::OnWorkerRunLoopStopped() {
  delete this;
}

void WebFileSystemImpl::openFileSystem(
    const WebKit::WebURL& storage_partition,
    WebKit::WebFileSystemType type,
    bool create,
    WebFileSystemCallbacks callbacks) {
  int callbacks_id = RegisterCallbacks(callbacks);
  WaitableCallbackResults* waitable_results =
      WaitableCallbackResults::MaybeCreate(callbacks);
  CallDispatcherOnMainThread(
      main_thread_loop_.get(),
      &FileSystemDispatcher::OpenFileSystem,
      MakeTuple(GURL(storage_partition),
                static_cast<fileapi::FileSystemType>(type),
                0 /* size (not used) */, create,
                base::Bind(&OpenFileSystemCallbackAdapter,
                           CurrentWorkerId(), callbacks_id,
                           base::Unretained(waitable_results)),
                base::Bind(&StatusCallbackAdapter,
                           CurrentWorkerId(), callbacks_id,
                           base::Unretained(waitable_results))),
      make_scoped_ptr(waitable_results));
}

void WebFileSystemImpl::resolveURL(
    const WebKit::WebURL& filesystem_url,
    WebFileSystemCallbacks callbacks) {
  int callbacks_id = RegisterCallbacks(callbacks);
  WaitableCallbackResults* waitable_results =
      WaitableCallbackResults::MaybeCreate(callbacks);
  CallDispatcherOnMainThread(
      main_thread_loop_.get(),
      &FileSystemDispatcher::ResolveURL,
      MakeTuple(GURL(filesystem_url),
                base::Bind(&ResolveURLCallbackAdapter,
                           CurrentWorkerId(), callbacks_id,
                           base::Unretained(waitable_results)),
                base::Bind(&StatusCallbackAdapter,
                           CurrentWorkerId(), callbacks_id,
                           base::Unretained(waitable_results))),
      make_scoped_ptr(waitable_results));
}

void WebFileSystemImpl::deleteFileSystem(
    const WebKit::WebURL& storage_partition,
    WebKit::WebFileSystemType type,
    WebFileSystemCallbacks callbacks) {
  int callbacks_id = RegisterCallbacks(callbacks);
  WaitableCallbackResults* waitable_results =
      WaitableCallbackResults::MaybeCreate(callbacks);
  CallDispatcherOnMainThread(
      main_thread_loop_.get(),
      &FileSystemDispatcher::DeleteFileSystem,
      MakeTuple(GURL(storage_partition),
                static_cast<fileapi::FileSystemType>(type),
                base::Bind(&StatusCallbackAdapter,
                           CurrentWorkerId(), callbacks_id,
                           base::Unretained(waitable_results))),
      make_scoped_ptr(waitable_results));
}

void WebFileSystemImpl::move(
    const WebKit::WebURL& src_path,
    const WebKit::WebURL& dest_path,
    WebFileSystemCallbacks callbacks) {
  int callbacks_id = RegisterCallbacks(callbacks);
  WaitableCallbackResults* waitable_results =
      WaitableCallbackResults::MaybeCreate(callbacks);
  CallDispatcherOnMainThread(
      main_thread_loop_.get(),
      &FileSystemDispatcher::Move,
      MakeTuple(GURL(src_path), GURL(dest_path),
                base::Bind(&StatusCallbackAdapter,
                           CurrentWorkerId(), callbacks_id,
                           base::Unretained(waitable_results))),
      make_scoped_ptr(waitable_results));
}

void WebFileSystemImpl::copy(
    const WebKit::WebURL& src_path,
    const WebKit::WebURL& dest_path,
    WebFileSystemCallbacks callbacks) {
  int callbacks_id = RegisterCallbacks(callbacks);
  WaitableCallbackResults* waitable_results =
      WaitableCallbackResults::MaybeCreate(callbacks);
  CallDispatcherOnMainThread(
      main_thread_loop_.get(),
      &FileSystemDispatcher::Copy,
      MakeTuple(GURL(src_path), GURL(dest_path),
                base::Bind(&StatusCallbackAdapter,
                           CurrentWorkerId(), callbacks_id,
                           base::Unretained(waitable_results))),
      make_scoped_ptr(waitable_results));
}

void WebFileSystemImpl::remove(
    const WebKit::WebURL& path,
    WebFileSystemCallbacks callbacks) {
  int callbacks_id = RegisterCallbacks(callbacks);
  WaitableCallbackResults* waitable_results =
      WaitableCallbackResults::MaybeCreate(callbacks);
  CallDispatcherOnMainThread(
      main_thread_loop_.get(),
      &FileSystemDispatcher::Remove,
      MakeTuple(GURL(path), false /* recursive */,
                base::Bind(&StatusCallbackAdapter,
                           CurrentWorkerId(), callbacks_id,
                           base::Unretained(waitable_results))),
      make_scoped_ptr(waitable_results));
}

void WebFileSystemImpl::removeRecursively(
    const WebKit::WebURL& path,
    WebFileSystemCallbacks callbacks) {
  int callbacks_id = RegisterCallbacks(callbacks);
  WaitableCallbackResults* waitable_results =
      WaitableCallbackResults::MaybeCreate(callbacks);
  CallDispatcherOnMainThread(
      main_thread_loop_.get(),
      &FileSystemDispatcher::Remove,
      MakeTuple(GURL(path), true /* recursive */,
                base::Bind(&StatusCallbackAdapter,
                           CurrentWorkerId(), callbacks_id,
                           base::Unretained(waitable_results))),
      make_scoped_ptr(waitable_results));
}

void WebFileSystemImpl::readMetadata(
    const WebKit::WebURL& path,
    WebFileSystemCallbacks callbacks) {
  int callbacks_id = RegisterCallbacks(callbacks);
  WaitableCallbackResults* waitable_results =
      WaitableCallbackResults::MaybeCreate(callbacks);
  CallDispatcherOnMainThread(
      main_thread_loop_.get(),
      &FileSystemDispatcher::ReadMetadata,
      MakeTuple(GURL(path),
                base::Bind(&ReadMetadataCallbackAdapter,
                           CurrentWorkerId(), callbacks_id,
                           base::Unretained(waitable_results)),
                base::Bind(&StatusCallbackAdapter,
                           CurrentWorkerId(), callbacks_id,
                           base::Unretained(waitable_results))),
      make_scoped_ptr(waitable_results));
}

void WebFileSystemImpl::createFile(
    const WebKit::WebURL& path,
    bool exclusive,
    WebFileSystemCallbacks callbacks) {
  int callbacks_id = RegisterCallbacks(callbacks);
  WaitableCallbackResults* waitable_results =
      WaitableCallbackResults::MaybeCreate(callbacks);
  CallDispatcherOnMainThread(
      main_thread_loop_.get(),
      &FileSystemDispatcher::CreateFile,
      MakeTuple(GURL(path), exclusive,
                base::Bind(&StatusCallbackAdapter,
                           CurrentWorkerId(), callbacks_id,
                           base::Unretained(waitable_results))),
      make_scoped_ptr(waitable_results));
}

void WebFileSystemImpl::createDirectory(
    const WebKit::WebURL& path,
    bool exclusive,
    WebFileSystemCallbacks callbacks) {
  int callbacks_id = RegisterCallbacks(callbacks);
  WaitableCallbackResults* waitable_results =
      WaitableCallbackResults::MaybeCreate(callbacks);
  CallDispatcherOnMainThread(
      main_thread_loop_.get(),
      &FileSystemDispatcher::CreateDirectory,
      MakeTuple(GURL(path), exclusive, false /* recursive */,
                base::Bind(&StatusCallbackAdapter,
                           CurrentWorkerId(), callbacks_id,
                           base::Unretained(waitable_results))),
      make_scoped_ptr(waitable_results));
}

void WebFileSystemImpl::fileExists(
    const WebKit::WebURL& path,
    WebFileSystemCallbacks callbacks) {
  int callbacks_id = RegisterCallbacks(callbacks);
  WaitableCallbackResults* waitable_results =
      WaitableCallbackResults::MaybeCreate(callbacks);
  CallDispatcherOnMainThread(
      main_thread_loop_.get(),
      &FileSystemDispatcher::Exists,
      MakeTuple(GURL(path), false /* directory */,
                base::Bind(&StatusCallbackAdapter,
                           CurrentWorkerId(), callbacks_id,
                           base::Unretained(waitable_results))),
      make_scoped_ptr(waitable_results));
}

void WebFileSystemImpl::directoryExists(
    const WebKit::WebURL& path,
    WebFileSystemCallbacks callbacks) {
  int callbacks_id = RegisterCallbacks(callbacks);
  WaitableCallbackResults* waitable_results =
      WaitableCallbackResults::MaybeCreate(callbacks);
  CallDispatcherOnMainThread(
      main_thread_loop_.get(),
      &FileSystemDispatcher::Exists,
      MakeTuple(GURL(path), true /* directory */,
                base::Bind(&StatusCallbackAdapter,
                           CurrentWorkerId(), callbacks_id,
                           base::Unretained(waitable_results))),
      make_scoped_ptr(waitable_results));
}

void WebFileSystemImpl::readDirectory(
    const WebKit::WebURL& path,
    WebFileSystemCallbacks callbacks) {
  int callbacks_id = RegisterCallbacks(callbacks);
  WaitableCallbackResults* waitable_results =
      WaitableCallbackResults::MaybeCreate(callbacks);
  CallDispatcherOnMainThread(
      main_thread_loop_.get(),
      &FileSystemDispatcher::ReadDirectory,
      MakeTuple(GURL(path),
                base::Bind(&ReadDirectoryCallbackAdapater,
                           CurrentWorkerId(), callbacks_id,
                           base::Unretained(waitable_results)),
                base::Bind(&StatusCallbackAdapter,
                           CurrentWorkerId(), callbacks_id,
base::Unretained(waitable_results))),
      make_scoped_ptr(waitable_results));
}

void WebFileSystemImpl::createFileWriter(
    const WebURL& path,
    WebKit::WebFileWriterClient* client,
    WebFileSystemCallbacks callbacks) {
  int callbacks_id = RegisterCallbacks(callbacks);
  WaitableCallbackResults* waitable_results =
      WaitableCallbackResults::MaybeCreate(callbacks);
  CallDispatcherOnMainThread(
      main_thread_loop_.get(),
      &FileSystemDispatcher::ReadMetadata,
      MakeTuple(GURL(path),
                base::Bind(&CreateFileWriterCallbackAdapter,
                           CurrentWorkerId(), callbacks_id,
                           base::Unretained(waitable_results),
                           main_thread_loop_, GURL(path), client),
                base::Bind(&StatusCallbackAdapter,
                           CurrentWorkerId(), callbacks_id,
                           base::Unretained(waitable_results))),
      make_scoped_ptr(waitable_results));
}

void WebFileSystemImpl::createSnapshotFileAndReadMetadata(
    const WebKit::WebURL& path,
    WebFileSystemCallbacks callbacks) {
  int callbacks_id = RegisterCallbacks(callbacks);
  WaitableCallbackResults* waitable_results =
      WaitableCallbackResults::MaybeCreate(callbacks);
  CallDispatcherOnMainThread(
      main_thread_loop_.get(),
      &FileSystemDispatcher::CreateSnapshotFile,
      MakeTuple(GURL(path),
                base::Bind(&CreateSnapshotFileCallbackAdapter,
                           CurrentWorkerId(), callbacks_id,
                           base::Unretained(waitable_results),
                           main_thread_loop_),
                base::Bind(&StatusCallbackAdapter,
                           CurrentWorkerId(), callbacks_id,
                           base::Unretained(waitable_results))),
      make_scoped_ptr(waitable_results));
}

int WebFileSystemImpl::RegisterCallbacks(
    const WebFileSystemCallbacks& callbacks) {
  DCHECK(CalledOnValidThread());
  int id = next_callbacks_id_++;
  callbacks_[id] = callbacks;
  return id;
}

WebFileSystemCallbacks WebFileSystemImpl::GetAndUnregisterCallbacks(
    int callbacks_id) {
  DCHECK(CalledOnValidThread());
  CallbacksMap::iterator found = callbacks_.find(callbacks_id);
  DCHECK(found != callbacks_.end());
  WebFileSystemCallbacks callbacks = found->second;
  callbacks_.erase(found);
  return callbacks;
}

}  // namespace content

redpajama_set_name: RedPajamaGithub