text:
PANOW's Community Assistance Program supports housing security in the metro region
By Rebecca RaabOctober 19, 2021 No Comments
Home » Update » PANOW's Community Assistance Program supports housing security in the metro region
Housing: A Key Component of Health
Over the past year, in addition to the health risks of COVID-19, many of Oregon's most vulnerable citizens have struggled with the economic and social consequences of the pandemic. Thousands of Oregonians are at risk of being evicted, and the process of distributing federally-allocated funds has been slow. Since the Oregon Emergency Rental Assistance program launched in May 2021, nearly 38,000 Oregon households have requested more than $266 million in aid. More than 13,000 additional applications remain incomplete, while more than 24,000 are still being processed or need additional information from landlords or tenants (Oregon Capital Chronicle). This leaves vulnerable Oregonians in a tenuous position and many experts predict a historic housing crisis without significant additional intervention.
At Project Access NOW, a focus on the social determinants of health drives much of the work we do to improve the health of the Portland metro area. Safe, affordable housing plays a key role in improving a wide range of health and quality-of life risks and outcomes. Since its inception in 2014, the PANOW C3 Community Assistance Program (C3CAP) has facilitated safe hospital discharge for marginalized individuals, often those who are houseless or in extreme poverty. Last year, the program responded to 19,543 requests for assistance, aiding 10,902 clients with access to basic services (such as emergency housing, transportation, and food). Through work with one regional hospital system, PANOW support avoided over 1,700 hospital stays by securing 10,000+ hotel nights for vulnerable patients leaving the system. This allows patients to heal safely and avoid emergency readmission, while saving hospital space for those who need it, and ultimately holding down healthcare costs.
The below client story reflects the impact of this work on the ground and its importance to the health and safety of our community.*
A health care provider, treating a low-income patient with a life-threatening condition, recently reached out to Project Access NOW staff for assistance. The individual is unable to work due to their condition and unable to pay rent. While the patient applied for rent assistance, they have not yet received support. Their rent is due in a few days and the individual believes the landlord will evict them for non-payment.
C3CAP was able to respond immediate, providing rent assistance to bridge the gap until federal rent assistance is received. The individual, actively receiving treatment for a chronic condition, was able to stay in their home and received a resolution within days.
Says Myrna Valdez, C3CAP Program Manager, "Our program is an essential safety net for our community's most vulnerable individuals. Not only do we promote equity, we also provide support that increases the efficiency of the health care system. When patients' basic needs are taken care of, they are better able to focus on a return to health. When providers receive the support and technical assistance they need, they can focus on their core business – providing quality health care. Every day we are reaching the most acutely vulnerable Portland residents, and it is an honor to be able to provide some help."
*Based on actual events, with some details changed to protect privacy.
We are hiring for three positions open in the Outreach, Enrollment, and Access Program: two Program Specialists and one temporary Administrative Support Specialist.
JOIN US! More details at www.projectaccessnow.org
PANOW: One of the "100 Best Nonprofits to Work For in Oregon"
A record number of Project Access NOW staff participated in the Oregon Business survey, "100 Best Nonprofits to Work For in Oregon." Results are out, and we are so proud to be listed among the top organizations regionally! It is truly our staff who make PANOW's work possible, working tirelessly to fulfill the organization's mission and make Oregon a better and more equitable place.
This month, we are continuing our weekly vaccination clinics at the Beaverton Resource Center (13565 SW Walker Rd. Beaverton, OR 97005). Johnson & Johnson, Pfizer, and Moderna 12+
10/22/21 – 9:00am – 1:00pm (Sign up)
First, second, or booster shots are available! You do not need to sign up in advance but you may, by clicking "sign up" for select events.
You may also reach PANOW at 503-345-7031 with questions or concerns.
The CDC recommends Pfizer boosters six months after their second dose for:
1) Older adults age 65+ and those living in long-term care facilities
2) Adults ages 50-64 at high risk of severe COVID-19, due to underlying medical conditions
3) Adults ages 18-49 at high risk of severe COVID-19 due to underlying medical conditions should consider a booster based on an assessment of their individual benefits and risks and consultation with their medical provider.
4) Adults age 18-64 for people whose jobs put them at high risk for COVID-19
Your Voice: The Community Health Needs Assessment
The Healthy Columbia Willamette Collaborative is requesting community feedback from residents of Clackamas, Multnomah, and Washington, or Clark County, on their community health needs. As a partner also supporting collaborative health system investment, PANOW believes making your voice heard is one of your greatest opportunities for change.
Participate here
Learn more about the Healthy Columbia Willamette Collaborative
Report on Vaccine Equity in Washington County
Washington County Health and Human Services recently released a report on work to achieve vaccine equity in Washington County. We are honored to work alongside and our many partners, to administer vaccines and reach the most underserved Portland metro communities. Due in part to our Beaverton Resource Center-hosted vaccine clinics, and those of our valued peers, Washington County was the first county in the state to vaccinate 80% of all adults.
Says the report: "There is still a vaccination equity gap…the promising news is that our collaborative efforts with community partners are working."


Our "Transport manager "controls the process in the area of Storage and Transport. This program is the control center for the order management of all transport units. It coordinates the transport movements rules as a priority in executing movement orders. In this software the transport order of the printing goods are evaluated and transmitted to the individual units along the chosen transport route. Through feedback of the transport units the transport manager is constantly informed about the position of the goods. The orders are transmitted either by direct input or by remote channel to the program memory and are executed according to availability and priority.
The GGS controls automatic production lines whose material movement is executed by specialized cranes (converter). The GGS is specialized for the automatic production of gravure cylinders but useable for similar manufacturing processes. The control contains both the administration of product, order and formulas as well as informs about the status of the individual production units in the process line. The program controls the complete communication between the transport units, the GUI and interfaces to external data sources. By using a user friendly script the operator can easily administrate formulas and production sequences. The production sequence are visualized in a timely and logical fashion but also describe the order specific machine parameters of every production unit.
The graphic user interface (GUI) provides for manufacturing transparency. It allows representation of all transport and manufacturing processes in real-time. By providing intuitive operating features such as "drag and drop" internal transports can be initiated directly. The allocation and manufacturing status of each unit is shown in detail. An editing function allows for direct intervention in the production flow by the operator.


Stars: Tiny Bertels, Eva Binon, Camilia Blereau. It premiered on Dec 13, 2012, on één. The series has 7.4 * rating by IMDb.
Loslopend wild & gevogelte is not streaming or available to purchase online. Come back later to check if there's something new!
'Loslopend wild & gevogelte' What Time Is The Show On?


