Dreamweaver CC 2015.1, 2015.2, and 2015.3 releases bring you a breakthrough experience in designing and building websites in Dreamweaver. Creative Cloud Libraries and Adobe Stock can now be accessed from within Dreamweaver to integrate design elements and styles from Adobe desktop and mobile apps, and high-quality images and videos. Collaborative features in Creative Cloud provide a smooth designer-to-developer workflows.
This release also includes several enhancements to DOM panel, responsive web design, Extract, Live view editing, and other enhancement requests received from users like you. This article introduces these new features and enhancements, and provides links to resources for more help and learning.
This release of Dreamweaver provides a fix for the issue on Windows computers where the computer cannot go to sleep if Dreamweaver is running (wake timer issue).
For more information, see Computer cannot sleep if Dreamweaver is running | Windows.
With support for multiple selections, editing of tags, classes, and IDs, and insertion of new elements, you can now lay out and design most part of your web page by using just the DOM panel.
You can now select multiple tags in the DOM panel of a document to simultaneously edit or perform other operations on multiple tags.
For a contiguous selection, hold down the Shift key and click the tags in the DOM panel.
For a non-contiguous selection, hold down the Ctrl key and click the tags in the DOM panel.
Property Inspector, and CSS Designer are disabled.
Tag hierarchy shown at the bottom of the page is cleared.
The insertion point in Code view becomes inactive.
You can now edit tags, classes, and IDs by double-clicking them in the DOM panel. You can also add additional classes or IDs by separating them with a space. For tags that are not associated with a class or ID, you can type the name of the class or ID after double-clicking the tag.
Code hints appear as you begin typing the tag, class, or ID name. To narrow down the hints to classes, begin typing with a dot. To see only the IDs in the hints, begin typing with a hash (#).
To remove a tag, right-click the tag in the DOM panel and click Remove Tag.
Press the Spacebar or click the insert icon adjacent to the required element in the DOM panel. In the pop-up that appears, click one of the options. To wrap multiple elements with a tag, select the required elements and then choose Wrap Tag from the insert options.
A placeholder div tag is inserted and displayed in the editing mode. You can type the required tag name in place of the div tag.
Click the required element in the Insert panel and drag it to the DOM panel. Live Guides appear to indicate where the element will be inserted. Drop the element at the required location.
When you insert a table tag and commit the changes, a 3X3 table is inserted.
When you insert an embed or img tag and commit the changes, the Select File dialog box appears and prompts you to select an appropriate file.
When you insert a figure tag and commit the changes, a figure tag with nested figcaption is inserted.
When you insert a ul or an ol tag and commit the changes, an ol/ul tag with nested li tag is inserted.
When a node is selected in the DOM panel, it's child's nodes are shown in light blue.
If child nodes are explicitly selected, the light blue highlight is not displayed.
Gatekeeper is a built-in malware detection feature in Mac OS X 10.7 and later. This feature checks for valid Developer ID signatures in apps before they are installed on Mac. But, Gatekeeper does not detect or block apps that are dynamically loaded from within apps that have valid signatures. If you purchase Dreamweaver from unauthorized sources, this shortcoming in Gatekeeper can be exploited to introduce malicious plug-ins in the Dreamweaver install package.
To prevent any potential exploit, Dreamweaver now prompts you to confirm if you want to load third-party plug-ins if it is installed in a location other than /Applications.
For detailed information, see Preventing potential Gatekeeper exploit.
For more information, see CEF integration.
You will now be able to select a unit - px, em, or rem - while adding media queries using the Visual Media Query bar. When you specify a value in one unit, and then change the unit, the value is automatically converted to the newly selected unit.
The UI label, "Resize to", in the Image optimization dialog box has been changed to "Resample to".
Also, when you are sampling an image from the CC Libraries panel, a spinner appears on the image until the image is completely sampled.
For more information, see Creative Cloud Libraries in Dreamweaver.
If you have saved licensed, Adobe Stock images in your Creative Cloud Libraries, you can extract them as web-optimized SVG files in your Dreamweaver web pages. When you drag the images from the CC Libraries panel into your web pages, they are inserted as SVG files by default.
If you want to customize the properties of SVG files, you can edit the preferences in options.json file.
For more information, see Extract web-optimized SVG files from CC Libraries.
Three new email templates have been added in this build - Email-Fluid, Email-Hybrid, Email-Responsive.
To access the templates, go to File > New > Starter Templates > Email Templates.
Cut using the context menu, Edit menu, or keyboard shortcut.
Copy using the context menu, Edit menu, or keyboard shortcut.
Paste using the context menu, Edit menu, or keyboard shortcut.
Copy and replace other rows or columns using Replace Selected Cells option in the context menu.
To see these options, enter into the table formatting mode by selecting the table and clicking the sandwich icon in Element Display. Then, select the required cell(s) and right-click.
You can now navigate between the cells of a table in Live view using the left and right arrow keys. Click a cell in the table and press the left arrow key to go to the previous cell and the right arrow key to go to next table cell.
With the new support for Creative Cloud Libraries, you can collaborate and share graphics and color themes created in other design tools, such as Photoshop, Illustrator, or mobile apps. You can browse, manage, and access creative assets whenever and wherever you need them, across Dreamweaver projects.
When you insert assets from Creative Cloud Libraries, you can choose to maintain the link between the asset and the source so that your assets are kept updated at all times.
The new CC Libraries panel in Dreamweaver helps you view the assets in your Creative Cloud libraries and insert them in your web pages. You can insert the assets in Live view, or in Code view using code hints.
For detailed information, see Creative Cloud Libraries in Dreamweaver.
Integration with Adobe Stock lets you download royalty free images, vector graphics and videos directly to Creative Cloud Libraries and easily manage and reuse your Adobe Stock content from right within Dreamweaver.
Find the perfect images, graphics and videos from Adobe Stock, to give your website engaging visual appeal for your audiences – as you're working in Dreamweaver.
Bootstrap version used in Dreamweaver has been updated to version 3.3.5. As a result, Bootstrap components, snippets, and starter templates are now in version 3.3.5.
jQuery version, too, has been updated to 1.11.3.
In addition to Add Column/Add Row capabilities for Bootstrap documents in Live view, Dreamweaver now also lets you duplicate rows and colums.
You can duplicate a selected row or column by clicking the duplicate icon ( ) that appears at the lower right corner. The entire row or column is duplicated along with its contents.
The Add Row or Add Column option duplicates the row or column with classes, but without the content.
Whether you create a Bootstrap document from the New Document dialog box or from starter templates, the workflow is now seamless. No dialog boxes - Copy Dependent Files and Overwrite Existing Files - are displayed as in previous versions of Dreamweaver.
When you create and save a Bootstrap document in a specific location, the dependent files too are automatically saved in the same location.
Dreamweaver now highlights the media queries associated with the current viewport size so that you can quickly identify them. The highlight is in the form of darker arrows and a dark background for the breakpoint values of the media queries.
When you now click + on the Visual Media Query bar, Dreamweaver does not prompt you to click either max-width or min-width options. Instead, the popup for adding the media query appears immediately.
Also, in the popup, the max-width option is selected by default. A drop-down list is introduced to let you change the option to min-width or min-max.
You can now edit the media query values by double-clicking the breakpoint values in the Visual Media Query bar. When you double-click the breakpoint value, an orange border is displayed and the insertion point appears inside the border.
After entering the new values (in pixels), press Enter/Return to commit the changes, or press Escape to discard them.
The Go To Code option in the right-click context menu of Visual Media Query now displays the code line number making it easy for you to relate to the corresponding code.
You can now open PSDs with multiple artboards in the Dreamweaver Extract panel to extract assets. Each artboard is displayed as a folder in the layers pane. You can expand or collapse the folder to see or hide its contents.
To zoom in to a specific artboard, simply click the artboard name.
Double-click "FIT" in the panel header to zoom out of the artboard and fit the PSD into the current view.
When you extract CSS from a PSD file that has the Drop Shadow property, the property is now extracted as box-shadow in CSS.
In many scenarios, you create multiple layer styles in a PSD file that work individually, but cannot work together. Extract checks such cases and provides you suggestions on how to handle these layer styles.
Scenario 1: Multiples instances of any properties that translate into background colors. For example, two Color Overlays or two Gradient Overlays defined in the PSD file.
Scenario 2: A Color Overlay with an opacity less than 100% is placed above a Gradient Overlay, or the layer is assigned a background color. In such a case, it is difficult to determine the blended resultant color.
Scenario 3: A Gradient Overlay has an opacity less than 100% and the layer has been assigned a background color. In such a case, too, it is difficult to determine the blended resultant color.
"Layer contains multiple layer styles that cannot be represented in CSS. Use the color picker or extract the layer as an image."
Additionally, in cases where a semi-transparent background color overlays another background color (scenario 2 and 3 above), values for all of the background colors are displayed in the CSS. You can then extract the required value.
You can now select rows and columns of a table in Live view with a single click. A new arrow icon has been introduced (similar to that in Design View), which you can click to select a row or a column.
Select the table to see the Element Display with the sandwich icon.
Click the sandwich icon to enter into the table formatting mode.
Hover your mouse over the row or column you want to select. Point the mouse to the extreme border of the row or column to see an arrow that indicates that you can now click to select.
Click to select the row or column.
Proceed with editing the row or column as required by using the right-click context menu.
You can now select multiple cells/rows/columns using drag. Click on a cell and drag across multiple cell/row/column to select them.
Drag and select the required rows and columns.
You can now delete rows or columns by selecting them and pressing the Delete/Backspace key.
You can now use the Quick Property Inspector for text in Live view to quickly format, indent, and hyperlink text. The Quick Property Inspector for text appears when you click the sandwich icon for text elements: h1-h6, pre, and p.
The blockquote icons help you add or remove text indentation. tag is added or removed from the code accordingly.
The Quick Property Inspector for images now includes options to customize images in Bootstrap documents.
Adobe provides updates on an on-going basis to keep Dreamweaver up-to-date with the ever-evolving technology. For example, updates to Bootstrap libraries or starter templates.
You can download and install In-App updates automatically or manually. You can also disable In-App updates, or uninstall them and revert Dreamweaver to the state in which it was last installed or updated using the Adobe Creative Cloud desktop app. The Dreamweaver preferences dialog box lets you specify the mode of update, disable, or revert In-App updates.
For more information on in-app updates, see In-app updates.
In the previous release (Dreamweaver CC 2015), automatic pushing of files to testing server was introduced for a seamless editing experience of dynamic documents in Live view. On popular request by users to have the ability to disable this feature, a new preference is now introduced in the Site Setup dialog box.
For detailed information, see Disable auto-push of dynamic files.
Collapse a portion of code by selecting it.
Click '-' to collapse the code. To expand a collapsed section of code, click '+'.
For more information on collapsing code, see Collapsing code.
You can now rearrange selectors in the Selectors pane by dragging them to the required location in the pane.
If you collapse or expand the panes in CSS Designer, the sizes of the panes are remembered within a session. Sources and Media panes stick to the customized sizes until you change their sizes again.
In Bootstrap files, where the styles are defined in Bootstrap CSS files and are read-only, the Properties pane in CSS Designer is disabled.
If you want to modify the styling of your Bootstrap document, create another CSS file to override the existing styles, and then attach it to the document.
Undo and redo actions can now be limited to active documents only.
By default, the undo and redo actions affect the currently active document and all the related files, such as the associated CSS files. When you limit the undo actions to the active document, undo/redo will be applied only for the changes made in the file that is currently in focus. For example, if you are in an HTML file, undo/redo actions will affect only the changes you made in the HTML file and not in the related CSS file. To undo/redo any changes you made in a related CSS file, you will have to switch to the CSS file before doing undo/redo.
If the focus is in Live or Design view, then undo/redo will be applied only for those changes that affected the HTML code. For example, consider that you are editing a Bootstrap page in Live view. You edit some text and then resize a media query in the Visual Media Query bar. You can undo only the text edit and not the media query changes as those changes are in a related file and not the HTML file. You can switch to the related CSS file and undo the changes.
Click Edit > Preferences (Windows) or Dreamweaver > Preferences (Mac).
In the General category, select Limit Undo Actions to the Current Document in the Editing Options section.
Click Apply and then Close to close the Preferences dialog box.
Restart Dreamweaver for the changes to take effect.
You can now copy a tag in the DOM panel of a document and paste it into the DOM panel of another document using the right-click context menu in the panel.
Only the tags copied from the DOM panel can be pasted in another DOM panel. If you are copying a tag from Live view, then it can be pasted only in Live view and not in the DOM panel.
New feature guides - Feature Floaters and Contextual Feature Tips - appear automatically during the first launch after you update Dreamweaver. Feature Floater help you explore new features in the new update and Contextual Feature Tips help you discover new workflows and feature enhancements.
During the subsequent launches of Dreameaver, these new feature guide are suppressed and are not displayed by default. If you want to view them again, you can use the Reset option in Dreamweaver preferences.
Go to Help > Reset New Feature Guides. The Preferences dialog box appears.
Reset Feature Floaters or Contextual Feature Tips, or both based on your requirement.
Close Preferences and quit Dreamweaver.
Re-launch Dreamweaver. You can now view the new feature guides again.
Dreamweaver has now been updated to use the new validator service for HTML5 from W3C: https://validator.w3.org/nu/. The older validator service, validator.w3.org, is obsolete now.
none Choice of HTML or XML parser is based on Content-Type.
html HTML parser, configuration is based on doctype.
html5 HTML parser in the HTML5 mode.
html4 HTML parser in the HTML4 strict mode.
html4tr HTML parser in the HTML4 transitional mode.
As in the previous releases of Dreamweaver, you can still specify the fallback parser that Dreamweaver can pick if it is unable to identify the parser based on the document content type or DTD. Only the available list of parsers has changed with the new validator.
For more information, see Validate documents using W3C Validator.
The Assets panel now lists all the SVG assets in the Dreamweaver site associated with the currently active document. Like any other asset in the Assets panel, you can perform various actions on SVG assets, for example, editing, assigning URLs, and reusing assets across documents and sites.
No changes to other ways to zoom in and out of a document: Cmd/Ctrl++ or Cmd/Ctrl+-, and zoom from View > Magnification menu.
The Code And Live/Code And Design option is renamed in the View menu to 'Split' and behaves the same way as it does in the Document toolbar.
With several performance improvements in the sync settings feature, you can now synchronize settings between Dreamweaver instances and Creative Cloud faster than ever.
The older CSS Styles panel is removed from Dreamweaver and as a result, the associated APIs are removed as well.


text:
What is your show schedule?
We try to publish one show a week, however, we currently fund the show completely by our selves and do it in our free time, so sometimes we may not manage to cover our schedule, and other times we may indulge more frequently!
How long are you shows?
Each show is approximately one hour, although occasionally some shows may be shorter or go much longer.
How can I download and save a show?
On a shows page under the media player there is a "Download" link, When clicked some browsers will simply download the mp3 to your computers download folder. If this does not work for you, simply right click on the "Download" link and select "Save link as" (or Save Target As) then select the location you would like the mp3 to save to and click save. If you are on a Mac then press ctrl while clicking on the link and again save to a selected location.
Are all the shows Free?
Yes. We currently run the show off of our own back and use our own free time. Running a podcast show like THA Talks takes preparation, hard work, and some cash. The longer the show goes on for it may become difficult for us to maintain the quantity and quality of shows we like to produce and as such we will need to seek ways for the show to create a little income to support its self, however, we would very much like to keep the show open and free to all who want to come and listen and this will also very much be on our agenda.
Do you do Video interviews?
Not currently. We are however looking to expand on our podcast format.
Do you do live broadcasts and call ins?
Not currently. We have announced that we would do this in the past but our schedules have not permitted us the flexibility and time to do it to the standard we would like, but this does not rule it out for the future.
How do I subscribe to your RSS feed?
If you go to our iTunes & RSS feed page it provides you with our RSS feed address and also some directories we are registered in.
You will need to install a podcast client app for your phone/tablet, or some software for your laptop/desktop. Using the client you install on your device you can either find our show by searching for "THA Talks" or copy and paste in the RSS address. You will then have the option to subscribe to our show where you will be able to check back to see what content has been published directly to the client you are using. Please note that even though you can access the shows without visiting our website we do appreciate it if listeners do sometimes click around the website to help boost us in the search engine listings.
Where does your theme music come from?
The shows older music is written and recorded by Paul Obertelli and taken from one of his incomplete songs. It was then edited and cut to be suitable for the shows intro, a full version may be made available in the future, as will updated tunes no doubt. Newer tunes like the current theme tune have been taken from supportive associates or from the free domain like the current intro tune "Epic Dramatic by Yuriy Bespalov "Licensed under Creative Commons: By Attribution 3.0 http://creativecommons.org/licenses/by/3.0/.
Are you a Right wing or Left wing supporter?
THA Talks as collective, despite many attempts from far left organizations who have issues with us providing a stage for all speech, are not Right Wing and we are also not Left Wing. We proudly fly as the whole bird where we think we belong. This is of course despite our hosts having their own political favors, as all have the right to do. To address our spiritual view point on politics, we feel the feminine and masculine energies in the universe express them selves always and this is also seen in the Right and Left wing political spectrum. As a bird needs two wings to fly, as the yin needs yang and yang need yin, the conjoining of the two is what usually brings more success. History tells us that a totalitarian concept be it on the right or the left is a destructive force. This show understands not all our content will be of your taste, or may even offend some peoples views. Yet, with respect, we do not regret any content on the show, since it is not designed to brainwash people with our own views and tastes, but to offer a stage for subjects we like and subjects other people like. Additionally, we are very clear that our listeners interaction,opinions, and recommendations are very important to us and will never turn down an invitation to table an opposing argument to any of our guests views or ideas.

redpajama_set_name: RedPajamaCommonCrawl


Just 25 minutes from the hotel, Philippe and Michel welcome you at the iron bridge in Les Vans.
There are several Chassezac options in either a canoe or a kayak. A relaxing 2-hour descent or a sporting day excursion with picnic: discover one of Ardèche's most beautiful canyons.
The site offers a multitude of activities: beach, stand up paddle, swimming. Food and drinks are available from the bar/restaurant on site. Toilets and cloakrooms are also provided, including equipment cupboards for motorbikers.
Use your Mas de Baume card to get a 10% reduction on canoe rental.


Performed by very experienced beauty therapists at our studio by appointment, Lash Extension is a superb semi-permanent enhancement for short and thin lashes to add thickness, length and fullness to its natural lashes. These lashes replicates own natural eye lash; gives ultimate attraction to the eyes as compared to false lashes. Your choice of soft, medium or dense lashes! With lash extension fixed, you need not spend time curling, putting on layers of mascara minus eye liners and even simplest eye shadow applied will set your eyes dramatic.


Introducing the fast, effective, and dashingly good looking inventory management app ComEd Inventory.
ComEd Inventory allows inventory managers to import, track, and report on their assets in all stages of the inventory process. Custom workflows, advanced QR scanning, and real-time location updates make this Inventory app a must have mobile application for the forward thinking Inventory manager.


TopicHow can I accelerate weight loss on keto diet?
Written by John Sims, a personal trainer, certified nutritionist, and fat loss specialist, the Just Keto Diet is a secret metabolic "hack" that promises to rewire how the human body processes fat, helping you shed pounds without a single second of exercise, or ever feeling hungry. And all of this in as little as three days. By doing so, John tells us the science-backed program can help you not only lose weight, but also slash your blood sugar levels, improve your cardiovascular markers, boost energy, and even reverse type 2 diabetes, improve brain function, and kill cancer cells. Together, this is why he claims it's been used by 54,893 people and counting.


Solving complex problems facing the world today takes the expertise of professionals who can think critically and broadly. The Ebola outbreak of 2014-2015, for example, came under control with the involvement of not only doctors and nurses, but also scientists, researchers, developers, policy makers and an anthropologist who knew cultural beliefs about the dead were helping spread the virus.
The response to the Ebola outbreak illustrates a liberal education approach and the need for workers to have broad skills and knowledge and an ability to apply them to problems like Ebola and global warming, the Zika virus, feeding the world's population, poverty and the lack of drinking water.
Liberal education can be defined as an education that provides breadth across disciplines, the ability to connect and integrate knowledge across disciplines, the opportunity to learn critical thinking and problem-solving skills, and civic engagement. Students with a grounding in liberal education, which incorporates liberal arts and the sciences, are better prepared to solve problems in the 21st century and to succeed in future careers.
Fifty years ago, the University of Lethbridge adopted liberal education as its primary philosophy for teaching and learning. Concerned that the focus had narrowed to only requiring students to take courses from several disciplines, Dr. Andy Hakin, vice-president (Academic) and provost, called for a review of liberal education in 2014. The review has resulted in the establishment of a School of Liberal Education, a decision approved by the U of L Board of Governors on April 13.
Dr. Shelley Wismath, centre, discusses a problem-solving exercise with students as part of a Liberal Education class.
After extensive consultations, the team concluded the best way to move forward was to form a School of Liberal Education. The Liberal Education Program currently has four full-time instructors and is part of the Faculty of Arts & Science. As the number of Liberal Education courses offered has increased over the years, so too has enrolment, thus creating demand for upper level Liberal Education courses. The creation of a school provides opportunities to expand beyond the Faculty of Arts & Science and integrate liberal education programming throughout the University.
"A big part of this is educating our students and our communities that, at university, you learn to think carefully and well about all the important issues of our time," she says.
The School will officially come into being on July 1 and its primary responsibility will be to deliver liberal education programming and teaching. As a formal school, other opportunities can also be explored, such as promoting liberal education to faculty, students and community members, offering dual credit courses to high school students, offering critical thinking workshops and facilitating teaching and research connections across campus.


text:
Tag / Several
Articles from Several
Industry Brief
NuStar Crude Oil Pipeline LP is holding a binding open season through Aug. 30 for capacity to transport Eagle Ford Shale crude oil from several terminal locations on its South Texas Crude Oil Pipeline System in Frio, McMullen, and La Salle counties, TX, to its Corpus Christi, TX, North Beach facility. The proposed South Texas System Project would include pipeline capacity upgrades to the segments of the South Texas System between NuStar's Gardendale Terminal in La Salle County and NuStar's Corpus Christi Terminal in Nueces County, TX, and would be constructed in two phases. The first phase would add incremental capacity to the South Texas System of 35,000 b/d; the second phase would add incremental capacity to the South Texas System of 65,000 b/d. For information, contact Mark Meador or Rick Webb at (210) 918-2000.
Wyoming Initiates Water Testing Rules for Drilling
Oil and natural gas regulators in Wyoming on Tuesday initiated a rulemaking process for exploration and production (E&P) operators regarding water testing as part of the drilling permit application process.
Colorado Governor Says NatGas Key to State's Energy Strategy
Natural gas is a critical part of Colorado's "all of the above" energy strategy, and it is encouraging its increased development, including the use of hydraulic fracturing (fracking), in a safe and responsible way that can be managed between government and industry, said Gov. John Hickenlooper as part of a Western Governors' Association (WGA) three-part energy report.
Eclipse Doubling Down in Utica Shale
Two-year-old Appalachia-based upstart Eclipse Resources I LP, under the management of several shale veterans, has more than doubled its holdings in the Utica Shale in a deal to acquire Oxford Oil Co. LLC, and with it 184,000 net acres and 13.8 Bcfe of proved developed producing reserves.
New York's Con Edison said it will spend about $100 million on new natural gas mains, regulators and other upgrades to its system in several neighborhoods in Manhattan and the Bronx, enabling more customers to convert from heating oil. "Our customers are discovering the economic and environmental benefits of switching from heavy fuel oils to natural gas, and we want to do everything we can to make the conversion process easy for them," said Nick Inga, director of the utility's gas conversion group. A New York City environmental regulation phases out the use of No. 6 fuel oil by 2015 and No. 4 fuel oil by 2030. The regulation requires building owners to switch to another heating source, such as natural gas. Although the regulation does not require the phasing out of No. 2 fuel oil, hundreds of No. 2 oil-heated buildings have switched as well to natural gas due to economic benefits, Con Edison said.
Pre-Drill Methane Found in Pennsylvania Water Wells
The U.S. Geological Survey (USGS) said it found naturally occurring dissolved methane at several household wells used for drinking water in Sullivan County, PA, during pre-drill baseline testing at sites not near existing oil and gas drilling in the Marcellus Shale.
USGS Finds Methane in Pennsylvania Water Wells Before Drilling
EIA Again Pushes Natural Gas Price Forecast Higher
Consumption of natural gas in both the United States and Mexico is on the rise, according to the U.S. Energy Information Administration (EIA), which once again revised its natural gas price forecasts upward for the rest of 2013 and 2014.
Portland Mayor Urges Oregon to Drop Fossil Fuel Investments
In the context of opening a United Nations (UN) environmental event in his city Wednesday, Portland, OR, Mayor Charlie Hales called for several Oregon state investment funds to purge themselves of holdings in fossil fuel companies. The state's largest city already has taken that step, Hales said.
Poland Nixes Shale Gas Taxes Until 2020
In an attempt to lure foreign investment back to its shale natural gas plays following several high profile defections, the country's finance minister said a severance tax on unconventional production will take effect in 2015 but no tax would be levied until 2020.


text: Q: Using Firebase authentication with appengine decorator I'd like to use Firebase to authenticate/authorize the user in my web app, but then use the AppEngine decorator in Python to make API calls to the user's Google Contacts/Calendar from the backend if the user authenticates with a Google account. Is it possible to carry on the Firebase authentication/authorization to the appengine decorator?

redpajama_set_name: RedPajamaStackExchange


text:
Mobile | Desktop
Sofia Airport Complies with All Security Standards Laid out in European Law
Domestic | September 8, 2017, Friday // 17:37| views
Transport Minister Ivaylo Moskovski has said in parliament that Sofia Airport complies with all security standards laid out in European law.
Moskovski's statement came as a response to a question about the preparedness of the airport to guarantee the security of all passengers that are going to use it in the context of the forthcoming Bulgarian Presidency of the Council of the EU.
In September the Civil Aviation Council will discuss current measures and the need of further ones with the ministers of interior and of defense and with the head of the State Agency for National security, the minister also explained.
"Immediately before the presidency there will be an extraordinary inspection of the effectiveness of the VIP security measures applied and the measures to control access to the VIP security area," Ivaylo Moskovski further said.
Tags: security, measures, Ivaylo Moskovski, Sofia Airport
» Related Articles:
Sofia Airport has served 3.3 million passengers in 2021
Bulgaria: New National Plan for Dealing with COVID-19
Bulgarian Writer: Aggressive Denial of Vaccines is Terrorism
Bulgaria: Vast Majority of People against the Green Certificate didn't go to Yesterday's Protest
The French Senate has approved Tighter Restrictions on the Unvaccinated
COVID-19 in Bulgaria: The Government is Changing the Plan


The Model 1 Sawmill by Meadows Mills, Inc.
Let Meadows design and build the sawmill equipment you need. Our equipment is accurate, productive, affordable and built to last. Call and let us start your Meadows sawmill equipment now.
Don't Comprmise, You owe it to Yourself to call Meadows First!
There are a multitude of configurations and add-ons to create the Meadows Sawmill that is perfect for your operation and specific needs in milling timber.
Let us get started building your Custom Sawmill today by giving us a call.


Rogue: Hey there folks, so I managed to sit down for a second and chat with Don't Panic Cosplay: Tannis about her work. [To Don't Panic] Thank you for taking the time to do this interview.
Rogue: So I guess I�ll start with the title. Where did the cosplay identity Don't Panic Cosplay come from?
Tannis: I�m a huge Douglas Adams fan and The Hitchhiker�s Guide to the Galaxy series has been a huge influence on me. The man is a genius, in my opinion. So I chose the title Don�t Panic, written on the cover of the Guide, not only to pay tribute to that brilliant writer but also because I think it�s great advice. When you find yourself stranded in some unknown part of the galaxy, just remember- Don�t Panic (and bring your towel).
Rogue: Very nice and you�ve even done a Trillian cosplay correct?
Tannis: Yeah, that one was a lot of fun! I'd definitely like to improve it a little for the next time around. I chose Trillian from the series because is a great character. As Tricia McMillan, she abandons the monotony of life on Earth to travel the strange galaxy with an even stranger Galactic President. I think at times we can all relate to that desire to run off somewhere exotic to escape, even just for a little while.
Rogue: So when did you first start cosplaying?
Tannis: My first experience with cosplay was Halloween 2011. As a kid I used to have awesome costumes that my mom would make me, I even went as Sailor Venus. Yet as an adult I was never quite satisfied with what I came up with when it came around. So in 2011 I found a tutorial on how to make a Slave Leia costume out of wire, mache, hot glue, paint, and some scrap fabric. After that taste of costume building, I knew I could never stop.
Rogue: I know what you mean, I too was bitten by the cosplay bug. What is your favourite aspect of cosplay?
Tannis: My favourite aspect has to be the moment I put on a brand new costume that I�ve worked hard on to feel like I�ve stepped off the pages of a comic book or out of a TV screen. This also goes for when I see pictures of other cosplayers I�ve made costumes for. For me cosplay is a very personal experience, so it�s so rewarding to see the result of something I poured my heart and soul into whether it�s on myself or others.
Tannis: I�m definitely a fabric based cosplayer. I like to sew my costumes together from scratch to challenge myself to do what the characters must have done to get those awesome outfits. However, I started cosplaying with paper mache, hot glue, and acrylic paint, so I don�t feel quite right when I don�t need to use them. It almost seems like something is missing, but I do still get a chance to use them often.
Rogue: So that said, what is your greatest challenge in cosplay?
Tannis: My greatest challenge lies in hunting for the perfect fabrics. As a seamstress primarily, nothing is more satisfying than finding the right shade of fabric with the right kind of material. My favourite product- hologram lycra- is mostly discontinued, so it�s quite the quest to hunt for the right colour. I often have to travel 45 minutes out of the city just to get that fabric!
Rogue: And what is it about hologram lycra that tickles you so?
Tannis: It shines and catches the light in pictures, and makes the bodysuit look like it's been poured from action figure plastic.
Rogue: Fair. Hopefully they start producing it again for you. My next question, do you have any cosplayers that you admire/follow? If so who and why?
Tannis: I really respect Nicole Marie Jean as a cosplayer. She's an incredibly beautiful woman, but she makes a point to inform us that it's totally okay to be silly and look ridiculous. I think that's a great lesson in having confidence in yourself. And not to mention how talented she is, her costume repertoire is jealousy inducing.
I also follow Adrianne Curry. I watched her on the first season of America's Next Top Model, and knew I wanted to follow her career by the copious amounts of Jay and Silent Bob quotes she uttered in her season. Since then, I've been following her activities in the cosplay world. This woman is incredibly open about all of her ups and downs, and always looks to die for in her cosplays. She's truly an inspiration as both a cosplayer and a human being.
Rogue: Interesting, I didn�t know that about Adrianne Curry. Out of all the cosplays you've made (and/or modeled) to date, which is your favourite and why?
Tannis: My favourite costume to date has to be Josie from Josie and the Pussycats. I�ve spent my life since the movie came out being told I look like the actress, so that sparked my decision to cosplay the comic book version. Just wearing the cute little cat/musician/detective costume puts me in a totally upbeat mindset, not to mention having two of my favourite ladies in the cosplay world to join in my antics as Melody and Val.
Rogue: I think I may recall that one. ;) If you had one piece of advice for new cosplayers what would it be?
Tannis: Be whatever character you want to be, and put together your costume any way you feel comfortable. Remember, the most important part is to have fun dressing up and acting like your favourite character.
Rogue: Excellent advice! Now, do you have any new cosplays in the works that you can tell us about?
Tannis: Right now I�m working on the mermaid version of Ariel from The Little Mermaid, with a real world spin on it. It�s quite a challenge building fins that I can walk inside of without revealing my feet, especially since I�m covering the whole thing in hand cut scales. It�s my biggest project to date.
Rogue: Well that sounds exciting and when will you be debuting that?
Rogue: What other conventions do you plan on attending this year?
Tannis: For sure I�ll be at Atomic Lollipop in July and Fanexpo in August, but I try to make it out to as many conventions in Southwestern Ontario as I can.
Rogue: Do you take commissions?
Tannis: I would absolutely freak out to meet Elijah Wood. I�ve been a huge fan since Flipper first came out in theaters, right up to his most recent work in the FX series Wilfred. I think if I had to choose a cosplay to meet him in- and it would be a very difficult choice because I love so much of his work- it would have to be as Nancy Callahan from Sin City. While I could meet him as a hobbit, his silent performance as Kevin always gives me the chills and highlights to me why he�s such an impressive actor.
Rogue: I couldn�t agree more. He gives me the hebegebees. Well thank you very much for your time and I look forward to seeing you at future events.
Tannis: And I look forward to seeing you, and everyone else as well. And just remember- Don't Panic and bring your towels.