text:
What is the earliest point a passenger arriving from outside of the EU and from the UK can meet up at Schiphol (Amsterdam) airport?
After a long trip for studies I'll finally be going home next Friday. My partner went on a trip of his own while I was away. Our flights will be arriving about 15 minutes from each other (well, that's the plan), and we're very exited about seeing each other again. He'll be arriving at gate H from the UK. I don't know what gate I will be arriving yet. It is Friday 29th of April's KL896 from Pudong, China.
What is the earliest point we can meet up? Do we arrive in areas separated by checks or can we just hop off the plane and walk to each other?
customs-and-immigration airports netherlands ams
Belle-Sophie
Belle-SophieBelle-Sophie
Do you mean the location in the airport to meet up between gate H and an indeterminate point? Or do you mean the time interval between landing and finally reaching the public gallery? – Gayot Fow Apr 27 '16 at 7:34
@GayotFow More like, what checks do we need to pass at least before we can meet up. Or can we just hop off the plane and walk to the other's gate? – Belle-Sophie Apr 27 '16 at 7:37
That totally clarifies it. Please consider adding your comment into the body of the question. There are a lot of experts on Schiphol here who can help. Edit => add the time of day and the weekday name also. – Gayot Fow Apr 27 '16 at 7:47
Coming off the planes you come in the same halls as those going to the planes use. All of the airside that is 'non Schengen' is connected, if by a long(ish) walkway. That means that the first to arrive can go to the gate used by the second to arrive and meet there. Although at most of the airside space is open, there might be some parts of the airport still locked off by security for the whole of the area. In that case you will be able to meet just outside of the security check for the area of the airport.
Arriving plane gates are not announced so you will have to have your phones at the ready, call as soon as the gate is known. And sometimes passengers are bussed into the airport and might arrive at a door very close to passport control.
If you ask your flight attendants, it is likely that they can include the information in the 'welcome to Amsterdam' message, but otherwise you can see it on the outside of the airport buildings as well as on the signs within the halls as soon as you come into the buildings.
Remember that you might have to go to different locations of the airport to collect your luggage. You do not need to use a particular part of passport control, and you are free to walk from one set of luggage carousels to the other set, and you are allowed to pass out of the secure zone at any of the exits.
Both of your flights are from outside the Schengen area. If either of you had come from within the Schengen area, you would earliest be able to meet at the luggage carousels.
This answer is from personal experience, having used Schiphol many times, but for within Schengen as out of Schengen flights.
And I have met my friend in luggage reclaim on some airports myself.
If you have people meeting you outside the secure zone, you might need to call them which exit you use (based on which luggage you collect last) or arrange to meet them at a set point in the airport.
Edit: Based on the answer by @EcD, the area at the top of the stairs/lifts to passport control, on the side of the airport where the flight from China is using the gate, is the most likely point.
But I am not sure as I never arrived from a 'non clean' area. Luggage reclaim will certainly be possible, as those are for all flights in two huge halls.
Willeke♦Willeke
Are non-Schengen departures and arrivals not segregated in Schipol (like in the US, but contrary to most other international airports I'm aware of)? That means you can transfer from one non-Schengen flight to another without going through security? – jcaron Apr 27 '16 at 8:11
Such a detailed answer, thank you! I especially like the comment about asking the flight attendants, will certainly do that. – Belle-Sophie Apr 27 '16 at 8:17
That reminded me, some parts of the airport still have security points for a bigger area. Some flights have extra security near the gate. I do not like the 'security at the start of the secure area' myself. I feel much better when security is done for much smaller numbers of flights, best per flight. – Willeke♦ Apr 27 '16 at 8:17
Certain American airports would drive you nuts, then, where you can go to any terminal and any gate after clearing security. – Michael Hampton Apr 27 '16 at 9:47
Not drive me nuts, it is just now what I prefer. – Willeke♦ Apr 27 '16 at 9:48
I believe that since the central security changes last year, Willeke's answer is most likely incorrect for you (although as I've not been on an inbound flight from an "insecure" country since June 2015, when this all changed, I am happy to be corrected by someone with first-hand experience).
Schiphol airport describes the changes in detail, but in summary:
Departing passengers are now screened before entering the departure lounges at all, immediately after checkin. Similar to most airports.
Arriving passengers from "clean" non-Schengen countries (such as the UK and US), that meet EU security standards, are deposited directly into this shared departure area. This hasn't changed, but it does now make transfers easier for them, no need to re-clear security at the gate. They leave by heading towards passport control.
Arriving passengers from countries that don't meet EU security standards, and I strongly suspect this includes China, are shepherded along separate corridors on a separate level directly to passport control, and avoiding the clean passengers.
So - your partner should arrive into the main departure area. You should be herded directly to passport control. You could meet up before passport control therefore, or at the baggage claim. It's unlikely that you'll be able to get into the clean departure area without a boarding pass - although you could try, perhaps they won't check. It's unlikely your partner will be easily able to make it backwards along the unclean arriving passenger route - although again, that may be possible.
EdCEdC
I did include that some areas are still not in the general part of the 'all security at the main entrance to the secure area' but I have noticed that a lot of flights do not leave from the areas you would expect them to, arriving flights is even more of a guess. – Willeke♦ Apr 27 '16 at 13:56
I think if they were both coming from clean countries, or both from unclean countries, it would be easier. I think it's just an unfortunate pair of countries (I was going to add it as a comment, but it got a bit long :) ) – EdC Apr 27 '16 at 13:58
I think I would wait at the point where the people from the one section will meet those from the other section, if you can not go on for all the way. I assumed planes from China would arrive in the main area, but you might be right that they are in the smaller area with separate security. – Willeke♦ Apr 27 '16 at 14:00
Wow that's confusing. I think we'll aim for the plaza unless I catch wifi first as I lost my Dutch sim. Hurray for small technology. – Belle-Sophie Apr 27 '16 at 14:40
Let us know how you get on! – EdC Apr 27 '16 at 15:00
Not the answer you're looking for? Browse other questions tagged customs-and-immigration airports netherlands ams or ask your own question.
Amsterdam - How to reach from Schiphol Airport to Hotel Nes by cab and Metro?
Can I use the OV-chipkaart to get from Schiphol to the center by train?
What to do around Amsterdam Airport Schiphol during evening time?
Get to Schiphol early in the day/sleep at airport?
What to do at the Amsterdam Schiphol Airport during a long transit?
Want to meet arriving passenger inside airport before immigration (SIN airport)
Can I overnight at the Amsterdam airport to meet someone arriving in the morning?
How to get to Schiphol Airport at 5am using public transport from Amsterdam?
Transferring international to international at Shanghai Pudong
Lost luggage in Amsterdam Schiphol Airport with Vueling Airlines

redpajama_set_name: RedPajamaCommonCrawl


It's pretty clear that Samsung's mobile business is faltering at the moment, and members of its executive team are paying the price. Not only has Samsung recently posted dismal quarter profits, but it also wildly overestimated the appeal of the Galaxy S5, with the result that unsold units are now piling up in warehouses.
According to a new report coming out of Korea, to get things back on the right track Samsung has just sacked three top executives in its mobile business as part of large-scale reshuffling/downsizing effort.
The three heads on the chopping block include Lee Don-joo, head of the mobile business unit's strategic marketing office, Kim Jae-kwon, chief of the global operations office, and Lee Chul-hwan, who was previously in charge of the mobile R&D office.
Apple is expected to introduce another 4-inch iPhone, but it probably won't be cheap.
Samsung's newly-launched flagship Galaxy S5 might have hoped to capture some of the iPhone's market dominance in Britain, but new research figures show that even in its first month it trailed behind sales of the iPhone 5s and even Apple's so-called "flop" iPhone 5c.
The numbers were crunched by research company Kantar Worldpanel, which looked at smartphone sales in the month of May. The Galaxy S5 did manage to convert a few former iOS users to become Android fans, with 17 percent of new S5 owners being former iPhone users.


In honor of Elvis Presley's birthday this week, we pay homage to the King of Rock and Roll by marrying the idea of money and music in our discussion of the stock market's continued resilience. If investors are familiar with Elvis to any degree, then they most likely recognize "Suspicious Minds" as one of his top hits. We can draw parallels to the song on some levels as we contemplate the euphoria with which investors have embraced the stock market's climb. The S&P 500, NASDAQ, and Dow Indices are off to a tremendous start in 2018, up 3.4%, 4.3%, and 3.3%, respectively, in the first eight trading days alone. The Dow surpassed 25,000 last week and is well on its way to 26,000. Additionally, despite a brief pullback on Wednesday, following concerns that the US may pull out of the North American Free Trade Agreement (NAFTA) and that China may cut back on its purchases of US Treasuries, the leading indices re-emerged Thursday unscathed. And they had renewed wind in their sails, as China dispelled rumors, oil inched higher, and earnings season kicked off with a strong start. An exhilarating energy is in the air, and it certainly seems unstoppable.
On the one hand, the bears caution that the sheer height of the indices alone should merit some pause. Among their peak worries, of course, are inflation and that central banks around the globe could tighten quicker than expected, wreaking havoc on bond prices and, potentially, even the equity markets. Bears are concerned that valuations are already frothy and many companies are overvalued. However, if investors are fearful regarding equities, they aren't showing it—as evidenced by the CBOE Volatility Index (VIX) continuing to hover around 9.8, near its all-time historical low.
Bonds were 'all shook up' on Wednesday, as investors retreated from fixed income over fears of higher yields and falling bond prices. Treasury prices came under pressure, as the market showed sensitivity toward interest rate policy changes by the European Central Bank (ECB) and the Bank of Japan (BOJ), as well as a report that China may scale back its purchase of US government bonds. US bond prices retreated further on Friday in response to a higher-than-expected December Core CPI reading of 0.4%—with the yield on the 10-year US Treasury Note creeping up close to 2.6%—as investors demonstrated concern that inflation could put further pressure on the Federal Reserve's speed and trajectory of interest rate hikes.
Among other leading indicators this week, Monday's consumer credit reading from the Federal Reserve revealed the largest monthly increase since 2001, with outstanding consumer credit increasing from $20.6 billion in October to $27.9 billion in November. Retail sales showed continued strength, increasing 0.8% in November, up from an upwardly revised 0.5% increase in October, and rose an additional 4% in December according to the U.S. Department of Commerce. And, the US dollar decreased relative to a basket of major currencies, due to a lower-than-expected reading in December for US Producer prices. Initial jobless claims increased from 250,000 to 261,000. Also noteworthy, Walmart raised its minimum hourly wage this week to $11 per hour, and expanded employee benefits and bonuses.
Looking abroad, the ECB released minutes from its December meeting on Thursday, revealing the possibility of an announcement of a change in direction in its bond purchases as early as January, given strong growth in the region. The euro hit a three-year high on prospects of higher interest rates, and the yield on the German Bund rose, as Germany made progress in its coalition negotiations. Earlier this week, the BOJ announced that it would begin reducing its purchases of Japanese government bonds, sending its currency and bond yields higher on Tuesday. Bloomberg also released a report on Wednesday that suggested the Chinese government would look to cut back on its purchases of US government bonds, but China was quick to rebuff that suspicion as unfounded.
All in all, the preponderance of economic data appears to favor investors' inclination to stay the course. For now, the US economy is doing well, and both business and consumer confidence are strong. Companies have cash on hand, and they're spending it, bolstered by the prospective benefits of the new tax reform law. Bloomberg estimates that corporate profits will be up 15% in 2018. So, where are the bears? Well, it appears they've exited stage right faster than Elvis could leave the building. So, as the King would say, "Dry the tears from your eyes, let's don't let a good thing die." It's looking like the stock market will continue to 'melt up' long before it melts down.