text:
Q: Find node in xml, despite how many nodes deep it might be This is a segment of an extremely large xml. I'm super confused as to how to get the results that I need from it.
<Task ID="269930118" Name="Name1" Active="0" NextEID="65" TT="COS" AR="0">
    <For ID="12">
        <If ID="13">
            <When>
                <Criteria>
                    <comp a="[OrigName]" test="MASK" b="53_Inbound_Daily_Account.txt"/>
                </Criteria>
                <UpdOrig Action="d" ID="45"/>
            </When>
        </If>
    </For>
    <If ID="37">
        <When>
            <Criteria>
                <comp a="[TaskStatus]" test="MASK" b="Success"/>
            </Criteria>
            <Email HostID="282198113" Subject="[TaskName] [TaskStatus]" Message="[TaskName] [TaskStatus]" AddressTo="email@email.com" UseDefRetryCount="1" UseDefRetryTimeoutSecs="1" ID="41" Type="SMTP"/>
            <RunTask TaskID="326261818" Wait="0" ID="51"/>
        </When>
    </If>
    <If ID="39">
        <When>
            <Criteria>
                <comp a="[TaskStatus]" test="MASK" b="Failure"/>
            </Criteria>
            <Email HostID="282198113" Subject="[TaskName] [TaskStatus]" Message="[TaskName] [TaskStatus]" AddressTo="email@email.com" UseDefRetryCount="1" UseDefRetryTimeoutSecs="1" ID="40" Type="SMTP"/>
        </When>
    </If>