Ole Schemion is the man to beat heading into what looks like being a superb Aussie Millions $100k Challenge final table.
The German took control after winning a big pot just before the close with Tony Bloom on the receiving end of a pretty chilly cooler.
A rivered Qh gave Bloom a flush but unfortunately for the Brighton and Hove Albion chairman it also gave Schemion an unbeatable full house. He'll return tomorrow with 1,888,000 to his name.
Schemion will face a tough battle for the AU$1,870,000 (US$1.48m) first prize though as the final eight is a who's who of high roller talent. Both Jason Mo and Erik Seidel (who cashed for a fourth successive year) are well placed after cracking the million chip barrier.
Further back are the likes of Justin Bonomo, Dani Stern, Richard Yong and Scott Seiver. The Aussie rail will have plenty to cheer too with local Alex Trevallion at the final table.
Trevallion has already enjoyed a fine festival after taking down the AU$25,000 Challenge event for over AU$645k. He'll have his work cut out making it a high roller double though, as he'll be nursing a short stack of 291,000 chips.
The action resumes on Saturday at 12.30pm local time (1.30am GMT) with the final eight guaranteed AU$310,000 (US$245,000).


text:
Music NewsPress ReleasesVideos
Wildways Release New "Faka Faka Yeah" Music Video
Alyssa ChristianFebruary 25, 2016
Artery Recordings' latest metalcore signing, Wildways have released their newest music video, "Faka Faka Yeah". The single comes from the band's upcoming label debut album, Into The Wild, set to release everywhere on March 25th. Produced by Cameron Mizell (Sleep With Sirens, Memphis May Fire), Wildways is bound for bright future with their new release.
Watch Wildways "Faka Faka Yeah" music video below and pre-order Into The Wild today.
Vocalist, Toli Wild commented, "From Russia with love. We put alot of work into this album, and know fans will like it. It was produced by Cameron Mizell (Sleeping With Sirens, Memphis May Fire) and has alot of special guest vocalists. It's time for Wildways."
About Wildways:
Wildways is a 5-piece metalcore/hardcore band from Western Russia and has shared stage with Asking Alexandria, Bless The Fall, Adept, The Ghost Inside, Betraying The Martyrs, Eskimo Callboy, Deez Nuts, Texas In July and many many more.
"Whether it is metalcore, emocore or hardcore, Wildways are not about genres. Their music is about feeling. The overwhelmingly emotional lyrics and amazing stage presence fuse up with a unique blend of various 'core' genres to create something that will blow you away!"
Wildways was formed in September 2009 under the name "Sarah Where Is My Tea". First fame in Russia after their debut self-titled EP.
Start to play shows in hometown and surrounding cities. SWIMT have released their debut official video for the first single from future album in January 2011.
Official Music video for "This Is Not Twilight" by Sarah Where Is My Tea hit more than 100,000 views on YouTube and became one of the most famous metalcore bands in Russia.
Their debut album "Desolate" was released in March 2011. Shortly after, SWIMT went on their first Russian headline tour and shot two more official videos for their album songs. In October 2011 the band went on their 1st European headline tour including Germany, Czech Republic, Poland, Switzerland, Hungary, Slovakia, Slovenia, Ukraine, Belorussia.
After that they tour in Russia again in February 2012 and play their first UK tour with 'Dead Harts' (Distort Records, The Agency Group) also including some shows in Germany, Belgium and Czech Republic.
In September 2012 they toured Russia again and again with UK friends 'Dead Harts' (Distort Records, The Agency Group). Guys start to record new album "Love & Honor" in February 2013.
In March 2013 they have released YouTube cover for Lana Del Rey song "Born To Die." Official music video gets more than 130k views.
Next summer SWIMT releases 2 official music videos for singles from future album "The Canvas" (65K views) and "The Idols Inside Us" (95k views). SWIMT gets their first endorsement deals with D'addario Strings, Meinl Cymbals, Pro-Mark, Evans and goes on their biggest headline tour all over the Russia including Vladivostok. 90 percent of tour shows were sold out. After that boys become a winners of VANS Warped Tour Battle Of The Bands in Europe.
In 2014 they go on another European headline tour with VANS of the wall streetwear support. After that SWIMT started working with Denis Shaforostov (vocalist of Asking Alexandria, ex-Make Me Famous, Down & Dirty) as their band manager. He advised the band to change the band name to get more response from USA and Europe. In May 2014, the band decided to change band name to "Wildways" and start to write new single "What You Feel"
with Denis Shaforostov.
WLDWS announced their new band name in June 2014 with the official video for one of the old song from last SWIMT album "My Habitat" and goes on to release a new single, "What You Feel" with official lyric video (65k views) in July 2014.
In September of 2014 WLDWS sent demo songs to Cameron Mizell of Chango Studios and booked to record their debut WDLWS album on February 2015. In October 2014 and January 2015 they played their last Russian shows as Sarah Where Is My Tea.
This is a new chapter for WLDWS…
Connect with Wildways:
WEBSITE | FACEBOOK | TWITTER
Alyssa Christian
Author: Alyssa Christian
Melodic Hardcore Upstarts SETYØURSAILS Sign Worldwide Record Deal with Napalm Records
Sorcerer to join Wolf, Descend, Lugnet for "Stream Bloody Stream" live event
TROLLFEST Unleashes Insane New Video for Classic Hit "Don't Worry Be Happy"
New England Extreme Metal Act AVERSED Reveals Second Video, "Laboratory," from Upcoming Album
IONOPHORE: BrooklynVegan Premieres "Pardis" From Ambient Trio With Members Of Vastum, Betterthief, And More
Melodic Death Metal Unit WOLFHEART to Release "Skull Soldiers" EP this March!
Cattle Decapitation launches video for "Finish Them" – featuring live footage from the band's sold-out 2020 shows in Melbourne, Australia
Gemini Syndrome Releases New Music Video "IDK" Today
Tribulation launches video for new single, "Funeral Pyre"
"Avatar Ages – An Impossible Concert Experience" Debuts With Rave Reviews & Global Viewership
Blacklist Union Releases "Evil Eye" Music Video
THE FINGER GUNS Announce Vinyl Release 'SASQUATCH' LP!
METALLICA Roll Out Worldwired Tour Dates In Build Up To New Album Release
AUTHOR & PUNISHER: Second Leg Of North American Live Takeover With Weedeater Confirmed
SHATTERED SUN Announces Signing with VICTORY RECORDS
Pryti Releases New Song "Insomnia" From Upcoming Album "Tales Of A Melancholic"


text:
Q: Is it possible to extract (not reset) the sa or other passwords from SQL Server? Let me start out that I do not need to reset the SA password, I know how to do that and there are plenty of resources on this site and elsewhere that give detailed step by step tutorials.
We have SQL servers set up on site at clients premises, the problem I am having is 3rd party companies are logging in to the server using our own service logins and doing data mining and data pushing. We are trying to stop this behavior (I know this is a impossible goal, but I am trying to convince other people of this fact).
We have figured out how they are getting our logins currently and will be fixing that, however what I would like to know is: Is there any known tool or process that can "extract" login passwords from a sql server instance (be it a offline attack or via intercepting and snooping a valid connection)?
I think there is likely a way to do it but management would like proof that it can be done.
Does anyone know of any set of tools or processes that it can be done with so I can demonstrate a proof of concept to management?

A: Depending on access rights to the server and the context in which it operates, there are a variety of ways someone might surreptitiously obtain a SQL username and password.
For example, if a user:

*

*Has rights to attach a debugger to the client application or to the SQL Server process, they could read the password when it's in memory.

*Is able to temporarily redirect the client application away from the SQL Server (e.g. by editing DNS/hosts file, editing a SQL alias, temporarily stopping the SQL Server process then capturing the port used by that process, etc.), they could write a simple program that mimics TDS's prelogin and login stages, have the client application connect to it, then walk away with the SQL authentication credentials used by the client application.