</Task>

I need to add the task id to an arary if the following are true
comp.a -eq "[TaskStatus]"
comp.b -eq "Failure"
The email node exists right after the comp node. #pseudo code obviously

So the comp and email need to be within the same when node, but the when node may be any number of nodes deep into the xml in a given task. I'm super confused how to find these. Thoughts?

A: Try this:
$ids = @()

$xml = [xml](Get-Content .\Desktop\test.xml)

$xml.Task | ForEach-Object {

    if (@($_.SelectNodes('./*/When[Criteria/comp[@a = "[TaskStatus]" and @b = "Failure"] and (Email)]')).Count -gt 0) {
        #Criterias met. Add Task ID
        $ids += $_.ID
    }
}


text:
"Witchy Woman" is a song written by Don Henley and Bernie Leadon, and recorded by the American rock band Eagles. Released as the second single from the band's debut album Eagles, it reached No. 9 on the Billboard pop singles chart.

Background and writing
Guitarist Bernie Leadon started writing "Witchy Woman" while he was a member of the Flying Burrito Brothers. After joining the Eagles, Leadon and Don Henley then finished the song together, and it would be the only song on the Eagles' debut album where Henley had a writing credit.  The song was conceived while Don Henley was living in an old house near the Hollywood Bowl, with his flat mate, Henry Vine (aka 'Blitz').  Henley said of the origin of the song: "[Leadon] came over one day and started playing this strange, minor-key riff that sounded sort of like a Hollywood movie version of Indian music — you know, the kind of stuff they play when the Indians ride up on the ridge while the wagon train passes below. It had a haunting quality, and I thought it was interesting, so we put a rough version of it down on a cassette tape."  Henley also gave the song an R&B pulse in its music.

The inspiration for the title and lyrics about a seductive enchantress came from a number of women, although Henley had one particular woman in mind - Zelda Fitzgerald, whose biography he was reading while writing the song.  According to Henley, he was suffering from flu with a very high fever and become semi-delirious, and every time the fever subsided, he would continue to read a book on the life of Zelda Fitzgerald, and the character in the song would be a mix of Zelda Fitzgerald "along with amorphous images of girls [he] had met at the Whisky and the Troubadour". Zelda, the muse behind her husband F. Scott Fitzgerald, was known as a wild, bewitching and mesmerizing "Flapper" of the Jazz Age and the Roaring Twenties, and is sometimes thought to be the model for the character of Daisy Buchanan in his novel, The Great Gatsby. In "Witchy Woman", the line "She drove herself to madness with the silver spoon" may be a reference to Zelda's time in a mental institution and the special slotted silver spoon used to dissolve sugar cubes with absinthe, the popular 1920s alcoholic beverage distilled from the wormwood tree and called "the green fairy" for sometimes inducing hallucinations.

According to Henley, other influences for the song include books by Carlos Castaneda on shamanism and a girl he knew who was interested in the occult.

Reception
The song is the first commercially successful one Henley wrote, reaching No. 9 on the Billboard Hot 100 chart. He called it "[a]n important song for me, because it marked the beginning of my professional songwriting career".  Billboard described it as "a strong easy beat slow rock ballad".  Cash Box described it as being "midway between Redbone and CSN&Y" with "distinctive harmony power."

Performances
"Witchy Woman" is one of the earliest songs written by the Eagles, and together with "Take It Easy" it was also one of the very few songs the band performed every night in their early days. In one of their earliest public appearances as the Eagles, they performed "Witchy Woman" repeatedly at the opening of an art show in Venice, California in 1972 of works by Boyd Elder, who would later also create the painted skulls that appear in some of Eagles' albums covers.

In popular culture
The song, along with "Desperado", were both used and referred to in an episode of the sitcom Seinfeld. In an episode of Dharma and Greg from the first season, Abbey, Dharma's mother, mentions that she dated Henley and is almost certain she is Witchy Woman. The song was used in a 2005 episode of the series Cold Case titled "In the Woods" (the episode was set during 1972, the year of the song's original release).  It is also used in the movie America's Sweethearts to depict Catherine Zeta-Jones' character as she is getting out of a limousine.

Charts

Personnel

Don Henley – lead vocals, drums
Glenn Frey – backing vocals, lead guitar
Bernie Leadon – backing vocals, rhythm guitar
Randy Meisner – bass guitar, backing vocals

References

1970s ballads
1972 singles
1972 songs
Asylum Records singles
Eagles (band) songs
Rock ballads
Song recordings produced by Glyn Johns
Songs written by Don Henley
Halloween songs
Songs about witches

redpajama_set_name: RedPajamaWikipedia


text:
Округ Јунион () је округ у америчкој савезној држави Северна Каролина.

Демографија
По попису из 2010. године број становника је 201.292, што је 77.615 (62,8%) становника више него 2000. године.

Референце

Литература

Види још
 Округ
 Спискови округа САД

Спољашње везе

 -{United States Census Bureau}-

Окрузи Северне Каролине


If you could pick an African Cat based on personalities what would each member of the band be?
We had a great time... played some really cool spots - Fados, Zeds & Darwins.. made a lot of new friends... def worth all the effort it took to get there! Can't wait to get back on the road!
Tour w/ Yellowcard & MeTalkPretty?
Me talk Pretty are good friends of ours and a tour with them is very likely soon!
Any chance you'll tour and have a show near Seattle?
Yes, absolutely! We should be there by summer!
Can't wait for the new album....ROCK THE HOUSE ON YOUR TOUR !!!!!!!
Thanks!! Were very excited about this album too... it's sounding great!
Hey what's up MOE! So... What has been one of the most memorable shows for you guys?
well i'd say playing jones beach amphitheater was pretty awesome, I saw all my idols play there while growing up on long island... our last few NYC hometown shows felt great too... any time we have people there that appreciate what were doing is truly a memorable moment!
The new album should be out in Late April, but we should have some new sounds up very soon to share!
Were always listening to & getting excited by new music & we all of course have bands that made us even want to do this in the first place... but i think at this point musically were more inspired by the challenges of life, great stories, movies & books a bit more than what other bands are doing.
How do you guys know Robert Benfer AKA Knox? I'm one of the fans who fell in love with your music when I heard it in his first full-length haha.
We were introduced to Knox through a mutual friend... we fell in love instantly! He's def helped introduce our music to a lot more people!!! Love that dude!


text:
Q: $batch CRUD (Create) response data empty I created a batch CREATE call which works fine (table entries are added), but when the call is finished the resulting JSON contains blank values however I can see, via debug, in my DPC_EXT class that er_entity has data in there.
oDataModel.submitChanges({
  groupId: "pGroup",
  success: function (data) {
    //HERE -> the JSON entity values in "data" are all blank :(
  }.bind(this),
  error: function (e) {
    //Error
  }.bind(this)
});

data:
__batchResponses: Array(1)
  0:  __changeResponses: Array(60)
      0: data:
         Currency: ""
         Id: ""
         PhasingMonth: ""
         PhasingYear: ""
         RorId: ""
         Value: 0

SAP CREATE_DPC_EXT er_entity (what I expected to see in 'data' above):
ID               000000000541
ROR_ID           7
PHASING_YEAR     2019
PHASING_MONTH    01
VALUE            12
CURRENCY         USD

Is anyone able to assist?  UI5 version: 1.38

A: Turns out there are 2(!) CHANGESET_xxx methods, and I was using the 'other one'....


This certificate is designed to prepare educators to lead the Improvement Science process in their educational setting. Courses focus on school improvement and teacher leadership, and provide field-based practice to develop and apply core skills using a variety of data and analytic tools. There are two tracks offered for this certificate: Teacher Leadership and Administrative Supervision.
The Carnegie Foundation for the Advancement of Teaching is promoting a new school improvement process called Improvement Science. This process integrates a set of multidisciplinary ideas borrowed for the field of education with those utilized in the fields of health care, business, and manufacturing—other sectors that developed and currently utilize a signature improvement process to help their front-line workers solve problems on the job. Within the field of education, Improvement Science promotes "disciplined inquiry" (e.g., data tools, procedures, and ways of thinking) within and across schools by creating improvement networks (aka, Network Improvement Communities or NICs) to identify, adapt, and successfully scale-up promising interventions within schools. An intention of the work is to expand problem solving beyond one school to include networks of schools, all exploring similar problems and testing and adapting solutions to fit their unique contexts. NICs represent a new paradigm for research and development in education, with the potential to become a powerful driver of improvement for the nation's schools and colleges.
This certificate consists of 15-credit hours and can be completed in under 1 year.
Transformation Begins HereLearn more about the Graduate Certificate in Improvement Science in Education program located on campus (202-994-7066).