*Is able to access the SQL login's password hash (e.g. they have rights to sys.sql_logins), they could pull off a brute force attack using SQL queries (e.g. using PWDCOMPARE). At first, this may seem to require extraordinary computing resources and so be unlikely to succeed. However, if the user has some knowledge about the password (e.g. they've watched it being typed in and determined that it's exactly 10 characters long and that only one letter is capital), the amount of effort required for them to do a brute force attack to crack the password is drastically reduced.

*Has the private key to SQL Server's SSL certificate, they potentially could intercept credentials by using a wire sniffer to decrypt TDS's login message.

A: Highly unlikely. If MS were storing the passwords in a plain or easily decoded form there would be uproar about the lack of security.
It used to be that the TDS protocol (used by client libraries to talk to SQL server) sent credentials in an easily decoded form, but IIRC that was fixed in SQL2000 (or perhaps even SQL7) so unless you have a really old SQL instance they won't be reading the credentials that way.
Of course if your application is using user+pass authentication it needs to know credentials to login with so if they have access to the local system and you are not sufficiently protecting the stored credentials then they could be extracting them from your application or its configuration. If you are using Windows Integrated Auth then they could just be running the other applications as the same user that your application runs as.

redpajama_set_name: RedPajamaStackExchange


text:
Q: How to get the color of some element in Vim and apply it to another element This is probably a strange question, but I'm trying to change the current line number in Vim to something different from all other numbers in the line number column.
Thing is, I don't want to change it to a specific value, but to the value of some other gui element.
For instance, change the line number colors to the ones of TabLineSel element:
TabLineSel     xxx term=bold ctermfg=2 ctermbg=10 guifg=#859900 guibg=#073642

How can I do this in Vim?

A: Type
:highlight

in Vim. It will show you all the currently defined group with the color/rendering next to it.
I am not sure which one you want to change but I think you are looking to change either the CursorLineNr (only the number) or the CursorLine (the whole line) group.
To find out in which file it is defined :
:verbose hightlight CursorLineNr

Modify the file, copy paste the line next to TabLineSel and relauch VIm.


text:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="container_padding">48dp</dimen>
    <dimen name="larger_container_padding">64dp</dimen>
    <dimen name="content_spacing">14dp</dimen>
    <dimen name="large_content_spacing">18dp</dimen>
    <dimen name="headline_text_size">23sp</dimen>
    <dimen name="spinner_item_size">21sp</dimen>
    <dimen name="sub_headline_text_size">25sp</dimen>
    <dimen name="body_text_size">17sp</dimen>
    <dimen name="button_text_size">17sp</dimen>
    <dimen name="hint_link_text_size">17sp</dimen>
    <dimen name="edit_text_size">15sp</dimen>
    <dimen name="hint_text_size">16sp</dimen>
    <dimen name="table_title_text_size">17sp</dimen>
    <dimen name="table_text_text_size">17sp</dimen>
    <dimen name="button_padding">24dp</dimen>
</resources>

redpajama_set_name: RedPajamaGithub


text:
Do I Ever Have Power Resulting in a New Flag for Dubai New Government; News from Canada Including Monikers for the Prime Minister; A Joke from a Former Lover; Rising Anxiety Amongst Millennials; Photograph of Loo Wall
Do I ever have power!!! Approximately a month ago I suggested that Dubai get a new flag because it would be difficult for me to paint my face with all of those stripes in those rather unflattering colours. I had painted my face like the Canadian flag for Canada Day 2017 but that was not hard, The maple leaf was where my nose is. Well there is a new video showing a new flag for the new government. Of course, I had to respond. Gosh, there is now a flag for Dubai New Government. It is Royal Blue with Arabic Language, very attractive actually. So I did make the following public comment on YouTube,.
Me: Well this was a definite WOW. The new flag is something I approve of, I can paint myself blue and have someone write Arabic words across my face and little nose. It is brilliant, totally!! I worked for government my whole life and could help in ways other than painting my face. Hahaha Knee surgery soon (March 31) so I can come soon and help if you need me. AND YOU DO. hahahaha
I definitely have fun with all of this, for some obscure reason. The other good news is that I look good in blue so it will definitely be a win/win situation.
Speaking of good government, and its antithesis, news in from CPI who lives in Canada.
She: Has news of the Canadian blockades hit SF? Demonstrations against the Coastal Gas pipeline are shutting down the country – CN Rail is shutting down operations in Eastern Canada and VIA Rail is as well across the country.
Blockades in Vancouver and the Port of Vancouver, all in support of five hereditary chiefs. Trudeau (also referred to as Trudope and Turdeau) is in Munich talking of "meaningful discussions" to resolve. Ha. L
Me: I do not follow the news but have heard nothing so I was surprised to read this in your email. I do definitely love the Trudope and Turdeau monikers.
What is a moniker? It is an informal noun whose meaning is a name:, used in a sentence His real moniker is Justin Trudeau. I have no idea where these words come from, they just pop into my head and I look them up and they are perfect.
So I woke to an email from CPI, an email from former London lover who was responding to my rebuke as he had not wished me Happy Valentine's Day, The whole email totally made me laugh and here are parts of it.
He: These romantic times pass me by. As a curmudgeon this is not surprising..
So a jokef or the times. But first did you know that , according to surveys, peak happiness is reached at the age of 82?. Presumably relief that the end is nigh. Coincidentally, perhaps, there has been a significant rise in the incidence of std in the over 65 population.
Vernon, (an appropriate name, not often found in the younger population) please adjust your hearing aid. I said that I have acute angina.
Me: It took me a long time to get that joke but when I did gales of loud laughter ensured.
He then spoke of other matters but ended the mail with this sentence.
He: Who said romance was dead when you can have an email with aged sex and farts in the same one.
Me: My goodness you made me laugh again.
This is how our relationship began. At the National Theatre in London in 2016 a play called Suicide was produced. I was sitting alone next to a man, who was also alone. . The play was rather dreadful but interval eventually arrived.
Me: Thank goodness its interval. If I stayed for the second act I would commit suicide
He: Can I buy you a drink?
Me: Excellent idea!
And so it began, a rather rocky relationship and now he is in England and I am in San Francisco but we have recently started to email again. Guys do not get over me – I should come with a warning sign hung around my neck. I am laughing.
But sad news came via the newsletter of my alma mater the University of Alberta.
"The Harvard Business Review recently published findings of a study on mental health in the workplace that paints a bleak picture of anxiety among young people.
In a survey, half of millennials, those between 24 and 39, said they'd left a job at least partly for mental health reasons. For Gen Z—those between 18 and 23—the percentage spikes to 75, compared with just 20 per cent among the general population.
The results of the study, published by the mental health advocacy group Mind Share Partners, are one measure of how serious anxiety and depression have become among today's youth.
At the University of Alberta, for example, its website states that 35 per cent of students will experience a panic attack due to stress at some point, and mental health advisers on campus say requests for help with anxiety and depression are sharply rising.
In the 2016 Canadian National College Health Assessment, 65 per cent of post-secondary students reported experencing "overwhelming anxiety" in the previous year, and 13 per cent had considered suicide."
Social media gets some of the blame for this.
"Social media is another crucial factor in the anxiety that plagues Gen Z especially, according to Jean Twenge,a psychology professor at San Diego State University and the author of Generation Me and iGen.
In an Atlantic article called "Have Smartphones Destroyed a Generation?" she argues smartphones have radically altered the nature of social interactions—and consequently mental health.
Noting that rates of teen depression and suicide have skyrocketed since 2011, she claims it's no exaggeration to describe iGen (an alternate term for Gen Z) as "being on the brink of the worst mental health crisis in decades. Much of this deterioration can be traced to their phones.
"iGen teens have more leisure time than Gen X teens did, not less," she writes. "So what are they doing with all that time? They are on their phone, in their room, alone and often distressed."
She points to a survey by the National Institute on Drug Abuse that shows teens who spend more time than average on screen media activities—about four hours in the U.S. and three hours in Canada, according to Stats Canada—are more likely to be unhappy. Those who spend less time than average on non-screen media activities are more likely to be happy.
"(Youth) are far more connected to people outside of Canada and their own local neighbourhoods, or virtually connected," said Strohschein. "The downside is they're socially isolated in their local communities."
That isolation might be seriously hampering their social confidence, she added.".
I do disagree with Strohschein however. Annie sent me four gifs so far today.I texted a truth
Me: You make me feel so cared for.
But perhaps you should not be reading this blog, get out in your communities and do something! Again I am laughing. People ask me what I blog about – look at today. A new flag for Dubai, news from Canada with new monikers for Trudeau, a joke from a former lover and now a study showing the swelling anxiety of millennials By the way the definition is: they are people. reaching young adulthood in the early 21st century.
The photograph, of my bathroom wall, was placed on Instagram with the following caption. "This is from the wall of my bathroom. I am still getting even with Vancouver- it is the loo after all." Hahaha.
A Sunny Way to Start the Day; Bereft and Exaggeration Defined; Personal Driver and Annie Meet All of My Needs Except My Sexual Needs; The Necessary Habits of Rich Arabic Families; A Mirror That Says It All
Waking Up In a Mello Mood; Geography Lessons Occasioned By Men Interested in Me; Gifs and Other Treasures from Annie; To Conceive Or Not to Conceive, That is the Question; A Fun Exercise, Smelling the Roses, Women's Forum in Dubai; Why is Ivanka There? Stingy Defined.