Got your weekly dose of fun facts for you.
Fuzz Fact Friday is back for the tenth week running to share with you some useless information to keep you entertained for at least five minutes.
Within the time-span of 54 years, 12 different actors have tackled the famous role. The first James Bond movie was released in 1962, with Sean Connery starring as 007 in the film adaptation of the Ian Fleming novel 'Dr. No'. The most current actor playing the character is Daniel Craig.
Including in terms of water area, land area and total area, Alaska is the biggest of all the US states. It measures 663,267.26 square miles in size. The second largest state is Texas, which has a total area of 268,580.82 square miles – this is only around 40% of Alaska's size. Despite being the biggest state, Alaska's population density is significantly low. In fact, it has one of the smallest amounts of people living there.
The Brazilian model has been under a contract with the brand since 2000. With a total of 17 years working for the company, she bypasses any other VS Angel including Heidi Klum and Tyra Banks.
The tongue is also one of the strongest muscles in the human body.
That's right, McDonald's has an average daily customer traffic of around 62 million – which is more than the population of Great Britain. It is estimated that the food chain serves and feeds 68 million people a day and sells more than 75 hamburgers every second.


Free online jigsaw puzzle for adults and kids of a purple flower. The colorful flower has five petals.
I have a bush with a purple flower on it which has started blooming and has literally hundreds of buds waiting to burst forth. It is called a lasiandra.
I have a lot of bulbs t plant as soon as the weather allows. Now that I have some free time, I might get those planted.
I also love your quote this morning Aussie. I really feel like that relates to me. God bless my friend.
P.S. How is Lynn doing? Haven't heard in a while and I was thinking of her.
Hi mamag - Lyn seems to be doing OK but since she has opted for no further medical intervention, it is only a matter of time. But she is getting on with her life and staying positive. Thanks for your care and concern. Hugs.
Love the quote, Aussie. Something I can use. Thank you.
Hugs and God bless to all of you also.
Thanks taffi, bless you heaps. Hugs.
Thanks for the update on Lyn, aussie. I keep her in my prayers.
Thank you so much aknan, hope you are getting on top of your invoices :) Hugs.
Thank you for keeping us posted on Lynn. God bless my Dear.
Aussie, my Mom got diagnosed with stomach cancer. She has gotten lots of prayer going and has attended a naturopath. She's had a Tuesday and Thursday appointment for 2 hours of Vitamin C via intravenous. Her last scan showed that her cancer lesions have shrunk. Also her belly button had all this evil smelling stuff coming out of it. That has totally healed up. It might be something that Lynn could check into. Vitamin C is known for it's healing properties. It's also known as the sunshine vitamin. Mom had 2 days of chemotherapy and was getting much sicker. She decided no more and her specialist basically said she was terminal. Her last scan and appointment, he was speechless. He said it was a miracle! Please know that I'm sharing this for Lynn and it's something that you might pass along. Blessing and hugs.
Hi taffi, I will certainly pass that on to Lyn (one 'n' :)) - she has a strong faith and lots of friends, including these on here she does not know, who are prayerfully supporting her through all this. Take care and God bless. Hugs.
Beautiful purple flowers and I loved the puzzle but got a phone call and forgot about.
So beautiful. My favourite colour. Lovely.


WHY POST SOME BS? DO NOT MAKE THE BAY LOOK TRASHY!!! DO NOT DOWNLOAD FAKE CODE VIDEO.
WOW THAT IT WAS FAKE. DOWNLOADED IT AND WATCHED. THANKS LONG LIVE THE BAY!
YES, SORRY @ XXXLAVALXX IT IS REAL MOVIE!!!
"wow 1xbet had a shitton of annoying ads on this torrented movie, i am gonna check their site out"
The movie itself? Meh... You've probably heard the feminist tropes run heavy and deep in this and they ARE there and cringe AF ["C'mon baby, lighten up and smile." is legit said. I'm old as dirt and have literally never heard anyone say this unironically.] but the real crime here is turning motherfuckin' Samuel L. Jackson (Fury) into a tag-along 'sidekick' character, cat lover and object of occasional ridicule by a marry sue that (quite possibly) surpasses Rey in terms of the lack of personality and character arc.
A:6 V:3 Its very grainy but good audio, but the picture is so low in quality more than half the time we couldn't tell what was happening if it weren't for the audio giving us a hint what is suppose to be happening in the scene. Not to mention the hard coded advertisement along the top of the screen, or the 42 second commercial they inserted at the 7 minute mark into the movie. Barely watchable.
Why are cams all still so bad when they make 4k HDR cameras that can fit in your shirt pocket? This one's especially bad.
8ez.com THE best place to get your hard drive encrypted!


text:
require 'spec_helper'

describe Chef::Provider::Deploy do

  before do
    @release_time = Time.utc( 2004, 8, 15, 16, 23, 42)
    Time.stub!(:now).and_return(@release_time)
    @expected_release_dir = "/my/deploy/dir/releases/20040815162342"
    @resource = Chef::Resource::Deploy.new("/my/deploy/dir")
    @node = Chef::Node.new
    @events = Chef::EventDispatch::Dispatcher.new
    @run_context = Chef::RunContext.new(@node, {}, @events)
    @provider = Chef::Provider::Deploy.new(@resource, @run_context)
    @provider.stub!(:release_slug)
    @provider.stub!(:release_path).and_return(@expected_release_dir)
  end

  it "loads scm resource" do
    @provider.scm_provider.should_receive(:load_current_resource)
    @provider.load_current_resource
  end

  it "supports :deploy and :rollback actions" do
    @provider.should respond_to(:action_deploy)
    @provider.should respond_to(:action_rollback)
  end

  context "when the deploy_to dir does not exist yet" do
    before do
      FileUtils.should_receive(:mkdir_p).with(@resource.deploy_to).ordered
      FileUtils.should_receive(:mkdir_p).with(@resource.shared_path).ordered
      ::File.stub!(:directory?).and_return(false)
      @provider.stub(:symlink)
      @provider.stub(:migrate)
      @provider.stub(:copy_cached_repo)
    end

    it "creates deploy_to dir" do
      ::Dir.should_receive(:chdir).with(@expected_release_dir).exactly(4).times
      @provider.stub(:update_cached_repo)
      @provider.deploy
    end

  end

  it "does not create deploy_to dir if it exists" do
    ::File.stub!(:directory?).and_return(true)
    ::Dir.should_receive(:chdir).with(@expected_release_dir).exactly(4).times
    FileUtils.should_not_receive(:mkdir_p).with(@resource.deploy_to)
    FileUtils.should_not_receive(:mkdir_p).with(@resource.shared_path)
    @provider.stub(:copy_cached_repo)
    @provider.stub(:update_cached_repo)
    @provider.stub(:symlink)
    @provider.stub(:migrate)
    @provider.deploy
  end

  it "ensures the deploy_to dir ownership after the verfication that it exists" do
    ::Dir.should_receive(:chdir).with(@expected_release_dir).exactly(4).times
    @provider.should_receive(:verify_directories_exist).ordered
    @provider.should_receive(:enforce_ownership).ordered
    @provider.stub(:copy_cached_repo)
    @provider.stub(:update_cached_repo)
    @provider.stub(:install_gems)
    @provider.stub(:enforce_ownership)
    @provider.stub(:symlink)
    @provider.stub(:migrate)
    @provider.deploy
  end

  it "updates and copies the repo, then does a migrate, symlink, restart, restart, cleanup on deploy" do
    FileUtils.stub(:mkdir_p).with("/my/deploy/dir")
    FileUtils.stub(:mkdir_p).with("/my/deploy/dir/shared")
    @provider.should_receive(:enforce_ownership).twice
    @provider.should_receive(:update_cached_repo)
    @provider.should_receive(:copy_cached_repo)
    @provider.should_receive(:install_gems)
    @provider.should_receive(:callback).with(:before_migrate, nil)
    @provider.should_receive(:migrate)
    @provider.should_receive(:callback).with(:before_symlink, nil)
    @provider.should_receive(:symlink)
    @provider.should_receive(:callback).with(:before_restart, nil)
    @provider.should_receive(:restart)
    @provider.should_receive(:callback).with(:after_restart, nil)
    @provider.should_receive(:cleanup!)
    @provider.deploy
  end

  it "should not deploy if there is already a deploy at release_path, and it is the current release" do
    @provider.stub!(:all_releases).and_return([@expected_release_dir])
    @provider.stub!(:current_release?).with(@expected_release_dir).and_return(true)
    @provider.should_not_receive(:deploy)
    @provider.run_action(:deploy)
  end

  it "should call action_rollback if there is already a deploy of this revision at release_path, and it is not the current release" do
    @provider.stub!(:all_releases).and_return([@expected_release_dir, "102021"])
    @provider.stub!(:current_release?).with(@expected_release_dir).and_return(false)
    @provider.should_receive(:rollback_to).with(@expected_release_dir)
    @provider.should_receive(:current_release?)
    @provider.run_action(:deploy)
  end

  it "calls deploy when deploying a new release" do
    @provider.stub!(:all_releases).and_return([])
    @provider.should_receive(:deploy)
    @provider.run_action(:deploy)
  end

  it "runs action svn_force_export when new_resource.svn_force_export is true" do
    @resource.svn_force_export true
    @provider.scm_provider.should_receive(:run_action).with(:force_export)
    @provider.update_cached_repo
  end

  it "Removes the old release before deploying when force deploying over it" do
    @provider.stub!(:all_releases).and_return([@expected_release_dir])
    FileUtils.should_receive(:rm_rf).with(@expected_release_dir)
    @provider.should_receive(:deploy)
    @provider.run_action(:force_deploy)
  end

  it "deploys as normal when force deploying and there's no prior release at the same path" do
    @provider.stub!(:all_releases).and_return([])
    @provider.should_receive(:deploy)
    @provider.run_action(:force_deploy)
  end

  it "dont care by default if error happens on deploy" do
    @provider.stub!(:all_releases).and_return(['previous_release'])
    @provider.stub!(:deploy).and_return{ raise "Unexpected error" }
    @provider.stub!(:previous_release_path).and_return('previous_release')
    @provider.should_not_receive(:rollback)
    lambda {
      @provider.run_action(:deploy)
    }.should raise_exception(RuntimeError, "Unexpected error")
  end

  it "rollbacks to previous release if error happens on deploy" do
    @resource.rollback_on_error true
    @provider.stub!(:all_releases).and_return(['previous_release'])
    @provider.stub!(:deploy).and_return{ raise "Unexpected error" }
    @provider.stub!(:previous_release_path).and_return('previous_release')
    @provider.should_receive(:rollback)
    lambda {
      @provider.run_action(:deploy)
    }.should raise_exception(RuntimeError, "Unexpected error")
  end

  describe "on systems without broken Dir.glob results" do
    it "sets the release path to the penultimate release when one is not specified, symlinks, and rm's the last release on rollback" do
      @provider.stub!(:release_path).and_return("/my/deploy/dir/releases/3")
      all_releases = ["/my/deploy/dir/releases/1", "/my/deploy/dir/releases/2", "/my/deploy/dir/releases/3", "/my/deploy/dir/releases/4", "/my/deploy/dir/releases/5"]
      Dir.stub!(:glob).with("/my/deploy/dir/releases/*").and_return(all_releases)
      @provider.should_receive(:symlink)
      FileUtils.should_receive(:rm_rf).with("/my/deploy/dir/releases/4")
      FileUtils.should_receive(:rm_rf).with("/my/deploy/dir/releases/5")
      @provider.run_action(:rollback)
      @provider.release_path.should eql("/my/deploy/dir/releases/3")
    end

    it "sets the release path to the specified release, symlinks, and rm's any newer releases on rollback" do
      @provider.unstub!(:release_path)
      all_releases = ["/my/deploy/dir/releases/20040815162342", "/my/deploy/dir/releases/20040700000000",
                      "/my/deploy/dir/releases/20040600000000", "/my/deploy/dir/releases/20040500000000"].sort!
      Dir.stub!(:glob).with("/my/deploy/dir/releases/*").and_return(all_releases)
      @provider.should_receive(:symlink)
      FileUtils.should_receive(:rm_rf).with("/my/deploy/dir/releases/20040815162342")
      @provider.run_action(:rollback)
      @provider.release_path.should eql("/my/deploy/dir/releases/20040700000000")
    end

    it "sets the release path to the penultimate release, symlinks, and rm's the last release on rollback" do
      @provider.unstub!(:release_path)
      all_releases = [ "/my/deploy/dir/releases/20040815162342",
                       "/my/deploy/dir/releases/20040700000000",
                       "/my/deploy/dir/releases/20040600000000",
                       "/my/deploy/dir/releases/20040500000000"]
      Dir.stub!(:glob).with("/my/deploy/dir/releases/*").and_return(all_releases)
      @provider.should_receive(:symlink)
      FileUtils.should_receive(:rm_rf).with("/my/deploy/dir/releases/20040815162342")
      @provider.run_action(:rollback)
      @provider.release_path.should eql("/my/deploy/dir/releases/20040700000000")
    end

    describe "if there are no releases to fallback to" do

      it "an exception is raised when there is only 1 release" do
        #@provider.unstub!(:release_path) -- unstub the release path on top to feed our own release path
        all_releases = [ "/my/deploy/dir/releases/20040815162342"]
        Dir.stub!(:glob).with("/my/deploy/dir/releases/*").and_return(all_releases)
        #@provider.should_receive(:symlink)
        #FileUtils.should_receive(:rm_rf).with("/my/deploy/dir/releases/20040815162342")
        #@provider.run_action(:rollback)
        #@provider.release_path.should eql(NIL) -- no check needed since assertions will fail
        lambda {
          @provider.run_action(:rollback)
        }.should raise_exception(RuntimeError, "There is no release to rollback to!")
      end

      it "an exception is raised when there are no releases" do
        all_releases = []
        Dir.stub!(:glob).with("/my/deploy/dir/releases/*").and_return(all_releases)
        lambda {
          @provider.run_action(:rollback)
        }.should raise_exception(RuntimeError, "There is no release to rollback to!")
      end
    end
  end

  describe "CHEF-628: on systems with broken Dir.glob results" do
    it "sets the release path to the penultimate release, symlinks, and rm's the last release on rollback" do
      @provider.unstub!(:release_path)
      all_releases = [ "/my/deploy/dir/releases/20040500000000",
                       "/my/deploy/dir/releases/20040600000000",
                       "/my/deploy/dir/releases/20040700000000",
                       "/my/deploy/dir/releases/20040815162342" ]
      Dir.stub!(:glob).with("/my/deploy/dir/releases/*").and_return(all_releases)
      @provider.should_receive(:symlink)
      FileUtils.should_receive(:rm_rf).with("/my/deploy/dir/releases/20040815162342")
      @provider.run_action(:rollback)
      @provider.release_path.should eql("/my/deploy/dir/releases/20040700000000")
    end
  end

  it "raises a runtime error when there's no release to rollback to" do
    all_releases = []
    Dir.stub!(:glob).with("/my/deploy/dir/releases/*").and_return(all_releases)
    lambda {@provider.run_action(:rollback)}.should raise_error(RuntimeError)
  end

  it "runs the new resource collection in the runner during a callback" do
    @runner = mock("Runner")
    Chef::Runner.stub!(:new).and_return(@runner)
    @runner.should_receive(:converge)
    callback_code = Proc.new { :noop }
    @provider.callback(:whatevs, callback_code)
  end

  it "loads callback files from the release/ dir if the file exists" do
    foo_callback = @expected_release_dir + "/deploy/foo.rb"
    ::File.should_receive(:exist?).with(foo_callback).once.and_return(true)
    ::Dir.should_receive(:chdir).with(@expected_release_dir).and_yield
    @provider.should_receive(:from_file).with(foo_callback)
    @provider.callback(:foo, "deploy/foo.rb")
  end

  it "raises a runtime error if a callback file is explicitly specified but does not exist" do
    baz_callback =   "/deploy/baz.rb"
    ::File.should_receive(:exist?).with("#{@expected_release_dir}/#{baz_callback}").and_return(false)
    @resource.before_migrate  baz_callback
    @provider.define_resource_requirements
    @provider.action = :deploy
    lambda {@provider.process_resource_requirements}.should raise_error(RuntimeError)
  end

  it "runs a default callback if the callback code is nil" do
    bar_callback = @expected_release_dir + "/deploy/bar.rb"
    ::File.should_receive(:exist?).with(bar_callback).and_return(true)
    ::Dir.should_receive(:chdir).with(@expected_release_dir).and_yield
    @provider.should_receive(:from_file).with(bar_callback)
    @provider.callback(:bar, nil)
  end

  it "skips an eval callback if the file doesn't exist" do
    barbaz_callback = @expected_release_dir + "/deploy/barbaz.rb"
    ::File.should_receive(:exist?).with(barbaz_callback).and_return(false)
    ::Dir.should_receive(:chdir).with(@expected_release_dir).and_yield
    @provider.should_not_receive(:from_file)
    @provider.callback(:barbaz, nil)
  end

  # CHEF-3449 #converge_by is called in #recipe_eval and must happen in sequence
  # with the other calls to #converge_by to keep the train on the tracks
  it "evaluates a callback file before the corresponding step" do
    @provider.should_receive(:verify_directories_exist)
    @provider.should_receive(:update_cached_repo)
    @provider.should_receive(:enforce_ownership)
    @provider.should_receive(:copy_cached_repo)
    @provider.should_receive(:install_gems)
    @provider.should_receive(:enforce_ownership)
    @provider.should_receive(:converge_by).ordered # before_migrate
    @provider.should_receive(:migrate).ordered
    @provider.should_receive(:converge_by).ordered # before_symlink
    @provider.should_receive(:symlink).ordered
    @provider.should_receive(:converge_by).ordered # before_restart
    @provider.should_receive(:restart).ordered
    @provider.should_receive(:converge_by).ordered # after_restart
    @provider.should_receive(:cleanup!)
    @provider.deploy
  end

  it "gets a SCM provider as specified by its resource" do
    @provider.scm_provider.should be_an_instance_of(Chef::Provider::Git)
    @provider.scm_provider.new_resource.destination.should eql("/my/deploy/dir/shared/cached-copy")
  end

  it "syncs the cached copy of the repo" do
    @provider.scm_provider.should_receive(:run_action).with(:sync)
    @provider.update_cached_repo
  end

  it "makes a copy of the cached repo in releases dir" do
    FileUtils.should_receive(:mkdir_p).with("/my/deploy/dir/releases")
    FileUtils.should_receive(:cp_r).with("/my/deploy/dir/shared/cached-copy/.", @expected_release_dir, :preserve => true)
    @provider.copy_cached_repo
  end

  it "calls the internal callback :release_created when copying the cached repo" do
    FileUtils.stub!(:mkdir_p)
    FileUtils.stub!(:cp_r)
    @provider.should_receive(:release_created)
    @provider.copy_cached_repo
  end

  it "chowns the whole release dir to user and group specified in the resource" do
    @resource.user "foo"
    @resource.group "bar"
    FileUtils.should_receive(:chown_R).with("foo", "bar", "/my/deploy/dir")
    @provider.enforce_ownership
  end

  it "skips the migration when resource.migrate => false but runs symlinks before migration" do
    @resource.migrate false
    @provider.should_not_receive :run_command
    @provider.should_receive :run_symlinks_before_migrate
    @provider.migrate
  end

  it "links the database.yml and runs resource.migration_command when resource.migrate #=> true" do
    @resource.migrate true
    @resource.migration_command "migration_foo"
    @resource.user "deployNinja"
    @resource.group "deployNinjas"
    @resource.environment "RAILS_ENV" => "production"
    FileUtils.should_receive(:ln_sf).with("/my/deploy/dir/shared/config/database.yml", @expected_release_dir + "/config/database.yml")
    @provider.should_receive(:enforce_ownership)

    STDOUT.stub!(:tty?).and_return(true)
    Chef::Log.stub!(:info?).and_return(true)
    @provider.should_receive(:run_command).with(:command => "migration_foo", :cwd => @expected_release_dir,
                                                :user => "deployNinja", :group => "deployNinjas",
                                                :log_level => :info, :live_stream => STDOUT,
                                                :log_tag => "deploy[/my/deploy/dir]",
                                                :environment => {"RAILS_ENV"=>"production"})
    @provider.migrate
  end

  it "purges the current release's /log /tmp/pids/ and /public/system directories" do
    FileUtils.should_receive(:rm_rf).with(@expected_release_dir + "/log")
    FileUtils.should_receive(:rm_rf).with(@expected_release_dir + "/tmp/pids")
    FileUtils.should_receive(:rm_rf).with(@expected_release_dir + "/public/system")
    @provider.purge_tempfiles_from_current_release
  end

  it "symlinks temporary files and logs from the shared dir into the current release" do
    FileUtils.stub(:mkdir_p).with(@resource.shared_path + "/system")
    FileUtils.stub(:mkdir_p).with(@resource.shared_path + "/pids")
    FileUtils.stub(:mkdir_p).with(@resource.shared_path + "/log")
    FileUtils.should_receive(:mkdir_p).with(@expected_release_dir + "/tmp")
    FileUtils.should_receive(:mkdir_p).with(@expected_release_dir + "/public")
    FileUtils.should_receive(:mkdir_p).with(@expected_release_dir + "/config")
    FileUtils.should_receive(:ln_sf).with("/my/deploy/dir/shared/system", @expected_release_dir + "/public/system")
    FileUtils.should_receive(:ln_sf).with("/my/deploy/dir/shared/pids", @expected_release_dir + "/tmp/pids")
    FileUtils.should_receive(:ln_sf).with("/my/deploy/dir/shared/log", @expected_release_dir + "/log")
    FileUtils.should_receive(:ln_sf).with("/my/deploy/dir/shared/config/database.yml", @expected_release_dir + "/config/database.yml")
    @provider.should_receive(:enforce_ownership)
    @provider.link_tempfiles_to_current_release
  end

  it "symlinks the current release dir into production" do
    FileUtils.should_receive(:rm_f).with("/my/deploy/dir/current")
    FileUtils.should_receive(:ln_sf).with(@expected_release_dir, "/my/deploy/dir/current")
    @provider.should_receive(:enforce_ownership)
    @provider.link_current_release_to_production
  end

  context "with a customized app layout" do

    before do
      @resource.purge_before_symlink(%w{foo bar})
      @resource.create_dirs_before_symlink(%w{baz qux})
      @resource.symlinks "foo/bar" => "foo/bar", "baz" => "qux/baz"
      @resource.symlink_before_migrate "radiohead/in_rainbows.yml" => "awesome"
    end

    it "purges the purge_before_symlink directories" do
      FileUtils.should_receive(:rm_rf).with(@expected_release_dir + "/foo")
      FileUtils.should_receive(:rm_rf).with(@expected_release_dir + "/bar")
      @provider.purge_tempfiles_from_current_release
    end

    it "symlinks files from the shared directory to the current release directory" do
      FileUtils.should_receive(:mkdir_p).with(@expected_release_dir + "/baz")
      FileUtils.should_receive(:mkdir_p).with(@expected_release_dir + "/qux")
      FileUtils.stub(:mkdir_p).with(@resource.shared_path + "/foo/bar")
      FileUtils.stub(:mkdir_p).with(@resource.shared_path + "/baz")
      FileUtils.should_receive(:ln_sf).with("/my/deploy/dir/shared/foo/bar", @expected_release_dir + "/foo/bar")
      FileUtils.should_receive(:ln_sf).with("/my/deploy/dir/shared/baz", @expected_release_dir + "/qux/baz")
      FileUtils.should_receive(:ln_sf).with("/my/deploy/dir/shared/radiohead/in_rainbows.yml", @expected_release_dir + "/awesome")
      @provider.should_receive(:enforce_ownership)
      @provider.link_tempfiles_to_current_release
    end

  end

  it "does nothing for restart if restart_command is empty" do
    @provider.should_not_receive(:run_command)
    @provider.restart
  end

  it "runs the restart command in the current application dir when the resource has a restart_command" do
    @resource.restart_command "restartcmd"
    @provider.should_receive(:run_command).with(:command => "restartcmd", :cwd => "/my/deploy/dir/current", :log_tag => "deploy[/my/deploy/dir]", :log_level => :debug)
    @provider.restart
  end

  it "lists all available releases" do
    all_releases = ["/my/deploy/dir/20040815162342", "/my/deploy/dir/20040700000000",
                    "/my/deploy/dir/20040600000000", "/my/deploy/dir/20040500000000"].sort!
    Dir.should_receive(:glob).with("/my/deploy/dir/releases/*").and_return(all_releases)
    @provider.all_releases.should eql(all_releases)
  end

  it "removes all but the 5 newest releases" do
    all_releases = ["/my/deploy/dir/20040815162342", "/my/deploy/dir/20040700000000",
                    "/my/deploy/dir/20040600000000", "/my/deploy/dir/20040500000000",
                    "/my/deploy/dir/20040400000000", "/my/deploy/dir/20040300000000",
                    "/my/deploy/dir/20040200000000", "/my/deploy/dir/20040100000000"].sort!
    @provider.stub!(:all_releases).and_return(all_releases)
    FileUtils.should_receive(:rm_rf).with("/my/deploy/dir/20040100000000")
    FileUtils.should_receive(:rm_rf).with("/my/deploy/dir/20040200000000")
    FileUtils.should_receive(:rm_rf).with("/my/deploy/dir/20040300000000")
    @provider.cleanup!
  end

  it "removes all but a certain number of releases when the resource has a keep_releases" do
    @resource.keep_releases 7
    all_releases = ["/my/deploy/dir/20040815162342", "/my/deploy/dir/20040700000000",
                    "/my/deploy/dir/20040600000000", "/my/deploy/dir/20040500000000",
                    "/my/deploy/dir/20040400000000", "/my/deploy/dir/20040300000000",
                    "/my/deploy/dir/20040200000000", "/my/deploy/dir/20040100000000"].sort!
    @provider.stub!(:all_releases).and_return(all_releases)
    FileUtils.should_receive(:rm_rf).with("/my/deploy/dir/20040100000000")
    @provider.cleanup!
  end

  it "fires a callback for :release_deleted when deleting an old release" do
    all_releases = ["/my/deploy/dir/20040815162342", "/my/deploy/dir/20040700000000",
                    "/my/deploy/dir/20040600000000", "/my/deploy/dir/20040500000000",
                    "/my/deploy/dir/20040400000000", "/my/deploy/dir/20040300000000"].sort!
    @provider.stub!(:all_releases).and_return(all_releases)
    FileUtils.stub!(:rm_rf)
    @provider.should_receive(:release_deleted).with("/my/deploy/dir/20040300000000")
    @provider.cleanup!
  end

  it "puts resource.to_hash in @configuration for backwards compat with capistano-esque deploy hooks" do
    @provider.instance_variable_get(:@configuration).should == @resource.to_hash
  end

  it "sets @configuration[:environment] to the value of RAILS_ENV for backwards compat reasons" do
    resource = Chef::Resource::Deploy.new("/my/deploy/dir")
    resource.environment "production"
    provider = Chef::Provider::Deploy.new(resource, @run_context)
    provider.instance_variable_get(:@configuration)[:environment].should eql("production")
  end

  it "shouldn't give a no method error on migrate if the environment is nil" do
    @provider.stub!(:enforce_ownership)
    @provider.stub!(:run_symlinks_before_migrate)
    @provider.stub!(:run_command)
    @provider.migrate

  end

  context "using inline recipes for callbacks" do

    it "runs an inline recipe with the provided block for :callback_name == {:recipe => &block} " do
      snitch = nil
      recipe_code = Proc.new {snitch = 42}
      #@provider.should_receive(:instance_eval).with(&recipe_code)
      @provider.callback(:whateverz, recipe_code)
      snitch.should == 42
    end

    it "loads a recipe file from the specified path and from_file evals it" do
      ::File.should_receive(:exist?).with(@expected_release_dir + "/chefz/foobar_callback.rb").once.and_return(true)
      ::Dir.should_receive(:chdir).with(@expected_release_dir).and_yield
      @provider.should_receive(:from_file).with(@expected_release_dir + "/chefz/foobar_callback.rb")
      @provider.callback(:whateverz, "chefz/foobar_callback.rb")
    end

    it "instance_evals a block/proc for restart command" do
      snitch = nil
      restart_cmd = Proc.new {snitch = 42}
      @resource.restart(&restart_cmd)
      @provider.restart
      snitch.should == 42
    end

  end

  describe "API bridge to capistrano" do
    it "defines sudo as a forwarder to execute" do
      @provider.should_receive(:execute).with("the moon, fool")
      @provider.sudo("the moon, fool")
    end

    it "defines run as a forwarder to execute, setting the user, group, cwd and environment to new_resource.user" do
      mock_execution = mock("Resource::Execute")
      @provider.should_receive(:execute).with("iGoToHell4this").and_return(mock_execution)
      @resource.user("notCoolMan")
      @resource.group("Ggroup")
      @resource.environment("APP_ENV" => 'staging')
      @resource.deploy_to("/my/app")
      mock_execution.should_receive(:user).with("notCoolMan")
      mock_execution.should_receive(:group).with("Ggroup")
      mock_execution.should_receive(:cwd){|*args|
        if args.empty?
          nil
        else
          args.size.should == 1
          args.first.should == @provider.release_path
        end
      }.twice
      mock_execution.should_receive(:environment){ |*args|
        if args.empty?
          nil
        else
          args.size.should == 1
          args.first.should == {"APP_ENV" => "staging"}
        end
      }.twice
      @provider.run("iGoToHell4this")

    end

    it "defines run as a forwarder to execute, setting cwd and environment but not override" do
      mock_execution = mock("Resource::Execute")
      @provider.should_receive(:execute).with("iGoToHell4this").and_return(mock_execution)
      @resource.user("notCoolMan")
      mock_execution.should_receive(:user).with("notCoolMan")
      mock_execution.should_receive(:cwd).with(no_args()).and_return("/some/value")
      mock_execution.should_receive(:environment).with(no_args()).and_return({})
      @provider.run("iGoToHell4this")
    end

    it "converts sudo and run to exec resources in hooks" do
      runner = mock("tehRunner")
      Chef::Runner.stub!(:new).and_return(runner)

      snitch = nil
      @resource.user("tehCat")

      callback_code = Proc.new do
        snitch = 42
        temp_collection = self.resource_collection
        run("tehMice")
        snitch = temp_collection.lookup("execute[tehMice]")
      end

      runner.should_receive(:converge)
      #
      @provider.callback(:phony, callback_code)
      snitch.should be_an_instance_of(Chef::Resource::Execute)
      snitch.user.should == "tehCat"
    end
  end

  describe "installing gems from a gems.yml" do

    before do
      ::File.stub!(:exist?).with("#{@expected_release_dir}/gems.yml").and_return(true)
      @gem_list = [{:name=>"eventmachine", :version=>"0.12.9"}]
    end

    it "reads a gems.yml file, creating gem providers for each with action :upgrade" do
      IO.should_receive(:read).with("#{@expected_release_dir}/gems.yml").and_return("cookie")
      YAML.should_receive(:load).with("cookie").and_return(@gem_list)

      gems = @provider.send(:gem_packages)

      gems.map { |g| g.action }.should == [[:install]]
      gems.map { |g| g.name }.should == %w{eventmachine}
      gems.map { |g| g.version }.should == %w{0.12.9}
    end

    it "takes a list of gem providers converges them" do
      IO.stub!(:read)
      YAML.stub!(:load).and_return(@gem_list)
      expected_gem_resources = @provider.send(:gem_packages).map { |r| [r.name, r.version] }
      gem_runner = @provider.send(:gem_resource_collection_runner)
      # no one has heard of defining == to be meaningful so I have use this monstrosity
      actual = gem_runner.run_context.resource_collection.all_resources.map { |r| [r.name, r.version] }
      actual.should == expected_gem_resources
    end

  end