Week 12 all ready! I'm actually surprised with myself that I have managed to keep up with this project and I'm really pleased too! I think we sometimes forget the little things that happen each day and with this project me and my iPhone manage to capture a little snapshot!
So here we are, my week in pictures, again if you follow my 365 posts completely random!
On Sunday after getting back from York and having an afternoon nap, I literally couldn't keep my eyes open, I decided that rather than cook we would go out for Sunday tea! So we did. The place we had our wedding reception many years ago has a gorgeous restaurant so I decided we'd go there. Food was delicious and really reasonably priced, service was great too. The munchkin spent some time drawing a picture and doing a word search!
The munchkin did her Rainbow Promise, we were so proud she got up and spoke in front of everybody, she's definitely gaining confidence. After the promise all the Rainbows had a little party tea.
The munchkin tried to sneak this into school on Tuesday, in order to prise it out of her hands I had to promise to take pictures of it at work! I sent them to myself so she got them on her ipad when she got home from school. She thought it was brilliant I'd actually taken it into work!
After Glee club, the munchkin wanted to make up her own dance routine, she set up a 'stage' on the floor. I had to pretend I wasn't watching as she wasn't ready yet!
More dancing practise! This time the munchkin roped Mr C in and they practised one of her glee club dances!
The munchkins school had postponed dressing up for book day until the 21st to coincide with Sports Relief. The munchkin wanted to go as Matilda or a Ladybird, she opted for Ladybird as she loves the Julia Donaldson book What the Ladybird heard!
The munchkin was at a part on an adventure farm, it was brilliant! As well as a play area, feeding the animals etc, there was some creepy critters there! She loved having a look and hold of the tarantula and a baby snake! She had a brilliant time!
At night I went out with my friend to a 'Night at the Movies' It was brilliant! We had some food and then the act did songs and dances from Grease, Mama Mia, Dirty Dancing and Saturday Night Fever! I did a lot of singing along and chair dancing! It was a really funny and great night, so I'm sneaking in an extra picture for this week!
Don't forget to pop over and see the other lovely folks weeks in pictures!


text:
package server

import (
	"bytes"
	"context"
	"database/sql"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"net/http/httptest"
	"net/http/httputil"
	"net/http/pprof"
	"os"
	"regexp"
	"strconv"
	"strings"
	"time"

	types "github.com/kevinburke/go-types"
	"github.com/kevinburke/handlers"
	"github.com/kevinburke/rest"
	"github.com/kevinburke/rest/resterror"
	"github.com/kevinburke/rickover/config"
	"github.com/kevinburke/rickover/dbtohttp"
	"github.com/kevinburke/rickover/httptypes"
	"github.com/kevinburke/rickover/metrics"
	"github.com/kevinburke/rickover/models/archived_jobs"
	"github.com/kevinburke/rickover/models/db"
	"github.com/kevinburke/rickover/models/jobs"
	"github.com/kevinburke/rickover/models/queued_jobs"
	"github.com/kevinburke/rickover/newmodels"
	"github.com/kevinburke/rickover/services"
	"github.com/kevinburke/rickover/setup"
	"github.com/lib/pq"
)

// TODO(burke) use http.LimitedBytesReader.

// The maximum data size that can be sent in the body of a HTTP request.
const MAX_ENQUEUE_DATA_SIZE = 100 * 1024

var disallowUnencryptedRequests = true

// DefaultServer serves every route using the DefaultAuthorizer for
// authentication.
var DefaultServer http.Handler

// POST /v1/jobs(/:name)/:id/replay
var replayRoute = regexp.MustCompile(`^/v1/jobs(/(?P<JobName>[^\s\/]+))?/(?P<id>job_[^\s\/]{20,40})/replay$`)

// GET /v1/jobs/job_123
//
// Must go before the getJobTypeRoute
var getJobRoute = regexp.MustCompile(`^/v1/jobs/(?P<id>job_[^\s\/]+)$`)

// GET/POST /v1/jobs
var jobsRoute = regexp.MustCompile("^/v1/jobs$")

// GET/POST/PUT /v1/jobs/:name/:id
var jobIdRoute = regexp.MustCompile(`^/v1/jobs/(?P<JobName>[^\s\/]+)/(?P<id>(job_)?[^\s\/]{20,40}|random_id)$`)

// GET /v1/jobs/:job-name
var getJobTypeRoute = regexp.MustCompile(`^/v1/jobs/(?P<JobName>[^\s\/]+)$`)

// GET /v1/archived-jobs
var archivedJobsRoute = regexp.MustCompile("^/v1/archived-jobs$")

type Config struct {
	// Authorizer to use. If nil, DefaultAuthorizer is used.
	Auth Authorizer
	// Database connector, for example db.DatabaseURLConnector. If nil,
	// db.DefaultConnection is used.
	Connector db.Connector
	// Number of open connections to the database
	NumConns int

	// Enqueueing a job with name "meta.shutdown" will shutdown the dequeuer (so
	// it can be restarted with a job type added or removed).
	//
	// Enable this flag if you have long running jobs that could be interfered
	// with if the dequeuer restarted.
	DisableMetaShutdown bool

	// In test mode, do some things synchronously that would otherwise be done
	// in a background goroutine.
	Test bool
}

// New initializes the database connection and returns a http.Handler that can
// run the server.
func New(ctx context.Context, cfg Config) (http.Handler, error) {
	if cfg.Auth == nil {
		cfg.Auth = DefaultAuthorizer
	}
	if cfg.Connector == nil {
		cfg.Connector = db.DefaultConnection
	}
	if err := setup.DB(ctx, cfg.Connector, cfg.NumConns); err != nil {
		return nil, err
	}
	return Get(cfg), nil
}

// Get returns a http.Handler with all routes initialized using the given
// Authorizer. Get assumes that setup.DB has been called; to call both use
// New.
func Get(c Config) http.Handler {
	a := c.Auth
	if a == nil {
		panic("server: cannot call Get() with nil Authorizer")
	}
	h := new(handlers.Regexp)

	db := newmodels.DB
	useMetaShutdown := !c.DisableMetaShutdown

	// v1
	h.Handle(jobsRoute, []string{"POST"}, authHandler(createJob(db, c.Test, useMetaShutdown), a))
	h.Handle(getJobRoute, []string{"GET"}, authHandler(handleJobRoute(db, useMetaShutdown), a))
	h.Handle(getJobTypeRoute, []string{"GET"}, authHandler(getJobType(getJobTypeRoute, db), a))

	h.Handle(replayRoute, []string{"POST"}, authHandler(replayHandler(), a))

	h.Handle(jobIdRoute, []string{"GET", "POST", "PUT"}, authHandler(handleJobRoute(db, useMetaShutdown), a))
	h.Handle(archivedJobsRoute, []string{"GET"}, authHandler(listArchivedJobs(db), a))

	// v2
	h.Handle(regexp.MustCompile(`^/v2/(.+)$`), nil, authHandler(V2(db, c.Test), a))

	h.Handle(regexp.MustCompile("^/debug/pprof$"), []string{"GET"}, authHandler(http.HandlerFunc(pprof.Index), a))
	h.Handle(regexp.MustCompile("^/debug/pprof/cmdline$"), []string{"GET"}, authHandler(http.HandlerFunc(pprof.Cmdline), a))
	h.Handle(regexp.MustCompile("^/debug/pprof/profile$"), []string{"GET"}, authHandler(http.HandlerFunc(pprof.Profile), a))
	h.Handle(regexp.MustCompile("^/debug/pprof/symbol$"), []string{"GET"}, authHandler(http.HandlerFunc(pprof.Symbol), a))
	h.Handle(regexp.MustCompile("^/debug/pprof/trace$"), []string{"GET"}, authHandler(http.HandlerFunc(pprof.Trace), a))

	h.Handle(regexp.MustCompile("^/$"), []string{"GET"}, authHandler(http.HandlerFunc(renderHomepage), a))

	mux := forbidNonTLSTrafficHandler(h)
	mux = serverHeaderHandler(mux)
	mux = debugRequestBodyHandler(mux)
	return mux
}

func init() {
	DefaultServer = Get(Config{Auth: DefaultAuthorizer})
	disallowUnencryptedRequests = os.Getenv("ALLOW_UNENCRYPTED_PROXY_TRAFFIC") != "true"
}

func serverHeaderHandler(h http.Handler) http.Handler {
	version := "rickover/" + config.Version
	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		// hack, figure out how to put middleware on a subset of responses
		if strings.HasPrefix(r.URL.Path, "/debug/pprof") {
			w.Header().Set("Content-Type", "text/plain; charset=utf-8")
		} else if r.URL.Path == "/" {
			w.Header().Set("Content-Type", "text/html; charset=utf-8")
		} else {
			w.Header().Set("Content-Type", "application/json; charset=utf-8")
		}
		w.Header().Set("Server", version)
		h.ServeHTTP(w, r)
	})
}

// forbidNonTLSTrafficHandler returns a 403 to traffic that is sent via a proxy
func forbidNonTLSTrafficHandler(h http.Handler) http.Handler {
	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		if disallowUnencryptedRequests {
			if r.Header.Get("X-Forwarded-Proto") == "http" {
				// It should always be set, but if it's not, let the request
				// through.
				forbidden(w, insecure403(r))
				return
			}
		}
		// This header doesn't mean anything when served over HTTP, but
		// detecting HTTPS is a general way is hard, so let's just send it
		// every time.
		w.Header().Set("Strict-Transport-Security", "max-age=31536000; includeSubDomains; preload")
		h.ServeHTTP(w, r)
	})
}

func authHandler(h http.Handler, a Authorizer) http.Handler {
	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		userId, token, ok := r.BasicAuth()
		err := a.Authorize(userId, token)
		if err != nil {
			if !ok {
				authenticate(w, new401(r))
				return
			}
			metrics.Increment("auth.error")
			handleAuthorizeError(w, r, err)
			return
		}
		metrics.Increment("auth.success")
		h.ServeHTTP(w, r)
	})
}

// debugRequestBodyHandler prints all incoming and outgoing HTTP traffic if the
// DEBUG_HTTP_TRAFFIC environment variable is set to true. Note that the output
// will be jumbled if the server is handling multiple requests at the same
// time.
func debugRequestBodyHandler(h http.Handler) http.Handler {
	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		if os.Getenv("DEBUG_HTTP_TRAFFIC") == "true" {
			// You need to write the entire thing in one Write, otherwise the
			// output will be jumbled with other requests.
			b := new(bytes.Buffer)
			bits, err := httputil.DumpRequest(r, true)
			if err != nil {
				_, _ = b.WriteString(err.Error())
			} else {
				_, _ = b.Write(bits)
			}
			res := httptest.NewRecorder()
			h.ServeHTTP(res, r)

			_, _ = b.WriteString(fmt.Sprintf("HTTP/1.1 %d\r\n", res.Code))
			result := res.Result()
			_ = result.Header.Write(b)
			for k, v := range result.Header {
				w.Header()[k] = v
			}
			w.WriteHeader(res.Code)
			_, _ = b.WriteString("\r\n")
			writer := io.MultiWriter(w, b)
			_, _ = res.Body.WriteTo(writer)
			_, _ = b.WriteTo(os.Stderr)
		} else {
			h.ServeHTTP(w, r)
		}
	})
}

// Deprecated: Use httptypes.CreateJobTypeRequest instead.
type CreateJobRequest = httptypes.CreateJobTypeRequest

// GET /v1/jobs/:jobName
//
// Get a job type by name. Returns a models.Job or an error
func getJobType(rx *regexp.Regexp, db *newmodels.Queries) http.HandlerFunc {
	return func(w http.ResponseWriter, r *http.Request) {
		jobName := rx.FindStringSubmatch(r.URL.Path)[1]
		if db == nil || !db.Connected() {
			rest.ServerError(w, r,
				fmt.Errorf("cannot retrieve job without working database connection"))
			return
		}
		job, err := db.GetJob(r.Context(), jobName)
		if err != nil {
			if err == sql.ErrNoRows {
				notFound(w, new404(r))
				return
			}
			rest.ServerError(w, r, err)
			return
		}
		respond(Logger, w, r, dbtohttp.Job(job))
	}
}

var Logger = handlers.Logger

// POST /v1/jobs
//
// createJob returns a http.HandlerFunc that responds to job creation requests
// using the given authorizer interface.
func createJob(db *newmodels.Queries, test, useMetaShutdown bool) http.HandlerFunc {
	return func(w http.ResponseWriter, r *http.Request) {
		if r.Body == nil {
			rest.BadRequest(w, r, createEmptyErr("name", r.URL.Path))
			return
		}
		defer r.Body.Close()
		var jr httptypes.CreateJobTypeRequest
		err := json.NewDecoder(r.Body).Decode(&jr)
		if err != nil {
			rest.BadRequest(w, r, &resterror.Error{
				ID:    "invalid_request",
				Title: "Invalid request: bad JSON. Double check the types of the fields you sent",
			})
			return
		}
		if jr.Name == "" {
			rest.BadRequest(w, r, createEmptyErr("name", r.URL.Path))
			return
		}
		if jr.Name == "meta.shutdown" {
			rest.BadRequest(w, r, &resterror.Error{
				Title: "cannot create protected job name",
				ID:    "forbidden_parameter",
			})
			return
		}
		strategy := newmodels.DeliveryStrategy(jr.DeliveryStrategy)
		if strategy == "" {
			rest.BadRequest(w, r, createEmptyErr("delivery_strategy", r.URL.Path))
			return
		}
		if strategy != newmodels.DeliveryStrategyAtLeastOnce && strategy != newmodels.DeliveryStrategyAtMostOnce {
			err := &resterror.Error{
				Instance: r.URL.Path,
				ID:       "invalid_delivery_strategy",
				Title:    fmt.Sprintf("Invalid delivery strategy: %s", jr.DeliveryStrategy),
			}
			rest.BadRequest(w, r, err)
			return
		}

		if strategy == newmodels.DeliveryStrategyAtMostOnce && jr.Attempts > 1 {
			err := &resterror.Error{
				Instance: r.URL.Path,
				ID:       "invalid_attempts",
				Title:    "Cannot set retry attempts to a number greater than 1 if the delivery strategy is at_most_once",
				Detail:   "The at_most_once strategy implies only one attempt will be made.",
			}
			rest.BadRequest(w, r, err)
			return
		}

		if jr.Attempts == 0 {
			rest.BadRequest(w, r, createPositiveIntErr("Attempts", r.URL.Path))
			return
		}
		if jr.Concurrency == 0 {
			rest.BadRequest(w, r, createPositiveIntErr("Concurrency", r.URL.Path))
			return
		}
		if db == nil || !db.Connected() {
			rest.ServerError(w, r, fmt.Errorf("cannot create job without working database connection"))
			return
		}

		params := newmodels.CreateJobParams{
			Name:             jr.Name,
			DeliveryStrategy: strategy,
			Concurrency:      jr.Concurrency,
			Attempts:         jr.Attempts,
		}
		start := time.Now()
		ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
		defer cancel()
		job, err := db.CreateJob(ctx, params)
		metrics.Time("type.create.latency", time.Since(start))
		if err != nil {
			switch terr := err.(type) {
			case *pq.Error:
				apierr := &resterror.Error{
					Title:    terr.Message,
					ID:       "invalid_parameter",
					Instance: r.URL.Path,
				}
				rest.BadRequest(w, r, apierr)
				return
			default:
				rest.ServerError(w, r, err)
				return
			}
		}
		if useMetaShutdown {
			ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second)
			if test {
				createAndEnqueueMetaShutdown(ctx, db)
				cancel()
			} else {
				go func() {
					defer cancel()
					createAndEnqueueMetaShutdown(ctx, db)
				}()
			}
		}
		created(Logger, w, r, dbtohttp.Job(job))
		metrics.Increment("type.create.success")
	}
}

func createAndEnqueueMetaShutdown(ctx context.Context, db *newmodels.Queries) {
	// The dequeuer won't know about the new job type, so enqueue
	// a shutdown job, which will instruct the dequeuer to shut down.
	if err := createMetaShutdownJob(ctx, db); err != nil {
		return
	}
	id := types.GenerateUUID("job_")
	runAfter := time.Now().Add(-1 * 5 * time.Second)
	services.Enqueue(ctx, db, newmodels.EnqueueJobParams{
		ID: id, Name: "meta.shutdown", RunAfter: runAfter,
		ExpiresAt: types.NullTime{
			Valid: true,
			Time:  runAfter.Add(time.Minute),
		},
		Data: []byte("{}"),
	})
}