end

redpajama_set_name: RedPajamaGithub


The Kamra® and Raindrop® corneal inlays were recently approved by the FDA for treatment of presbyopia, which is the inability to focus close for reading and other tasks when the patient is wearing his or her distance glasses or contact lenses, or is naturally focused far without glasses. This is most commonly due to age, beginning in one's mid-thirties and becoming intolerable by age 50 or so. Symptoms of inability to focus near may also occur after cataract surgery, which most commonly focuses the eye far, at the expense of unaided near vision.
These inlays may increase patients' ability to read without glasses, without as large of a sacrifice in distance vision as would occur with reading glasses, monovision contact lenses, or multifocal contact lenses. They may be placed in an eye with no prior surgical procedures, after LASIK or PRK, and theoretically even after cataract surgery.
Corneal inlays are considered by insurances to be cosmetic in nature, and are thus a non-covered service.


AOA has 300 bikes for rent that will fit your cycling needs perfectly. They have extensive knowledge of the local area and maps of the best mountain bike trails and road rides. Their experienced guides can also show you their favorite routes.
At over 16,000 acres, South Mountain Park/Preserve often is referred to as the largest municipal park in the country.
Perched atop the McDowell Mountains, the 140-foot Tom's Thumb offers hikers and climbers an opportunity for some old-time granite climbing.
Cool off with rafting, kayaking, tubing and stand-up paddle boarding on the lower Salt River. The pros at Arizona Outback Adventures will show you how it's done on half or full day excursions.
Spend the day or an afternoon tubing the Lower Salt River rapids in beautiful Tonto National Forest.
Nearly 30,000 acres makes White Tank the largest regional park in Maricopa County, it includes 25 miles of shared-use trails, ranging in length from 0.9 mile to 7.9 miles, and difficulty from easy to strenuous.
Located north of Phoenix, this 2,922-acre park sits in the upper Sonoran Desert and offers 11 miles of trails for hiking, mountain biking and horseback riding.
The Superstition Mountains on Phoenix's eastern edge offer spectacular outdoor recreation such as hiking and camping.
The Superstition Mountains on Phoenix's eastern edge offer spectacular hiking to landmarks such as Weavers Needle.
The Superstition Mountains on Phoenix's eastern edge offer spectacular hiking and recreation such as camping and lower Salt River rafting.
Japanese Friendship Garden of Phoenix, named Ro Ho En is an authentic 3.5 acre Japanese Stroll Garden with tea garden and tea house just north of downtown Phoenix.
Rock climbing is a popular outdoor activity in the Greater Phoenix area. Locations like Queen Creek Canyon in the Tonto National Forest and Tom's Thumb in McDowell Mountain Regional park are popular locations.
Maverick Helicopters offers a list of unique air tours for every attraction seeker including an awe-inspiring Grand Canyon helicopter tour.
Rainbow Ryders offers balloon rides every morning at sunrise year-round, weather permitting, and Sunset balloon flights are offered during winter.
Arizona Outdoor Fun offers affordable ATV rentals, jet ski rentals, motorcycle rentals, and sightseeing tours include ATV tours and jeep tours of the historic and scenic Arizona desert.
Experience the Sonoran Desert up close where you may see javalinas, desert mule deer, coyotes, rattlesnakes and others with Desert Wolf Tours.
Bartlett Lake is just 45 miles from downtown Phoenix and offers boating and more water recreation on the second-largest lake in the Tonto National Forest.
Desert Belle has been plowing the waters of Saguaro Lake for over forty years and offers 90 minute narrated public cruises.
Phoenix is the gateway to Grand Canyon National Park, one of the Seven Natural Wonders of the World.
The Apache Trail runs through the Tonto National Forest along the Superstition Mountains and three desert lakes. A drive along the trail is a four-hour round trip from Phoenix.
San Tan Mountain Regional Park offers more than eight miles of trails for hiking, mountain biking and horseback riding. Park trails range in length from 1.1 miles to 5 miles, and range in difficulty from easy to strenuous.
360 Adventures provides expert guides and equipment you need for canyoneering, rock climbing, hiking and mountain biking to experience Arizona's wilderness.
Experience the West in true cowboy style with family-friendly guided horseback trail rides.
Corral West offers picturesque guided horse trail rides with panoramic views of a pristine desert preserve in Estrella Mountain Park.
Float Balloon Tours takes you over the rooftops to the buttes and saguaros that make the Phoenix area so spectacular.
Take in the majesty of Grand Canyon National Park from the skies above it with Papillon Grand Canyon Helicopters.
The safari comes to Arizona at Out of Africa Wildlife Park. Get an up-close view of giraffes, zebras, antelopes and more.
Westwind plane tours give you a unique perspective of the Grand Canyon and other attractions that can only come from a tour by air, where every seat is a window seat.
Sedona's deep red-rock buttes provide a beautiful backdrop to boutiques, art galleries and resorts.


Looking back, there are some big life changer. Having a baby is definitely the biggest change about 4 years ago. That is the good bye to party life, and even to friend's world. To some extend, that is also the end of the two-person world, and become a one person world – Yifan's world. Night means at home, seeing Yifan play, and send him to bed. Night, is no longer the time to kill with many different ways.
Marriage is another smaller life changer. It means the end of life surrounded with friends (either female or male). It is a new journey. That means most of the friends of both world come to emerge into one big circle – I know many of the friend of Wendy's and she knows mine, and to find the perfect circle of knowing everyone is harder.
最后他提出一个问题:can people with a kid can still live like those without? Possible?


text:
A container used to display search results when a user types into a box
A search box that will pop up a search function
Help in Applying to the University
Advice for Teachers and Advisors
Research Graduate School
Why Bedfordshire?
Careers and Employability Service
Community and Faith
Beds SU
Research at Bedfordshire
Research & Innovation Service
Continuing Professional Development (CPD) courses
Higher & Degree Apprenticeships
Funding and Bid Support for Academics
Faculties, Schools and Departments
University of Bedfordshire Business School
Faculty of Creative Arts, Technology and Sciences
Faculty of Education, English and Sport
Faculty of Health and Social Sciences
Centre for Academic Partnerships
Academy for Learning and Teaching Excellence
Study You can use the Enter key to open this menu. When it is open, you can use the left and right arrow keys to move through the menu item.
University Life You can use the Enter key to open this menu. When it is open, you can use the left and right arrow keys to move through the menu item.
Research You can use the Enter key to open this menu. When it is open, you can use the left and right arrow keys to move through the menu item.
Business Services You can use the Enter key to open this menu. When it is open, you can use the left and right arrow keys to move through the menu item.
Faculties, Schools and Departments You can use the Enter key to open this menu. When it is open, you can use the left and right arrow keys to move through the menu item.
About Us You can use the Enter key to open this menu. When it is open, you can use the left and right arrow keys to move through the menu item.
Browse all Foundation, Undergraduate, Postgraduate and CPD courses.
Find out about Postgraduate study, including courses, fees and open events.
Support and information on admissions, fees and funding and courses for applicants from outside of the UK.
Our Higher and Degree Apprenticeships have been designed with employers in mind.
Find out about our Open Days, including online events, campus tours and webinars.
Explore our Aylesbury, Bedford, Luton and Milton Keynes campuses.
We offer a range of generous bursaries and scholarships to support you during your studies.
We want to guide and support you through your process.
Information for teachers and advisors in preparing students for university.
Apply to study a Research Degree.
Help and advice, so you can navigate your way through the University application process with your child.
The latest news and events from the University.
Discover more about joining alumni groups and staying in touch with the university.
Browse on campus accommodation options from our university accredited partners.
See how you'll be supported during your time at the University.
We welcome people of all faiths and beliefs and offer personal and spiritual support to students from over 100 countries.
Find out about examinations at the University of Bedfordshire.
Find out all you need to know about attending your graduation.
Welcome new students.
Take a look at the support that is on offer to assist you through your time at Bedfordshire.
Discover more about sports teams, our get active programme and gym membership.
We are here to help every student at the University of Bedfordshire get the most out of their university experience.
Find out more about applying for a research degree.
Explore world-leading research developed here at Bedfordshire.
Explore the research Bedfordshire Academics are involved with.
Latest research news.
Fins out more about our Business Services here
Take a look at how our we can enhance your business through innovation and enterprise.
To help employers invest in their teams, we have a suite of professional short courses and Continuing Professional Development (CPD) to help add value to your business.
For conferences, exhibitions, business meetings, training and cultural events.
The Bid Support Unit provides support to our researchers throughout all stages of the research life cycle.
Enquire about a course
Our Open Days
Home Faculties & Schools
Faculty of Creative Arts, Technologies & Science
Faculty of Education & Sport
University of Bedfordshire campuses - photos, maps and directions
Academic Information (for students)
Course enquiries
UK/EU course enquiries
study@beds.ac.uk
International course enquiries
international@beds.ac.uk
University Square
Luton, LU1 3JU
Copyright © 2023 University of Bedfordshire


Estimate requirements for a given trip and add at least 20%. Dont carry too much - re-supply is generally no more than a week away.
Always carry a reserve of tinned and preserved food for emergencies.
Vegetables - fresh, tinned or dried.
Fruit - fresh, canned, dried.
Milk in any form. Powdered for long trips.
Soft drink or other favourite beverages.
Remember that a well balanced diet is essential to your well being. Modern packaging and preservation methods enable a gourmet lifestyle in the bush, if you so wish. Be brave and experiment occasionally!
Always carry sufficient potable water.
Allow 4 to 5 litres per person per day.
On average tracks, 20 litres per person is the minimum requirement.
Remember that if you are stranded, water is the vital resource to maintain life.
Water should be carried in several containers to minimise losses in the event of leaks.
A micro filter pump and spare filters will provide potable water from a variety of sources.
Keep hydrated! A little and often is the best approach.


Beautiful small scale turtles in multi colors of green and blue on a white background. The turtles measure 1 1/4" long. Part of the Life Aquatic Ocean Collection by Dear Stella Fabric. 100% cotton fabric, 44/45 inches wide.


text:
The Angels of Morgan Hill: A Novel
By Donna VanLiere
Fiction | Fiction : Coming of Age | Fiction : Historical - General
Publication date: November 2007
From Donna VanLiere--the author of the beloved Christmas Hope series--comes a moving novel of faith, family, and destiny.
You might think that what you're about to read has a great deal to do with my father and growing up poor in east Tennessee, but there is so much more--what captured my heart was the hope of belonging and the dream of family. The woman I am has a great deal to do with that ninth year of my life. It started out as any other year, nothing extraordinary, but as each day unfolded it became remarkable in every way. There are times when I'm still amazed we made it through. It has been said that every life has a story. This is my story…--From the Prologue
Jane Gable thinks 1947 will be like every other year in Morgan Hill, Tennessee but but it's the year everything changes. Jane first lays eyes on young Milo Turner the day that her abusive, alcoholic father is buried in the Morgan Hill cemetery. The Turners are the first black family ever to move into the area, and while their presence challenges the comfort of many in the small, tight-knit community, Jane and her brother, John, have found new friends.
Then tragedy strikes the Turner household, and the Gable family is asked to make a decision that could rip their world apart. One path might open up a whole new world and bring them closer than ever. Or it might bring them nothing but trouble and heartache. On their journey, Jane discovers that angels are all around us, every day, in the most extraordinary--and ordinary--ways.
The Angels of Morgan Hill is filled with unforgettable characters who show us the ways and means of the heart and prove that even in the darkest hours, we are never truly alone.
The Angels of Morgan Hill ePub (Adobe DRM) can be read on any device that can open ePub (Adobe DRM) files.
Other books by Donna VanLiere
The Christmas Collection: The Christmas Shoes, The Christmas Blessing, and The Christmas Hope
Donna VanLiere
St. Martin's Press, November 2016
The Christmas Town
St. Martin's Press, October 2016
The Christmas Light
The Good Dream
St. Martin's Press, July 2012
more eBooks by Donna VanLiere
The Christmas Blessing
The Christmas Promise
The Christmas Shoes
The Christmas Hope