// Deprecated: use httptypes.EnqueueJobRequest instead.
type EnqueueJobRequest = httptypes.EnqueueJobRequest

// GET/POST/PUT disambiguator for /v1/jobs/:name/:id
func handleJobRoute(db *newmodels.Queries, useMetaShutdown bool) http.HandlerFunc {
	return func(w http.ResponseWriter, r *http.Request) {
		if r.Method == "POST" {
			j := jobStatusUpdater{}
			j.ServeHTTP(w, r)
			return
		}
		if r.Method == "PUT" {
			j := jobEnqueuer{db: db, useMetaShutdown: useMetaShutdown}
			j.ServeHTTP(w, r)
			return
		}
		if r.Method == "GET" {
			j := jobStatusGetter{}
			j.ServeHTTP(w, r)
			return
		}
		rest.NotAllowed(w, r)
	}
}

type jobStatusGetter struct{}

// GET /v1/jobs(/:name)/:id
//
// Try to find the given job in the queued_jobs table, then in the
// archived_jobs table. Returns the job, or a 404 Not Found error.
func (j *jobStatusGetter) ServeHTTP(w http.ResponseWriter, r *http.Request) {
	// Job type, will be set if the longer URL form, empty string otherwise.
	var name string
	var idStr string

	// Try the longer route match first, fall back to just the ID
	jobIdMatch := jobIdRoute.FindStringSubmatch(r.URL.Path)
	if len(jobIdMatch) == 0 {
		jobIdMatch = getJobRoute.FindStringSubmatch(r.URL.Path)
		name = ""
		idStr = jobIdMatch[1]
	} else {
		name = jobIdMatch[1]
		idStr = jobIdMatch[2]
	}

	id, done := getId(w, r, idStr)
	if done {
		return
	}
	qj, err := queued_jobs.GetRetry(r.Context(), id, 3)
	if err == nil {
		if qj.Name != name && name != "" {
			// consider just serializing it if this is too annoying
			nfe := &resterror.Error{
				Title:    "Job exists, but with a different name",
				ID:       "job_not_found",
				Instance: r.URL.Path,
			}
			notFound(w, nfe)
			return
		}
		respond(Logger, w, r, qj)
		metrics.Increment("job.get.queued.success")
		return
	}

	if err != queued_jobs.ErrNotFound {
		rest.ServerError(w, r, err)
		metrics.Increment("job.get.queued.error")
		return
	}

	aj, err := archived_jobs.GetRetry(r.Context(), id, 3)
	if err == archived_jobs.ErrNotFound {
		notFound(w, new404(r))
		metrics.Increment("job.get.not_found")
		return
	}
	if err != nil {
		rest.ServerError(w, r, err)
		return
	}
	respond(Logger, w, r, aj)
	metrics.Increment("job.get.archived.success")
}

func createMetaShutdownJob(ctx context.Context, db *newmodels.Queries) error {
	// This job type might not exist, we need to create it first to avoid
	// a foreign key error. Just try to create the job every time - we
	// shouldn't be hitting this endpoint that often
	_, err := db.CreateJob(ctx, newmodels.CreateJobParams{
		Name:             "meta.shutdown",
		DeliveryStrategy: newmodels.DeliveryStrategyAtMostOnce,
		Attempts:         1,
		Concurrency:      1,
	})
	if err != nil {
		pqerr, ok := err.(*pq.Error)
		if !ok || pqerr.Code != "23505" {
			return err
		}
	}
	return nil
}

// jobEnqueuer satisfies the Handler interface.
type jobEnqueuer struct {
	db              *newmodels.Queries
	useMetaShutdown bool
}

// PUT /v1/jobs/:name/:id
//
// Enqueue a new job.
func (j *jobEnqueuer) ServeHTTP(w http.ResponseWriter, r *http.Request) {
	if r.Body == nil {
		rest.BadRequest(w, r, createEmptyErr("data", r.URL.Path))
		return
	}
	defer r.Body.Close()
	var ejr httptypes.EnqueueJobRequest
	err := json.NewDecoder(r.Body).Decode(&ejr)
	if err != nil {
		rest.BadRequest(w, r, &resterror.Error{
			ID:    "invalid_request",
			Title: "Invalid request: bad JSON. Double check the types of the fields you sent",
		})
		return
	}
	if ejr.Data == nil {
		rest.BadRequest(w, r, createEmptyErr("data", r.URL.Path))
		return
	}
	if !ejr.RunAfter.Valid {
		ejr.RunAfter = types.NullTime{
			Valid: true,
			Time:  time.Now().UTC(),
		}
	}
	matches := jobIdRoute.FindStringSubmatch(r.URL.Path)
	idStr := matches[2]
	var id types.PrefixUUID
	// Apache Bench can only hit one URL. This is a hack to allow random ID's
	// to be generated/inserted, even though the client is hitting the same
	// URL.
	//
	// Clients *must not* use random_id, they must generate their own UUID's.
	if idStr == "random_id" {
		id = types.GenerateUUID("job_")
		if err != nil {
			rest.ServerError(w, r, err)
			return
		}
	} else {
		var done bool
		id, done = getId(w, r, idStr)
		if done {
			return
		}
	}
	// TODO we've already consumed the whole thing, use limitedbytesreader
	// instead.
	if len(ejr.Data) > MAX_ENQUEUE_DATA_SIZE {
		tooLarge(w)
		return
	}
	name := jobIdRoute.FindStringSubmatch(r.URL.Path)[1]
	if name == "meta.shutdown" {
		createMetaShutdownJob(r.Context(), j.db)
	}
	ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second)
	defer cancel()
	queuedJob, err := services.Enqueue(ctx, j.db, newmodels.EnqueueJobParams{
		ID: id, Name: name, RunAfter: ejr.RunAfter.Time,
		ExpiresAt: ejr.ExpiresAt, Data: ejr.Data,
	})
	if err != nil {
		switch terr := err.(type) {
		case *queued_jobs.UnknownOrArchivedError:
			_, err = jobs.GetRetry(r.Context(), name, 3)
			if err != nil && err == sql.ErrNoRows {
				nfe := &resterror.Error{
					Title:    fmt.Sprintf("Job type %s not found", name),
					ID:       "job_type_not_found",
					Instance: fmt.Sprintf("/v1/jobs/%s", name),
				}
				notFound(w, nfe)
				metrics.Increment(fmt.Sprintf("enqueue.%s.not_found", name))
				return
			} else {
				alreadyArchived := &resterror.Error{
					Title:    "Job has already been archived",
					ID:       "job_already_archived",
					Instance: fmt.Sprintf("/v1/jobs/%s/%s", name, id.String()),
				}
				rest.BadRequest(w, r, alreadyArchived)
				metrics.Increment("enqueue.error.already_archived")
				return
			}
		case *pq.Error:
			if terr.Code == "23505" { // unique violation
				queuedJob, err = j.db.GetQueuedJob(r.Context(), id)
				if err != nil {
					rest.ServerError(w, r, err)
					return
				}
				break
			}
			apierr := &resterror.Error{
				Title:    terr.Message,
				ID:       "invalid_parameter",
				Instance: r.URL.Path,
			}
			rest.BadRequest(w, r, apierr)
			metrics.Increment(fmt.Sprintf("enqueue.%s.failure", name))
			return
		default:
			rest.ServerError(w, r, err)
			metrics.Increment("enqueue.error")
			metrics.Increment("enqueue." + name + ".error")
			return
		}
	}
	accepted(Logger, w, r, queuedJob)
	metrics.Increment("enqueue.success")
	metrics.Increment("enqueue." + name + ".success")
}

// GET /v1/archived-jobs
func listArchivedJobs(db *newmodels.Queries) http.Handler {
	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		query := r.URL.Query()
		typ := query.Get("name")
		status := query.Get("status")
		// TODO validate status
		limitQ := query.Get("limit")
		var limit int
		if limitQ == "" {
			limit = 100
		} else {
			var err error
			limit, err = strconv.Atoi(limitQ)
			if err != nil {
				rest.BadRequest(w, r, &resterror.Error{Title: err.Error(), ID: "invalid_parameter"})
				return
			}
			if limit <= 0 {
				rest.BadRequest(w, r, &resterror.Error{
					Title: "limit cannot be negative", ID: "invalid_parameter",
				})
				return
			}
			if limit > 100 {
				rest.BadRequest(w, r, &resterror.Error{
					Title: "limit cannot be greater than 100", ID: "invalid_parameter",
				})
				return
			}
		}
		var ajs []newmodels.ArchivedJob
		var err error
		switch {
		case typ == "" && status == "":
			ajs, err = db.ListArchivedJobs(r.Context(), int32(limit))
		case status == "" && typ != "":
			ajs, err = db.ListArchivedJobsByName(r.Context(), newmodels.ListArchivedJobsByNameParams{
				Limit: int32(limit),
				Name:  typ,
			})
		case status != "" && typ == "":
			ajs, err = db.ListArchivedJobsByStatus(r.Context(), newmodels.ListArchivedJobsByStatusParams{
				Limit:  int32(limit),
				Status: newmodels.ArchivedJobStatus(status),
			})
		case status != "" && typ != "":
			ajs, err = db.ListArchivedJobsByNameStatus(r.Context(), newmodels.ListArchivedJobsByNameStatusParams{
				Limit:  int32(limit),
				Name:   typ,
				Status: newmodels.ArchivedJobStatus(status),
			})
		default:
			panic("should be unreachable")
		}
		if err != nil {
			rest.ServerError(w, r, err)
			return
		}
		// TODO: add Next, Previous pagination by encrypted auto id
		respond(Logger, w, r, ajs)
	})
}


text:
To create the just and sustainable world that Global Citizenship Education (GCE) aims to achieve, there is a need to abandon siloed tactics and prioritise cooperation. At Bridge 47, we believe, that to really have a transformative impact, the GCE sector must break out from the circle of educators, involve new stakeholders and be fully recognized as an essential tool among all sectors. This may require us to deepen our exchange with existing partners or step out of our comfort zone and engage with actors whose practices may seem to contradict the values and approaches of GCE or with actors who have not prior been engaged in GCE.
To gain insight into the potential of such partnerships Bridge 47 has engaged in collaborative work with academic researchers, adult educators, policy makers, the media, trade unions, and the private and public sectors across Europe.
We have harvested the learning from these partnerships in publications, videos, case studies and other resources to inspire and build the capacity of others and to contribute to a wider reflection, dialogue and knowledge sharing within the GCE sector globally about the opportunities and challenges for advancing the mission of GCE through cross -sector partnerships.
Our publication, Out of the Comfort Zone? Global Citizenship Education and Cross-Sector Partnerships for Sustainable Development, provides analysis, case studies and reflective questions to support the reader to think critically and practically about how a partnership with a new and potentially 'unusual' sector could support them to achieve their mission, who to approach and how, and what type of partnership to aim for. In our Global Event (see video below), hear directly from partners from the health, museum and private sectors and their CSO partners. For further inspiration, you can find links to sector-specific resources such as case studies, podcasts, blogs, videos, resources and other publications in the sections below.
Our publication 'Building Knowledge Exchange Partnerships Dialogues Across Europe' shares some of the experiences from our CSO and academic partners.
The Bridge 47 Knowledge Exchange Partnerships led by EADI were also the basis for supporting a Massive Open Online Course (MOOC) to provide online learning on global citizenship.
Check out our case study about the partnership between SLOGA and the Slovenian Institute of Adult Education.
Watch partners Deloitte Ireland and the Irish Development Education Association (IDEA) talk about their GCE workshops for Deloitte staff. Read more from Deloitte in their blog.
Hear from CSOs and Businesses in Northern Ireland that attended our Building Bridges event in partnership with Business in the Community Northern Ireland. For further inspiration, read our case study about how the partnership developed.
Check out our practical guide to initiating and building GCE partnerships with the private sector.
The Estonian Coalition for Sustainable Development in Latvia is a great example of a cross-sectoral cooperation on GCE and sustainable development and a way of sharing knowledge. Read more about it in their publication.
IDEAS and Scotdec, in partnership with the Global Health Coordination Unit at the National Health Service Scotland developed Active Global Citizenship resources and training for NHS staff. Listen to Charlotte from Scotdec and Emily from NHS Scotland talk about their partnership in this 2 minute video. Read more about the partnership in our case study and Emily's article in the Scotsman newspaper.
Check out our case study of the partnership between AKÜ and the Estonian National Broadcasting Company where pre-documentary clips on themes of human rights and sustainable development were created collaboratively and shown to thousands. You can view the clips here.
Get inspired by Inga Surgunte from the Latvian Museum Association in this short video about her GCE partnership with the Centre for Education Initiatives. Read more in her blog.
We commissioned an international police training consultant and GCE experts to develop some practical guidance and reflective questions for CSOs on the potential of GCE partnerships with the police. See the publication here.
Our partnership with Women for Election in Ireland resulted in a training pack for those wishing to train local councillors on the SDGs using GCE approaches. Listen to Irish Senator Alice-Mary Higgin's podcast in which she talks about why the SDGs matter to local politicians and why local politicians matter to the SDGs.
In Scotland, IDEAS managed to get GCE approaches and methods incorporated in a toolkit for policy-makers. Read a blog from their partners in the National Performance Framework Team at the Scottish Government.
Read about MUNDU's partnership with the Technical National Union East Jutland, Denmark in our case study and a blog written by our trade union partner. Hear also from Stephen McCloskey, Director of the Centre for Global Education in Belfast to get his take on GCE-Trade Union Partnerships.
Further Partnership Resources
Stronger Together: A Toolkit for Partnerships in and Beyond Development Education
Do you want learn more about our work?


Join our No Border Sewage committee and Urban Surf 4 Kids for "Love Your Beach Day" in Imperial Beach on Saturday, August 29th, from 9am-2pm. We will be meeting on the north side of Imperial Beach Pier at the end of Elm Street. The event will kick off with free yoga at 9am followed by a beach cleanup from 10am-12pm. There will be complimentary lunch served to all cleanup participants and a raffle immediately following the cleanup. All minors must have a liability form signed by their parents or guardian. Click here to download the waiver. Please email nobs@surfridersd.org for more information.


text:
EPL Transfer Window
January 7, 2016 Betting Strategy, Sports News archive BetAdvisor
A New Year brings new hope and for some, new players, as the winter transfer window opens for business. The Premier League is a destination high on the priority list for some of the biggest names in the game and of course, there are those already playing there who are eyeing up big January moves. Let's now take a look at some of the players who are rumoured to be changing their employer this month.
PIERRE-EMERICK AUBAMEYANG – BORUSSIA DORTMUND
The French born Gabon striker is one of Europe's hottest properties and his arrival in the Premier League is imminent. Liverpool and Arsenal are both heavily linked with securing his servicesalong with the two Manchester clubs and Chelsea.His relationship with his former mentor in Germany Jurgen Klopp could swing the decision in favour of the Merseysiders, despite the Gunners being current favourites to bring him to the capital.
*Latest transfer odds:
Arsenal 4.50
Manchester United 7.00
Chelsea 9.00
Liverpool 15.00
Manchester City 15.00
GARETH BALE – REAL MADRID
The departure of coach Rafa Benitez this week could also hasten the departure of the clubs most expensive ever signing Gareth Bale. Already linked last summer with a return to the Premier League, the best online sports betting sites are now convinced that his next destination will be back in England. Manchester United, Chelsea and Manchester City lead the way with his former club Tottenham Hotspur, also an outside ( if improbable) bet.
Chelsea 21.00
Tottenham Hotspur 41.00
JAMIE VARDY – LEICESTER CITY
He's one part of the fairy-tale story of the Premier League season so far and he's wanted by a host of top clubs, despite his current employer stating he's going nowhere in January. Jamie Vardy has had a dramatic rise to stardom this season under the tutelage of Claudio Ranieri at Leicester City. A Premier League record breaker for the consecutive number of games scored in, his future almost certainly lies away from the King Power Stadium, but will it be earlier than many people think? Chelsea and Liverpool are the two main contenders followed by Spurs, Manchester United and Arsenal.
Spurs 19.00
Manchester United 26.00
Arsenal 34.00
RIYAD MAHREZ – LEICESTER CITY
The second part of the Leicester City double-header concerns Algerian midfielder Riyad Mahrez, without doubt, the player of the season so far in the Premier League. The Foxes are set to make a huge profit on the £500,000 they paid French side Le Havre in 2014 and Old Trafford remains the favourite destination for the 24-year-old. Whether it's in this window or in summer, Mahrez is set for a move to one of the Premier League big boys, as the footballing world uncovers a new superstar.
FELIPE ANDERSON – LAZIO
Out of all of the players listed, Lazio's Brazilian playmaker Felipe Anderson is the favourite on the betting exchanges to make a January move. Reports suggest that a deal is very close with Manchester United, with the player's representatives refusing to rule out a move to the Premier League. If this goes ahead, then the only place he will go is Old Trafford despite Chelsea also monitoring his progress.
*odds courtesy of sky Bet
Steve Mitchell (@barafundler)
Sandown Racecourse – A Guide to Flat Racecourses
Marcus Rashford – The Next Generation
Arsenal v Chelsea EPL Match Preview