32;
 stroke-dasharray: 38 100; /* for 38% */
}
Note how easy it now is to change the percentage. Of course, even with this simplification, we don't want to have to repeat all this SVG markup for every pie chart. It's time for JavaScript to lend us its helping hand for a little bit of automation. We will write a small script to take simple HTML markup like the following…

20%

60%

…and add an inline SVG inside every .pie element, with all necessary elements and attributes. It will also add a <title> element, for accessibility, so that screen reader users can also know what percentage is displayed. The final script will look like this:
$$('.pie').forEach(function(pie) {
 var p = parseFloat(pie.textContent);
 var NS = "_URL_
 var svg = document.createElementNS(NS, "svg");
 var circle = document.createElementNS(NS, "circle");
 var title = document.createElementNS(NS, "title");
 circle.setAttribute("r", 16);
 circle.setAttribute("cx", 16);
 circle.setAttribute("cy", 16);
 circle.setAttribute("stroke-dasharray", p + " 100");
 svg.setAttribute("viewBox", "0 0 32 32");
 title.textContent = pie.textContent;
 pie.textContent = '';
 svg.appendChild(title);
 svg.appendChild(circle);
 pie.appendChild(svg);
});
That's it! You might be thinking that the CSS method is better, because its code is simpler and less alien. However, the SVG method has certain benefits over the pure CSS solution:
 - It's very easy to add a third color: just add another stroked circle and shift its stroke with stroke-dashoffset. Alternatively, add its stroke length to the stroke length of the circle before (underneath) it. How exactly do you picture adding a third color to pie charts made with the first solution?
 - We don't have to take any extra care for printing, as SVG elements are considered content and are printed, just like  elements. The first solution depends on backgrounds, and thus, will not print.
 - We can change the colors with inline styles, which means we can easily change them via scripting (e.g., depending on user input). The first solution relies on pseudo-elements, which cannot take inline styles except via inheritance, which is not always convenient.
SVG Pie
Future Pie Charts Link
Conical gradients would be immensely helpful here too. All it would take for a pie chart would be a circular element, with a conical gradient of two color stops. For example, the 40% pie chart in Figure 5 would be as simple as:
.pie {
 width: 100px; height: 100px;
 border-radius: 50%;
 background: conic-gradient(#655 40%, yellowgreen 0);
}
Furthermore, once the updated attr() function defined in CSS Values Level 39 is widely implemented, you will be able to control the percentage with a simple HTML attribute:
background: conic-gradient(#655 attr(data-value %), yellowgreen 0);
This also makes it incredibly easy to add a third color. For example, for a pie chart like the one shown on the pie chart above, we would just add two more color stops:
background: conic-gradient(deeppink 20%, #fb3 0, #fb3 30%, yellowgreen 0);
Editor's note: You can use conic gradients today thanks to Lea's Conic Gradient polyfill10, published shortly after her SmashingConf talk. And this is how you would design a simple pie chart with CSS! What method would you use and why? Or perhaps you've come up with an entirely different solution? Let us know in the comments to this post!
(vf, ml, mh, og)
Footnotes Link
 1. 1 _URL_
 2. 2 _URL_
 3. 3 _URL_
 4. 4 _URL_
 5. 5 _URL_
 6. 6 _URL_
 7. 7 _URL_
 8. 8 _URL_
 9. 9 _URL_
 10. 10
SmashingConf Barcelona 2016
Hold on, Tiger! Thank you for reading the article. Did you know that we also publish printed books and run friendly conferences – crafted for pros like you? Like SmashingConf Barcelona, on October 25–26, with smart design patterns and front-end techniques.
↑ Back to top Tweet itShare on Facebook
Advertisement
Lea is currently busy doing research in Human-Computer Interaction at MIT CSAIL. She has previously written an advanced CSS book for O'Reilly (CSS Secrets) and worked as a Developer Advocate at W3C. She has a long-standing passion for open web standards, and is one of the few Invited Experts in the CSS Working Group. Lea has also started several popular open source projects and web applications, such as Prism, Dabblet and -prefix-free and maintains a technical blog at lea.verou.me. Despite her academic pursuits in Computer Science, Lea is one of the few misfits who love code and design equally.
 1. 1
 Michael Schofield
 July 28, 2015 3:09 pm
 Awesome. Thanks Lea. Super instructive. For some of you others who are walking through with her tutorial in another window, I went cross-eyed for a second trying to figure out how
 $$( '.pie' ).forEach( /* etc */ );
 was working. It's this handy little function included in Lea's dabblet:
 function $$(selector, context) {
 context = context || document;
 var elements = context.querySelectorAll(selector);
 return Array.prototype.slice.call(elements);
 }
 6
 - 2
 Ah, yeah, in the book the definition of $$() is given in the introduction, but since this is an excerpt, it doesn't include that. Thanks for pointing it out!
 4
 2. 3
 Aamir Shahzad
 July 28, 2015 4:30 pm
 Simply a masterpiece!!!
 1
 3. 4
 Ah! Yes, this is a fun method for making pies. :-)
 Here's a Javascript function I wrote last month to generate SVG pie-charts using stroke-dasharray with multiple slices: _URL_
 0
 4. 5
 I used a css clip-path based solution once, although the core principle of it was quite similar to the first one with transforms – rotating two rectangles to the right positions. I like SVG solution here. Seems to be much easier and there are less thing that can break everything.
 0
 5. 6
 This topic is something that I have been looking into for a while now and your insight is exceptional. Thanks for sharing this information.
 0
 6. 7
 there are useful some interesting concepts.. nice…..
 Thank you so much for these tips.
 0
 7. 8
 Very nice. However the SVG approach looks broken in Firefox (color piese of chart don't meet in a single point in the center) and as such it can't really be used in the production.
 9
 8. 14
 Nick Santos
 July 29, 2015 2:16 pm
 I don't quite understand it yet but this is great! Will study it more in detail and apply it later on. Has the SVG approach been fixed in firefox yet?
 1
 9. 15
 this is awesome! very simple and easy to code. thank you for sharing.
 0
 10. 16
 Fantastic tutorial, just don't ever ever use a pie chart ever. Need to find out why? Buy Brian Suda's book from a few years back.
 0
 - 17
 Edward Tufte has a lot of hate for pie charts, which I guess is where this is from. However, there are certain types of data where pie charts are appropriate. Google it and you'll find tons of arguments to ponder.
 1
 11. 18
 Looks amazing in chrome, doesn't work on Safari.
 It works only for the SVG version.
 1
 12. 19
 Tarik Zakaria Benmerar
 July 30, 2015 9:33 am
 Experimenting it on my google chrome in Galaxy Tab S, there is some flickering at 50% in CSS case. It seemed very logical for me to have such rendering issue.
 0
 13. 20
 Here's an animated chart I built a few months back with CSS
 _URL_
 0
 14. 21
 If only I didn't have to support IE 7+
 0
 15. 22
 Erik Dahlström
 August 7, 2015 10:46 am
 The svg path approach isn't really all that hard, at least not if you have a tool to help you generate the path. Turns out I wrote something like that a while back, http://xn--dahlst


text:
How to trigger a workflow during termination of Contingent Worker?
"Image/data in this KBA is from SAP internal systems, sample data, or demo systems. Any resemblance to real data is purely coincidental."
Employee Central - Contingent Worker
Step 1: Create a Business Rule with Work Order as base object.
Step 2: Assign this rule to Work Order object under Configure Object Definition > Save Rule
Step 3: Go to Employee's Profile > Take Action > Edit Work Order Information and change the End date. Workflow will get triggered.
Workflow for Contingent Worker, Termination of Contingent Worker, Work order workflow, End of Work order Workflow, Work Order, workorder, KBA, LOD-SF-EC-CWF, Contingent Workforce, Problem

source: openbmb/Ultra-FineWeb


text:
N.B. Vasilieva. Stone industry of the Mesolithic Sites in the Mologa-Sheksna Interfluve. Kazan, 2020.171 p
The monograph presents results of paleo-economic reconstructions the Mesolithic sites at the Mologa-Sheksna interfluve located in the central part of the European North. The author used technical-morphological, experimental-traceological and spatial analyzes of stone production inventory in order to fully reveal the information potential of the studied materials. The work presents the first description of the characteristic features of the flint processing technology and the main types of production activities practiced by the Mesolithic population of the region. The results of completed studies and archaeological context information have allowed to identify functional typology of the sites, as characterize various aspects of the historical and cultural processes which occurred at the Mologa-Sheksna interfluve during the Mesolithic.
The monograph is intended for archaeologists, historians, local historians, museum workers, university professors, teachers and everyone interested in primeval history.

source: m-a-p/FineFineWeb


text:
Open Observatory of Network Interference (OONI)
The Open Observatory of Network Interference (OONI) is a free software project under the Tor Project which aims to detect internet censorship, traffic manipulation and signs of surveillance around the world through the collection and processing of network measurements. Since late 2012, OONI has collected millions of network measurements across more than 90 countries around the world, shedding light on multiple cases of network interference. OONI is based on various free software tests which are designed to measure the following: a) Blocking of websites; b) Detection of systems responsible for censorship, surveillance and manipulation; and c) Reachability of Tor, proxies, VPNs, and sensitive domains. This will be added to Privacy Resources Subject Tracer™, This will be added to Entrepreneurial Resources Subject Tracer™. This will be added to World Wide Web Reference Subject Tracer™.


text:
Mentis Sciences Ceramic Composite Materials and Structures
Department of Defense
Missile Defense Agency
Agency Tracking Number:
Solicitation Topic Code:
Small Business Information
MENTIS SCIENCES, INC.
150 Dow Street, Tower Two, Manchester, NH, 03101
Socially and Economically Disadvantaged:
AbstractThis proposal presents a unique opportunity to develop low cost innovative manufacturing processes with the specific goal of complementing radome composite technology previously developed under SMDC Contract DASG60-98-C-0027, under which Mentis Sciences,Inc. (MSI) developed and evaluated composite radome materials for RF, specifically Ka band applications. The projected cost for the MSI's prototype PAC-3 radome is 1/10th of the total cost of the PAC-3 radome. The intent of this effort is to evaluatenovel higher temperature composite radome materials for X to W-band applications for future high performance missile platforms and offer the community a low cost alternative for these systems.These composites will be fabricated using commercially available, high purity ceramic powders and fillers, and will be produced using novel processing methods developed for the production and fabrication of parts with similar shapes to missile radomesdeveloped at MSI during the past year. The composite radomes will be produced using low cost ceramic slurry mixing techniques and a novel process to manufacture green radomes. The green body is nitrided freestanding in a furnace, eliminating the needfor expensive tooling and hot pressing. Multiple parts can be nitrided at the same time, reducing production cost. The proposed ceramic composite material is expected to exhibit excellent electrical and mechanical performance at a greatly reduced cost when compared to conventional silicon nitride radomes, and with equivalent or higher use temperature and rain erosionperformance.
* information listed above is at the time of submission.


Home » Configuration » Use the Factory Method Pattern for Object Creation in Sitecore
Use the Factory Method Pattern for Object Creation in Sitecore
Sitecore Technology MVP 2016
Sitecore MVP 2015
Sitecore MVP 2014
Enter your email address to follow this blog and receive notifications of new posts by email.
This post is a continuation of a series of posts I'm putting together around using design patterns in Sitecore, and will show a "proof of concept" around using the Factory Method pattern — a creational pattern whereby client code obtain instances of objects without knowing the concrete class types of these objects. This pattern promotes loose coupling between objects being created and the client code that use them.
In this "proof of concept", I am using an Item Validator to call a factory method to obtain a "fields comparer" object to ascertain whether one field contains a value greater than a value in another field, and will show this for two different field types in Sitecore.
I first defined an interface for objects that will compare values in two Sitecore fields:
using Sitecore.Data.Fields;
namespace Sitecore.Sandbox.Data.Validators.ItemValidators.FieldComparers
{
 public interface IFieldsComparer
 {
 bool IsFieldOneLessThanOrEqualToFieldTwo(Field fieldOne, Field fieldTwo);
 }
}
Instances of classes that implement the IFieldsComparer interface above will ascertain whether the value in fieldOne is less than or equal to the value in fieldTwo.
I then defined a class that implements the IFieldsComparer interface to compare integer values in two fields:
using System;
using Sitecore.Data.Fields;
using Sitecore.Diagnostics;
namespace Sitecore.Sandbox.Data.Validators.ItemValidators.FieldComparers
{
 public class IntegerFieldsComparer : IFieldsComparer
 {
 public bool IsFieldOneLessThanOrEqualToFieldTwo(Field fieldOne, Field fieldTwo)
 {
 Assert.ArgumentNotNull(fieldOne, "fieldOne");
 Assert.ArgumentNotNull(fieldTwo, "fieldTwo");
 return ParseInteger(fieldOne) <= ParseInteger(fieldTwo);
 }
 protected virtual int ParseInteger(Field field)
 {
 int fieldValue;
 int.TryParse(field.Value, out fieldValue);
 return fieldValue;
 }
 }
}
There isn't much to see in the class above. The class parses the integer values in each field, and checks to see if the value in fieldOne is less than or equal to the value in fieldTwo.
Now, let's create a another class — one that compares DateTime values in two different fields:
using System;
using Sitecore.Data.Fields;
using Sitecore.Diagnostics;
namespace Sitecore.Sandbox.Data.Validators.ItemValidators.FieldComparers
{
 public class DateFieldsComparer : IFieldsComparer
 {
 public bool IsFieldOneLessThanOrEqualToFieldTwo(Field fieldOne, Field fieldTwo)
 {
 Assert.ArgumentNotNull(fieldOne, "fieldOne");
 Assert.ArgumentNotNull(fieldTwo, "fieldTwo");
 return ParseDateTime(fieldOne) <= ParseDateTime(fieldTwo);
 }
 protected virtual DateTime ParseDateTime(Field field)
 {
 return DateUtil.IsoDateToDateTime(field.Value);
 }
 }
}
Similarly to the IFieldsComparer class for integers, the class above parses the field values into DateTime instances, and ascertains whether the DateTime value in fieldOne occurs before or at the same time as the DateTime value in fieldTwo.
You might now be asking "Mike, what about other field types?" Well, I could have defined more IFieldsComparer classes for other fields but this post would go on and on, and we both don't want that 😉 So, to account for other field types, I've defined the following Null Object for fields that are not accounted for:
using Sitecore.Data.Fields;
namespace Sitecore.Sandbox.Data.Validators.ItemValidators.FieldComparers
{
 public class NullFieldsComparer : IFieldsComparer
 {
 public bool IsFieldOneLessThanOrEqualToFieldTwo(Field fieldOne, Field fieldTwo)
 {
 return true;
 }
 }
}
The Null Object class above just returns true without performing any comparison.
Now that we have "fields comparers", we need a Factory method. I've defined the following interface for objects that will create instances of our IFieldsComparer:
using Sitecore.Data.Fields;
namespace Sitecore.Sandbox.Data.Validators.ItemValidators.FieldComparers
{
 public interface IFieldsComparerFactory
 {
 IFieldsComparer GetFieldsComparer(Field fieldOne, Field fieldTwo);
 }
}
Instances of classes that implement the interface above will return the appropriate IFieldsComparer for comparing the two passed fields.
The following class implements the IFieldsComparerFactory interface above:
using System;
using System.Collections.Generic;
using System.Xml;
using Sitecore.Configuration;
using Sitecore.Data.Fields;
using Sitecore.Diagnostics;
namespace Sitecore.Sandbox.Data.Validators.ItemValidators.FieldComparers
{
 public class FieldsComparerFactory : IFieldsComparerFactory
 {
 private static volatile IFieldsComparerFactory current;
 private static object locker = new Object();
 public static IFieldsComparerFactory Current
 {
 get
 {
 if (current == null)
 {
 lock (locker)
 {
 if (current == null)
 {
 current = CreateNewFieldsComparerFactory();
 }
 }
 }
 return current;
 }
 }
 private static IDictionary<string, XmlNode> FieldsComparersTypes { get; set; }
 private IFieldsComparer NullFieldsComparer { get; set; }
 static FieldsComparerFactory()
 {
 FieldsComparersTypes = new Dictionary<string, XmlNode>();
 }
 public IFieldsComparer GetFieldsComparer(Field fieldOne, Field fieldTwo)
 {
 Assert.IsNotNull(NullFieldsComparer, "NullFieldsComparer must be set in configuration!");
 if (!AreEqualIgnoreCase(fieldOne.Type, fieldTwo.Type) || !FieldsComparersTypes.ContainsKey(fieldOne.Type))
 {
 return NullFieldsComparer;
 }
 XmlNode configNode = FieldsComparersTypes[fieldOne.Type];
 if(configNode == null)
 {
 return NullFieldsComparer;
 }
 IFieldsComparer comparer = Factory.CreateObject(configNode, false) as IFieldsComparer;
 if (comparer == null)
 {
 return NullFieldsComparer;
 }
 return comparer;
 }
 private static bool AreEqualIgnoreCase(string stringOne, string stringTwo)
 {
 return string.Equals(stringOne, stringTwo, StringComparison.CurrentCultureIgnoreCase);
 }
 protected virtual void AddFieldsComparerConfigNode(XmlNode configNode)
 {
 if(configNode.Attributes["fieldType"] == null || string.IsNullOrWhiteSpace(configNode.Attributes["fieldType"].Value))
 {
 return;
 }
 if (configNode.Attributes["type"] == null || string.IsNullOrWhiteSpace(configNode.Attributes["type"].Value))
 {
 return;
 }
 FieldsComparersTypes[configNode.Attributes["fieldType"].Value] = configNode;
 }
 private static IFieldsComparerFactory CreateNewFieldsComparerFactory()
 {
 return Factory.CreateObject("factories/fieldsComparerFactory", true) as IFieldsComparerFactory;
 }
 }
}
The AddFieldsComparerConfigNode() method above is used by the Sitecore Configuration Factory to add configuration-defined Xml nodes that define field types and their IFieldsComparer — these are placed into the FieldsComparersTypes dictionary for later look-up and instantiation.
The GetFieldsComparer() factory method tries to figure out which IFieldsComparer to return from the FieldsComparersTypes dictionary. If an appropriate IFieldsComparer is found for the two fields, the method uses Sitecore.Configuration.Factory.CreateObject() — this is defined in Sitecore.Kernel.dll — to create the instance that is defined in the type attribute of the XmlNode that is stored in the FieldsComparersTypes dictionary.
If an appropriate IFieldsComparer cannot be determined for the passed fields, then the Null Object IFieldsComparer — this is injected into the NullFieldsComparer property via the Sitecore Configuration Factory — is returned.
As


Westminster's Montessori Administration Program
Admission requirements
 1. Baccalaureate degree.
 2. Applicants must meet one or more of the following three criteria:
 - Must hold an approved and valid state license or certificate for school administration
 - Be a currently practicing or experienced school administrator with at least three years experience as an administrator; or
 - Be in process of completing a state recognized collegiate program leading to license as a school administrator or equivalent required by state/school.
 3. Applicants must be able to present demonstrated administrative ability including school finance, legal, licensing, curriculum administration, personnel and supervision, program planning, and evaluation.
Program requirements
 1. Montessori Foundations and Theories
 2. At least 200 other clock hours of study chosen from the Montessori teacher education courses
 3. Administrative practicum. A year-long practicum as an administrator in a Montessori school
 4. Final exams and colloquium


it is possible to create an invalid XML tree (for example, by adding two attributes with the same name or by setting attribute/node name to empty/invalid string). Tree modification is optimized for performance and for memory consumption, so if you have enough memory you can create documents from scratch with pugixml and later save them to file/stream instead of relying on error-prone manual text writing and without too much overhead.
All member functions that change node/attribute data or structure are non-constant and thus can not be called on constant handles. However, you can easily convert constant handle to non-constant one by simple assignment: void foo(const pugi::xml_node& n) { pugi::xml_node nc = n; }, so const-correctness here mainly provides additional documentation.
As discussed before, nodes can have name and value, both of which are strings. Depending on node type, name or value may be absent. You can use set_name and set_value member functions to set them. Similar functions are available for attributes; however, the set_value function is overloaded for some other types except strings, like floating-point numbers. Also, attribute value can be set using an assignment operator. This is an example of setting node/attribute name and value (samples/modify_base.cpp):
pugi::xml_node node = doc.child("node");
// change node name
std::cout << node.set_name("notnode");
std::cout << ", new node name: " << << std::endl;
// change comment text
std::cout << doc.last_child().set_value("useless comment");
std::cout << ", new comment text: " << doc.last_child().value() << std::endl;
// we can't change value of the element or name of the comment
std::cout << node.set_value("1") << ", " << doc.last_child().set_name("2") << std::endl;
pugi::xml_attribute attr = node.attribute("id");
// change attribute name/value
std::cout << attr.set_name("key") << ", " << attr.set_value("345");
std::cout << ", new attribute: " << << "=" << attr.value() << std::endl;
// we can use numbers or booleans
std::cout << "new attribute value: " << attr.value() << std::endl;
// we can also use assignment operators for more concise code
attr = true;
std::cout << "final attribute value: " << attr.value() << std::endl;
Nodes and attributes do not exist without a document tree, so you can't create them without adding them to some document. A node or attribute can be created at the end of node/attribute list or before/after some other node. All insertion functions return the handle to newly created object on success, and null handle on failure. Even if the operation fails (for example, if you're trying to add a child node to PCDATA node), the document remains in consistent state, but the requested node/attribute is not added.
attribute() and child() functions do not add attributes or nodes to the tree, so code like node.attribute("id") = 123; will not do anything if node does not have an attribute with name "id". Make sure you're operating with existing attributes/nodes by adding them if necessary.
This is an example of adding new attributes/nodes to the document (samples/modify_add.cpp):
// add node with some name
pugi::xml_node node = doc.append_child("node");
// add description node with text child
pugi::xml_node descr = node.append_child("description");
descr.append_child(pugi::node_pcdata).set_value("Simple node");
// add param node before the description
pugi::xml_node param = node.insert_child_before("param", descr);
// add attributes to param node
param.append_attribute("name") = "version";
param.append_attribute("value") = 1.1;
param.insert_attribute_after("type", param.attribute("name")) = "float";
If you do not want your document to contain some node or attribute, you can remove it with remove_attribute and remove_child functions. Removing the attribute or node invalidates all handles to the same underlying object, and also invalidates all iterators pointing to the same object. Removing node also invalidates all past-the-end iterators to its attribute or child node list. Be careful to ensure that all such handles and iterators either do not exist or are not used after the attribute/node is removed.
This is an example of removing attributes/nodes from the document (samples/modify_remove.cpp):
// remove description node with the whole subtree
// remove id attribute
pugi::xml_node param = node.child("param");
// we can also remove nodes/attributes by handles
pugi::xml_attribute id = param.attribute("name");
Saving document
Often after creating a new document or loading the existing one and processing it, it is necessary to save the result back to file. Also it is occasionally useful to output the whole document or a subtree to some stream; use cases include debug printing, serialization via network or other text-oriented medium, etc. pugixml provides several functions to output any subtree of the document to a file, stream or another generic transport interface; these functions allow to customize the output format, and also perform necessary encoding conversions.
Before writing to the destination the node/attribute data is properly formatted according to the node type; all special XML symbols, such as < and &, are properly escaped. In order to guard against forgotten node/attribute names, empty node/attribute names are printed as ":anonymous". For well-formed output, make sure all node and attribute names are set to meaningful values.
If you want to save the whole document to a file, you can use the save_file function, which returns true on success. This is a simple example of saving XML document to file (samples/save_file.cpp):
// save document to file
std::cout << "Saving result: " << doc.save_file("save_file_output.xml") << std::endl;
To enhance interoperability pugixml provides functions for saving document to any object which implements C++ std::ostream interface. This allows you to save documents to any standard C++ stream (i.e. file stream) or any third-party compliant implementation (i.e. Boost Iostreams). Most notably, this allows for easy debug output, since you can use std::cout stream as saving target. There are two functions, one works with narrow character streams, another handles wide character ones.
This is a simple example of saving XML document to standard output (samples/save_stream.cpp):
// save document to standard output
std::cout << "Document:\n";;
All of the above saving functions are implemented in terms of writer interface. This is a simple interface with a single function, which is called several times during output process with chunks of document data as input. In order to output the document via some custom transport, for example sockets, you should create an object which implements xml_writer_file interface and pass it to xml_document::save function.
This is a simple example of custom writer for saving document data to STL string (samples/save_custom_writer.cpp); read the sample code for more complex examples:
struct xml_string_writer: pugi::xml_writer
 std::string result;
 virtual void write(const void* data, size_t size)
 result.append(static_cast(data), size);
While the previously described functions save the whole document to the destination, it is easy to save a single subtree. Instead of calling xml_document::save, just call xml_node::print function on the target node. You can save node contents to C++ IOstream object or custom writer in this way. Saving a subtree slightly differs from saving the whole document; read the manual for more information.
If you believe you've found a bug in pugixml, please file an issue via issue submission form. Be sure to include the relevant information so that the bug can be reproduced: the version of pugixml, compiler version and target architecture, the code that uses pugixml and exhibits the bug, etc. Feature requests and contributions can be filed as issues, too.
If filing an issue is not possible due to privacy or other concerns, you can contact pugixml author by e-mail directly:
The pugixml library is distributed under the MIT license:
Copyright (c) 2006-2020 Arseny Kapoulkine
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
restriction, including without limitation the rights to use,
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
This means that you can freely use pugixml in your applications, both open-source and proprietary. If you use pugixml in a product, it is sufficient to add an acknowledgment like this to the product distribution:
This software is based on pugixml library (
pugixml is Copyright (C) 2006-2020 Arseny Kapoulkine.
1. All trademarks used are properties of their respective owners.


text:
No modern masonry chimney, reinforced and strapped to the house as required by code, has failed that we know of in recent American Earthquakes.
Tall and unreinforced
In the Northridge and Loma Prieta quakes in California and the Nisqually quake in Washington many old chimneys - even tall chimneys - did not fail. Even near the epicenter, many old and un-reinforced chimneys were not damaged.
The chimneys that did fail were, by in large, already in poor condition and in need of ordinary maintenance. Chimneys that served fireplaces and not furnaces generally faired better. Many of the chimneys that failed were lined with small metal flues indicating that a gas furnace had been vented into the chimney, and that probably the chimney had been damaged by acid flue gas condensation before the lining was installed. Chimneys that were poorly built to begin with or that were not maintained were the ones that failed.
Again, we found no modern masonry chimney built to code that failed in any of the three earthquakes.
Excerpts pertaining to masonry chimneys from a 1994 article by Richard E. Klingner, "Performance of Masonry Structures"
The Nisqually Quake And Masonry chimneys a report prepared by Jim Buckley for FEMA
<<< BACK - Construction - NEXT - Cost >>>
Back to Training Program for Masons Index
Buckley Rumford Fireplace Home Page
Copyright 1995 - 2011 Jim Buckley
All rights reserved.

source: HuggingFaceFW/fineweb-edu


BEGIN:VCALENDAR PRODID:-//Columba Systems Ltd//NONSGML CPNG/SpringViewer/ICal Output/3.3- M3//EN VERSION:2.0 CALSCALE:GREGORIAN METHOD:PUBLISH BEGIN:VEVENT DTSTAMP:20120904T135634Z DTSTART:20121106T094500Z DTEND:20121106T143000Z SUMMARY:Gateways - Year 11 Skills for Success Visit UID:{}k24-h6p2amw 2-nlb5yp DESCRIPTION:The University of Manchester Gateway Programme provides a new opportunity for Year 7-11 learners within Greater Manchester to partici pate in a coherent series of academic enrichment and Higher Education aw areness activities.\n\nThe Y11 Skills for Success Visit focuses on impro ving learners' research and team-working skills through completing a gro up research enquiry into a topical issue. The learners will be given a b rief introduction to note taking followed by a short interactive lecture on the topic for the day. Learners mix with pupils from other schools w ith the aim of creating and delivering a presentation about their resear ch and findings. This task develops the learners' communication and tea m-working skills and encourages them to learn from others' experiences a nd expertise. \n STATUS:TENTATIVE TRANSP:TRANSPARENT CLASS:PUBLIC END:VEVENT END:VCALENDAR


text:
House Speaker Azis Syamsuddin. (BETWEEN PHOTOS / Reno Esnir / wsj / aa)
jpnn.com, JAKARTA – Deputy Speaker of the Indonesian Parliament Azis Syamsuddin asked the Ministry of Health (Kemenkes) to warn hospitals and health facilities that produce a lot of Covid-19 medical waste so that they have good facilities and management.
He emphasized that it is necessary to regulate and manage medical waste such as using an incinerator so that it does not accumulate and be disposed of carelessly, which can cause new health problems and have a negative impact on the environment.
He explained that the Jakarta Environment Agency (LK) recorded medical waste originating from 182 health service facilities (fasyankes) in the capital reaching 6,678 tons during the Covid-19 pandemic from April 2020-24 January 2021.
Meanwhile, recently, researchers from LIPI, IPB, and the Open University found PPE waste in the form of medical masks, gloves, hazmat, raincoats, face shields polluting the area at the mouth of the Marunda and Cilincing rivers towards Jakarta Bay.
Azis hopes that the Ministry of Environment and Forestry (KLHK) together with the regional government (pemda) clean up the area in the mouth of the Marunda and Cilincing rivers, so as not to disturb the marine ecosystem in these waters.
"The Ministry of Health is able to ask hospitals and health facilities to increase their medical waste management capacity, given that the Covid-19 cases are still increasing and reaching 1.17 million cases (data as of 9 February 2021)," he said, Thursday (11/2) .
He asked the Ministry of Health through the Directorate General of Waste, Waste and B3 Management to oblige hospitals and health facilities to create a good medical waste management system such as sorting, storage, and final waste management so that it can be adjusted to several regulations.
First, the Covid-19 Health Care Facilities Waste Management Guidelines.
Source: JPNN.com | Recent RSS Feed by _URL_.
*The article has been translated based on the content of JPNN.com | Recent RSS Feed by _URL_. If there is any problem regarding the content, copyright, please leave a report below the article. We will try to process as quickly as possible to protect the rights of the author. Thank you very much!
*We just want readers to access information more quickly and easily with other multilingual content, instead of information only available in a certain language.
*We always respect the copyright of the content of the author and always include the original link of the source article.If the author disagrees, just leave the report below the article, the article will be edited or deleted at the request of the author. Thanks very much! Best regards!


In search of the modern Skidmore standard
Kristin E. Hickman, Matthew D. Krueger
Research output: Contribution to journalReview articlepeer-review
70 Scopus citations
This Article offers a comprehensive examination of the Skidmore standard of judicial review as applied by the courts in the period since the Supreme Court revitalized Skidmore in United States v. Mead Corp. The Article documents an empirical study of five years worth of Skidmore applications in the federal courts of appeals. In the study, we evaluate two competing conceptions of Skidmore review that are apparent from the Supreme Court's post-Mead jurisprudence-the independent judgment model and the theoretically more deferential sliding-scale model-and demonstrate that the appellate courts overwhelmingly follow the sliding-scale approach. Also, we document that Skidmore review is much more deferential to agency legal interpretations than indicated by two other, significantly more limited studies, with agency interpretations prevailing in more than sixty percent of Skidmore applications. Drawing from the Skidmore applications studied, we analyze qualitatively how the appellate courts apply the Skidmore standard as a sliding scale and identify where those courts are struggling to make sense of Skidmore '5 dictates within that model. To resolve the lower courts' difficulties, we propose reconceptualizing Skidmore '5 sliding scale as balancing comparative agency expertise against the potential for agency arbitrariness across three attitudinal zones. Finally, we note several burgeoning issues concerning the scope of Skidmore's applicability and offer preliminary thoughts for addressing those questions.
Original languageEnglish (US)
Pages (from-to)1235-1320
Number of pages86
JournalColumbia Law Review
Issue number6
StatePublished - Oct 1 2007
Dive into the research topics of 'In search of the modern Skidmore standard'. Together they form a unique fingerprint.
Cite this


text:
Analytical Design of Stability Augmentation and Guidance Loops for a Beam Rider Guided Projectile.
BALLISTIC RESEARCH LABS ABERDEEN PROVING GROUND MD
Pagination or Media Count:
Design analyses were performed for the stability augmentation and guidance loops for a single axis of a 105mm beam rider guided projectile. Five flight conditions corresponding to various Mach numbers in the range from 1.5 to 4.0 were considered. Root locus techniques were used to select constant gains to provide good damping and good response to guidance commands over the Mach range considered. Transient responses to step, ramp, and parabolic inputs were calculated to illustrate the dynamic behavior characteristics of the design evolved. The influence of parameter changes on characteristic root locations was investigated. Author
- Fire Control and Bombing Systems


Return to Headlines
High School Pathways
Medford School District Pathways are an opportunity for all students to connect and engage in the high school experience by choosing courses that are offered for their concentration of interest. Pathways now has its own webpages! You can learn which courses are offered, which clubs you can join, and find out more about the career options and job connections associated with your concentration choice.
Similar to a college major, students pursue an area of concentration in a pathway of their choice by taking classes they enjoy and becoming involved in a related club, extra-curricular activity, and job shadow or career internship. Pathways help students prepare for their futures by exploring potential career paths and earning college credit and/or industry certification while still in high school.
What Pathways are offered at the Medford School District? Starting as early as the freshmen year, students will begin an area of concentration in one of the following Pathways: Academic, Career and Technical (CTE), or Visual and Performing Arts.
Hal Jones
Career Readiness Coordinator
Kristina Morgan
Office Manager, CTE/Pathways


Tag: date
How to find messages of a specific date on new facebook
Facebook messenger have changed a lot over the time.Lots of features has been added but some of the features requested by the users are still missing.One of the feature is the ability to search for the messages that has been sent in a specific date. Although you can search messages by using specific term that made in that conversation but you still cant search for messages by specific date.In this tutorial lets look how to fix this problem step by step using alternative ways. Read More


Difference between revisions of "Development/Tutorials/Accessibility"
Jump to: navigation, search
(How to test at-spi2 with Qt)
(Simon: Changed link to Simon homepage)

(15 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== KDE Accessibility Howto ==
+
= Introduction =
Accessibility on kde is not quite up to speed yet. We are close to working well with people with different disabilities, but not quite there yet. At least on linux. One key ingredient that is missing is [_URL_ qt-at-spi] which bridges Qt applications to at-spi2.
+
Below is a list of tutorials for KDE accessibility improvements.

For a brief overview of how accessibility works on linux platforms, take a look at [_URL_ _URL_
+
== Screen Reader ==
 +
;[_URL_ Accessibility Documentation for Users on userbase.kde.org]
 +
:''Explains how to get started with screen readers as a user.''

== Setup a test environment ==
+
;[[Development/Tutorials/Accessibility/Checklist|Accessibility Checklist]]
=== What you'll need ===
+
:''What to look for in your application to make it accessible for as many people as possible.''
In order to set up a test environment to help improve qt-at-spi (or at-spi itself) You'll need a few things. Orca can be installed from your distribution, as can accerciser, however accerciser will need to be run in a particular way to work with at-spi2 as I'll mention later. You'll also need at-spi2-core and at-spi2-atk to test gtk applications. You'll also need pyatspi2. The simplest way to get these is to clone them from the following git urls:
+

git://git.gnome.org/at-spi2-core
+
;[[Development/Tutorials/Accessibility/Screen_Reader_Setup|Screen Reader]]
git://git.gnome.org/at-spi2-atk
+
:''This tutorial will explain some details about using screen readers with KDE applications.''
git://git.gnome.org/pyatspi2
+
A screen reader is an application that uses speech synthesis to allow users with visual impairments to use a computer.

Then proceed to build them by running
+
== Jovie ==
 +
[_URL_ Jovie] is a subsystem within the KDE desktop for conversion of text to audible speech.

./autogen.sh --disable-relocate
+
;[[Development/Tutorials/Text-To-Speech|Text-To-Speech]]
make
+
:''How to utilize Jovie text-to-speech service in your application.''
make install
+
(or sudo make install if your user doesn't have write privileges to /usr/local)
+

=== How to test at-spi2 with gtk ===

Once these are installed, you can then test at-spi2 by running gcalctool with a few environment variables set. As mentioned on the [_URL_ at-spi dbus site] under "Instructions for Testing" you'll need some environment variables set. I use a file called ~/.a11ybashrc with the following contents:

export GTK_PATH=/usr/local/lib/gtk-2.0/
+
== Simon ==
export PYTHONPATH=/usr/local/lib/python2.6/site-packages/
+
export QT_ACCESSIBILITY=1
+
export GTK_MODULES=gail:atk-bridge
+

then I just source ~/.a11ybashrc to set up my shell for testing accessibility.
+
[_URL_ Simon] is an open-source speech recognition program and replaces the mouse and keyboard.

+
Then to test just run gcalctool with gcalctool & from that shell. You should see at-spi2-registryd in your process table once gcalctool has started. If not you are likely still using at-spi instead of at-spi2. You can use d-feet or qdbusviewer, or just qdbus to inspect the dbus interface of the registry and the accessible methods of the application at this point. You should also be able to run orca and hear the text of the calculator tool at this point.
+

+
=== How to test at-spi2 with Qt ===
+
Once you have a gtk app running correctly with orca and/or accerciser you are ready to try qt-at-spi. In order to do so, just clone the repo from
+
git://gitorious.org/qt-at-spi
+
Then run
+
qmake
+
make
+
make install
+

+
There is a handy calculator in qt-at-spi under the test folder that can be used to test qt's at-spi plugin with. Make sure QT_ACCESSIBILITY is set in your environment and run
+
test/test
+
from the source folder of qt-at-spi. You should see some console message about the bridge initializing. You'll also see the calculator's dbus path in the org.a11y.atspi.Registry GetChildren output.
+
Latest revision as of 21:55, 2 January 2014
Introduction
Below is a list of tutorials for KDE accessibility improvements.
Screen Reader
Accessibility Documentation for Users on userbase.kde.org
Explains how to get started with screen readers as a user.
Accessibility Checklist
What to look for in your application to make it accessible for as many people as possible.
Screen Reader
This tutorial will explain some details about using screen readers with KDE applications.
A screen reader is an application that uses speech synthesis to allow users with visual impairments to use a computer.
Jovie
Jovie is a subsystem within the KDE desktop for conversion of text to audible speech.
Text-To-Speech
How to utilize Jovie text-to-speech service in your application.
Simon
Simon is an open-source speech recognition program and replaces the mouse and keyboard.
This page was last modified on 2 January 2014, at 21:55. Content is available under Creative Commons License SA 3.0 as well as the GNU Free Documentation License 1.2 unless otherwise noted.


FBI warns child abductors may use social media to lure victims
Facebook and Twitter applications are seen on an Apple iPhone 11 Pro Max. (Photo by Jaap Arriens/NurPhoto via Getty Images) (Getty Images)
The FBI is warning parents that criminals may pose as minors online in order to lure children into traps and abduct them.
"While criminals exploit social media and social networks to commit crimes involving child sexual abuse material, sex trafficking of a minor, and child sex tourism, the use of these platforms to facilitate child abductions is lesser-known," the Bureau said in a statement.
According to authorities, child abductors will create accounts on various social media networks and dating apps to search for targets, as those tools are considered lower-risk ways of gaining access to children.
Criminals will then groom the children online, enticing their victim to meet with the eventual abductor in person.
While the number of child abductions using social media only represents a small percentage of FBI child abduction investigations, authorities say that with children spending so much more time on computers or mobile devices with access to the internet, they expect the percentage of criminals using those methods to lure victims will increase.
"With current restrictions due to the COVID-19 pandemic, schools in many areas of the United States are likely to remain closed, resulting in children being left at home and potentially unsupervised due to reduced daycare options and parents having to return to work," the FBI said. "As a result, they are likely to spend more time on the Internet, further increasing their vulnerability."
The FBI also described three incidents where social media or social networks were used to facilitate child abductions.


ASP.NET Core has adopted a new routing scheme called Endpoint since version 2.2, which is not much different from the original scheme, but the internal operation is quite different. The previous article introduced the operation mechanism of the original routing scheme in detail. This article still uses a picture to understand the new version of the operating mechanism, and finally summarizes the similarities and differences between the two.
1 Overview
This scheme starts from version 2.2 and is called endpoint routing ( hereafter referred to as "new version" ). It is enabled by default. If you want to use the original scheme ( <=2.1, the original version is called below ), you can use AddMvc. Make settings
services.AddMvc(option=>option.EnableEndpointRouting = false).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
EnableEndpointRouting defaults to true, which means that the new Endpoint scheme is enabled. If set to false, the legacy (<=2.1) routing scheme is used.
In terms of configuration method, the system is still configured in use.Mvc() in Startup. In fact, the internal processing middleware has been changed from the original RouterMiddleware to EndpointMiddleware and EndpointRoutingMiddleware. The following still passes a picture. Take a detailed look at the picture.
2 the process and analysis
1. Initial configuration of the route (the first two lanes of the figure)
1 Everything is still starting from Startup, and like the old version, it is configured by UseMvc method, and one or more configurations such as routes.MapRoute(…) are not mentioned.Let's focus on the following process, take a look at the UseMvc method in MvcApplicationBuilderExtensions:
public static IApplicationBuilder UseMvc(
 this IApplicationBuilder app,
 Action configureRoutes)
 var options = app.ApplicationServices.GetRequiredService>();
 if (options.Value.EnableEndpointRouting)
 var mvcEndpointDataSource = app.ApplicationServices
 var parameterPolicyFactory = app.ApplicationServices
 var endpointRouteBuilder = new EndpointRouteBuilder(app);
 foreach (var router in endpointRouteBuilder.Routes)
 // Only accept Microsoft.AspNetCore.Routing.Route when converting to endpoint
 // Sub-types could have additional customization that we can't knowingly convert
 if (router is Route route && router.GetType() == typeof(Route))
 var endpointInfo = new MvcEndpointInfo(
 route.Constraints.ToDictionary(kvp => kvp.Key, kvp => (object)kvp.Value),
 throw new InvalidOperationException($"Cannot use '{router.GetType().FullName}' with Endpoint Routing.");
 if (!app.Properties.TryGetValue(EndpointRoutingRegisteredKey, out _))
 // Matching middleware has not been registered yet
 // For back-compat register middleware so an endpoint is matched and then immediately used
 return app.UseEndpoint();
2 Line 6, where the value of EnableEndpointRouting is set and judged. If it is false, the old version is used. See the previous article for details. The value is true by default, that is, the new version is used.
3 Corresponding to the 9th line, MvcEndpointDataSource is a very important role in the new version of the route. In the startup initialization phase, it completes the routing table storage and conversion. Here, first mark it with color, let's remember it, in the following process. Detailed in the introduction.
4 corresponds to the 16th line, like the old version of RouteBuilder, here will be a new endpointRouteBuilder, both of which are an IRouteBuilder, so also call the configureRoutes (endpointRouteBuilder) method (that is, the configuration in the startup) to get a collection of Route (IList ) is assigned to endpointRouteBuilder.Routes. Here is a special place to note if (router is Route route && router.GetType() == typeof(Route)), that is, only route type is accepted here, and the endpoint routing system IRouter-based extensibility is not supported, including inheritance from Route.
5 Corresponding to the 20th line, the endpointRouteBuilder.Routes just obtained is traversed, converted into a set of MvcEndpointInfo, and assigned to mvcEndpointDataSource.ConventionalEndpointInfos.
6 After that, the middleware is plugged into the pipeline. The processing middleware here is changed from the original RouterMiddleware to EndpointMiddleware and EndpointRoutingMiddleware.
 2. Processing of the request (the last two lanes of the figure)
Most of the functions of the request are in the middleware EndpointRoutingMiddleware. He has an important attribute _endpointDataSource to save the MvcEndpointDataSource generated in the initialization phase above, and the middleware EndpointMiddleware function is relatively simple, mainly after EndpointRoutingMiddleware filters out the endpoint and calls the endpoint. The endpoint.RequestDelegate(httpContext) handles the request.
7 The InitializeAsync() method is mainly used to call InitializeCoreAsync() to create a matcher. The code of this method shows that it is only executed once when the first request is made.
private Task InitializeAsync()
var initializationTask = _initializationTask;
if (initializationTask!= null)
return initializationTask;
return InitializeCoreAsync();
8 MvcEndpointDataSource An important method, UpdateEndpoints(), is to read all actions and match this action list with its ConventionalEndpointInfos list (see 5) to generate a new list. As shown below, we only configure a route such as "{controller=Home}/{action=Index}/{id?}" by default. The default HomeController has three actions, adds a controller named FlyLoloController and adds it. An action with attribute routing finally generates 7 Endpoints, which is a bit like the "product" of routing and action. Of course, here is just a simple example with the default program. There may be more routing templates registered in the actual project, there will be more Controller and Action, and attribute routing.
The specific code is as follows:
private void UpdateEndpoints()
 lock (_lock)
 var endpoints = new List();
 StringBuilder patternStringBuilder = null;
 foreach (var action in _actions.ActionDescriptors.Items)
 if (action.AttributeRouteInfo == null)
 // In traditional conventional routing setup, the routes defined by a user have a static order
 // defined by how they are added into the list. We would like to maintain the same order when building
 // up the endpoints too.
 // Start with an order of '1' for conventional routes as attribute routes have a default order of '0'.
 // This is for scenarios dealing with migrating existing Router based code to Endpoint Routing world.
 var conventionalRouteOrder = 1;
 // Check each of the conventional patterns to see if the action would be reachable
 // If the action and pattern are compatible then create an endpoint with the
 // area/controller/action parameter parts replaced with literals
 // e.g. {controller}/{action} with HomeController.Index and HomeController.Login
 // would result in endpoints:
 // - Home/Index
 // - Home/Login
 foreach (var endpointInfo in ConventionalEndpointInfos)
 // An 'endpointInfo' is applicable if:
 // 1. it has a parameter (or default value) for'required' non-null route value
 // 2. it does not have a parameter (or default value) for'required' null route value
 var isApplicable = true;
 foreach (var routeKey in action.RouteValues.Keys)
 if (!MatchRouteValue(action, endpointInfo, routeKey))
 isApplicable = false;
 if (!isApplicable)
 conventionalRouteOrder = CreateEndpoints(
 ref patternStringBuilder,
 suppressLinkGeneration: false,
 suppressPathMatching: false);
 var attributeRoutePattern = RoutePatternFactory.Parse(action.AttributeRouteInfo.Template);
 ref patternStringBuilder,
 nonInlineDefaults: null,
 dataTokens: null,
 allParameterPolicies: null,
 // See comments in DefaultActionDescriptorCollectionProvider. These steps are done
 // in a specific order to ensure callers always see a consistent state.
 // Step 1 - capture old token
 var oldCancellationTokenSource = _cancellationTokenSource;
 // Step 2 - update endpoints
 _endpoints = endpoints;
 // Step 3 - create new change token
 _cancellationTokenSource = new CancellationTokenSource();
 _changeToken = new CancellationChangeToken(_cancellationTokenSource.Token);
 // Step 4 - trigger old token
The essence is to calculate a request endpoint that may be requested, that is, an Endpoint. Thus, as in the previous article, I want to customize a handler to handle special templates (such as routes.MapRoute("flylolo/{code}/{name}", MyRouteHandler.Handler);) will be ignored, because It can't generate Endpoint, and this way can be customized by customizing a middleware, no need to mix in the route.
9 is to use the Matcher generated above, carry the Endpoint list to match the request URL, and assign the matching Endpoint to the feature.Endpoint.
10 Get the feature.Endpoint, if it exists, call its RequestDelegate to process the request httpContext.
3 the new version and the old version of the similarities and differences summary
Briefly talk about the difference between the two versions from the two stages of application startup and request processing:
1. Start-up phase:
Most of the stages are similar. They are configured with a routing table by Startup's app.UseMvc() method, a Route collection of Routes(IList), and then simply convert it.
<=2.1: Converting Routes to RouteCollection
2.2+ : Convert Routes to List


text:
Search for items in this repository.
A bivariate return period based on copulas for hydrologic dam design: accounting for reservoir routing in risk estimation
Requena, A. I. and Mediero Orduña, Luis and Garrote de Marcos, Luis
A bivariate return period based on copulas for hydrologic dam design: accounting for reservoir routing in risk estimation.
"Hydrology and Earth System Sciences", v. 17
A multivariate analysis on flood variables is needed to design some hydraulic structures like dams, as the complexity of the routing process in a reservoir requires a representation of the full hydrograph. In this work, a bivariate copula model was used to obtain the bivariate joint distribution of flood peak and volume, in order to know the probability of occurrence of a given inflow hydrograph. However, the risk of dam overtopping is given by the maximum water elevation reached during the routing process, which depends on the hydrograph variables, the reservoir volume and the spillway crest length. Consequently, an additional bivariate return period, the so-called routed return period, was defined in terms of risk of dam overtopping based on this maximum water elevation obtained after routing the inflow hydrographs. The theoretical return periods, which give the probability of occurrence of a hydrograph prior to accounting for the reservoir routing, were compared with the routed return period, as in both cases hydrographs with the same probability will draw a curve in the peak-volume space. The procedure was applied to the case study of the Santillana reservoir in Spain. Different reservoir volumes and spillway lengths were considered to investigate the influence of the dam and reservoir characteristics on the results. The methodology improves the estimation of the Design Flood Hydrograph and can be applied to assess the risk of dam overtopping
Check whether the anglo-saxon journal in which you have published an article allows you to also publish it under open access.
Check whether the spanish journal in which you have published an article allows you to also publish it under open access.


text:
Kung Fu Panda is a 2008 American computer-animated wuxia comedy film produced by DreamWorks Animation and distributed by Paramount Pictures. [a] It was directed by John Stevenson and Mark Osborne in their directorial debuts, and stars the voices of Jack Black, Dustin Hoffman, Angelina Jolie, Ian McShane, Seth Rogen, Lucy Liu, David Cross, Randall Duk Kim, James Hong, Dan Fogler, Michael Clarke Duncan, and Jackie Chan. The film is set in a version of ancient China populated by anthropomorphic talking animals and revolves around a bumbling panda named Po, a kung fu enthusiast. When an evil kung fu warrior named Tai Lung is foretold to escape from prison, Po is unwittingly named the "Dragon Warrior", that was destined to defeat him.
kung fu panda colouring pages, Globe worksheets, pages for colour, or activity books can be a good option for parents and preschool teachers.


Builds message validators for ssb based on JSON-schema. Specifically designed for handling multiple different versions of a schema for a particular message type (e.g. when you add new requirements, or change the encoding of a particular field and publish a new version of the schema)
NOTE - this requires schemas which have both type and version fields.
Example Usage
Here's an example message that could validate as truthy...
 type:'reply',
 version: '1.0.0'
We inject all the relevant schemas into the validator. Any message passed will be validated based on the type and the version as determined by your schema.
var Validator = require('ssb-schema-validation')
var replySchemas = [
var isReply = Validator(replySchemas)
// => true / false
// => some errors
For a live example see e.g. ssb-dark-crystal-schema
Validator(schemas) => fn
Takes argument
 - schemas - an array of JSON-schema. These schemas must require messages to have type and version fields
Returns a function validator based on those schemas.
validator(msg, opts) => Bool
Takes arguments:
 - msg - a full ssb message, or the content field of such a message. Supporting both means you can use this validator to easily validate content either before writing to the database, or for reading from the database.
 - opts (optional) - an object of form { attachErrors: Boolean }, settings attachErrors: true mutates the original message by attaching any errors found during in validation. This option is false by default i.e. disabled.
Returns a Boolean: true/ false
Note - if the validator returns false, then details about why the message didn't pass validation can be found under validator.errors. This is reset after each message is passed in.
results matching ""
 No results matching ""


text:
I told you I can distinguish the shape and texture of different foods through my oesophagus, and yet you gave me the standard 'textbook answer' - I specifically asked you to tell me what it would do to a throat to have food stuck for long periods, and how long it would hold out, and you have not addressed my question AT ALL.
OK thank you - sadly I still don't know any more than what I know already. However, I do appreciate your second answer was a thought-out answer, and is to the best of your knowledge - could you please just answer yes or no to the following two questions:
1) is it possible to investigate my digestive tract whilst I am sedated?
2) if I were to have an X-ray while the food is stuck in my throat, would the food be visible?


text:
Accountability Strategies and Checklists: Mentoring Excellence Toolkit #4
Lois Zachary and Lory Fischler created these five toolkits on crucial aspects of mentoring as quick references that mentors and mentees can use to refresh their understanding, prepare for mentoring sessions, grasp key concepts of the process, and improve their overall experiences and strengthen their mentoring relationships. These compact, bound card sets will fit into your purse, briefcase, or pocket for quick review on the go.
Toolkit #4 covers the very important process of setting goals. It offers accountability strategies and checklists for mentoring excellence that can be used during each phase of the mentoring relationship. They can be used to guide mentoring conversations, gauge progress, and promote mutual accountability. These checklists can also be used to determine readiness to move on to the next phase.
The five toolkits include:
#1: Strategies and Checklists for Mentors
#2: Feedback and Facilitation for Mentors
#3: Strategies for Mentees
#4: Accountability Strategies and Checklists
#5: Mentoring Across Generations


text:
The big male nose
Source - _URL_
Male noses grow disproportionately larger than female noses beginning at puberty, a University of Iowa study has found. The reason: males need to breathe in more oxygen to feed muscle mass than females. - College of Dentistry, University of Iowa
Human noses come in all shapes and sizes. But one feature seems to hold true: Men's noses are bigger than women's.
A new study from the University of Iowa concludes that men's noses are about 10 percent larger than female noses, on average, in populations of European descent. The size difference, the researchers believe, comes from the sexes' different builds and energy demands: Males in general have more lean muscle mass, which requires more oxygen for muscle tissue growth and maintenance. Larger noses mean more oxygen can be breathed in and transported in the blood to supply the muscle.
The researchers also note that males and females begin to show differences in nose size at around age 11, generally, when puberty starts. Physiologically speaking, males begin to grow more lean muscle mass from that time, while females grow more fat mass. Prior research has shown that, during puberty, approximately 95 percent of body weight gain in males comes from fat-free mass, compared to 85 percent in females.
"This relationship has been discussed in the literature, but this is the first study to examine how the size of the nose relates to body size in males and females in a longitudinal study," says Nathan Holton, assistant professor in the UI College of Dentistry and lead author of the paper, published in the American Journal of Physical Anthropology. "We have shown that as body size increases in males and females during growth, males exhibit a disproportionate increase in nasal size. This follows the same pattern as energetic variables such as oxygenate consumption, basal metabolic rate and daily energy requirements during growth."
It also explains why our noses are smaller than those of our ancestors, such as the Neanderthals. The reason, the researchers believe, is because our distant lineages had more muscle mass, and so needed larger noses to maintain that muscle. Modern humans have less lean muscle mass, meaning we can get away with smaller noses.
"So, in humans, the nose can become small, because our bodies have smaller oxygen requirements than we see in archaic humans," Holton says, noting also that the rib cages and lungs are smaller in modern humans, reinforcing the idea that we don't need as much oxygen to feed our frames as our ancestors. "This all tells us physiologically how modern humans have changed from their ancestors."
Holton and his team tracked nose size and growth of 38 individuals of European descent enrolled in the Iowa Facial Growth Study from three years of age until the mid-twenties, taking external and internal measurements at regular intervals for each individual. The researchers found that boys and girls have the same nose size, generally speaking, from birth until puberty percolated, around age 11. From that point onward, the size difference grew more pronounced, the measurements showed.
"Even if the body size is the same," Holton says, "males have larger noses, because more of the body is made up of that expensive tissue. And, it's at puberty that these differences really take off."
Holton says the findings should hold true for other populations, as differences in male and female physiology cut across cultures and races, although further studies would need to confirm that.
Prior research appears to support Holton's findings. In a 1999 study published in the European Journal of Nutrition, researchers documented that males' energy needs doubles that of females post-puberty, "indicating a disproportional increase in energy expenditure in males during this developmental period," Holton and his colleagues write.
Another interesting aspect of the research is what it all means for how we think of the nose. It's not just a centrally located adornment on our face; it's more a valuable extension of our lungs.
"So, in that sense, we can think of it as being independent of the skull, and more closely tied with non-cranial aspects of anatomy," Holton says.
Thomas Southard, professor and chair of orthodontics in the UI College of Dentistry, is a contributing author on the paper. Other authors are Todd Yokley, from Metropolitan State University in Denver, and Andrew Froehle, from Wright State University, in Dayton, Ohio. The Department of Orthodontics in the UI College of Dentistry funded the research.
Note: This story has been adapted from a news release issued by the University of Iowa


Evaluation of Methods for Sentence and Lexical Alignment of Brazilian Portuguese and English Parallel Texts
Helena de Medeiros CaseliAline Maria da Paz SilvaMaria das Graças Volpe Nunes
Parallel texts, i.e., texts in one language and their translations to other languages, are very useful nowadays for many applications such as machine translation and multilingual information retrieval. If these texts are aligned in a sentence or lexical level their relevance increases considerably. In this paper we describe some experiments that have being carried out with Brazilian Portuguese and English parallel texts by the use of well known alignment methods: five methods for sentence alignment and two methods for lexical alignment. Some linguistic resources were built for these tasks and they are also described here. The results have shown that sentence alignment methods achieved 85.89% to 100% precision and word alignment methods, 51.84% to 95.61% on corpora from different genres.
Biblioteca Digital Brasileira de Computação - Contato:
 Mantida por:


text:
We are open Monday through Friday, 10-5, for pre-arranged curbside pickup and phone orders. Our online store is available 24/7!
Let's Go on Safari! - Book Reading and Signing
What happens when Kate, an 8-year-old girl from Austin, Texas, meets Michelle, a professional wildlife guide, while on safari in South Africa? The two new friends turn their adventures into a book encouraging kids everywhere to advocate for wild animals!
Kate Gilman Williams wrote Let's Go On Safari! when she was 8 years old, following a trip to South Africa with her family. On a safari adventure, she became friends with their guide, Michelle Campbell, who taught her about the many threats facing wildlife. Kate came home determined to do something to protect wild animals whose survival was being endangered by humans – and she knew her young generation could be inspired to help.
Michelle Campbell was born in South Africa and schooled in the UK. Working first as an economist, it was her love for nature that drew her back home to South Africa, where she worked as a safari guide for 6 years. She then spent a year volunteering for wildlife projects (living in her Land Rover!), documenting and sharing her conservation adventures on her website, Wild Wonderful World. Today she is working on conservation projects of her own, advocating for wildlife and encouraging children, through education and exposure, to get involved in saving wildlife.


Faculty Member in Computer Science
College of the Atlantic (COA) seeks a full-time faculty member in Computer Science. The anticipated start date is August, 2016. The successful candidate will be the first faculty member in computer science at COA. The faculty member will offer a range of classes to help students gain basic to advanced programming skills, while introducing students to the central questions of computer science and exposing them to the styles of thought and habits of mind associated with computer scientists. The faculty member is expected to help students make connections between computer science and other areas of the curriculum, including art and design and the humanities, as well as the natural and social sciences.
In addition to introductory and intermediate programming classes, we are interested in a candidate who can offer engaging and challenging courses that explore the intersections of computer science and computing with different aspects of the human experience and academic and creative areas. Examples of such classes might include some of the following: cryptography and computer security, information visualization, human-computer interaction, machine learning and artificial intelligence, generative art, digital humanities, agent-based modeling, data mining, micro-controller programming (e.g, Arduino and Raspberry Pi devices).
The successful candidate must have the ability and interest in teaching some courses in mathematics or related areas. These might not be math classes per se, but it is essential that this faculty member's classes connect strongly with the existing mathematics curriculum and offer courses that meet the college's quantitative reasoning requirement. It is essential that the faculty member has a background in computing and programming and be enthusiastic about and focused on developing creative ways to teach computer science to students with a wide range of backgrounds and goals.
The faculty member should have a Ph.D. in computer science, engineering, computational science, applied mathematics, physics, or a related area and demonstrated potential for excellent and innovative teaching.
College of the Atlantic is an interdisciplinary college of approximately 340 undergraduate students and 30 faculty members. Its oceanfront campus is adjacent to Acadia National Park. COA's faculty are not organized by departments, and all students design their own major in human ecology. The average class size is 13. Faculty teach five courses a year distributed across three ten-week terms; faculty also advise students, direct independent studies and final projects, and contribute to the shared governance of the college. COA is a highly interdisciplinary college seeking to understand the relationships between humans and their built, natural, and social-cultural environments, where theory is tied to practice, and where friendship and cooperation help define our community. Through both teaching and scholarship, we aim to foster the capacity to make improvements within the world and ourselves.
Interested candidates should submit a CV, a cover letter addressing interest in and qualifications for the position, and a brief statement of teaching that includes a discussion of the roles of computer science in an interdisciplinary curriculum. The CV should include contact information for three professional references; please do not have references send letters. For full consideration, please submit all application materials as a single pdf file to _EMAIL_ by December 7, 2015.
College of the Atlantic is seeking a person with outstanding cooking skills, to cook in an award-winning college kitchen. Emphasis on creative, healthy, scratch cooking. Must work well in a congenial atmosphere. A knowledge of vegetarian and vegan cooking and at least 5 years cooking experience in a professional setting required.
This position will normally work early afternoon through dinner. Must have flexibility to work with catering and special events. 11 month position per year; benefits. Send resume with references to _EMAIL_ or Ken Sebelin, Cook Search Committee Chair, College of the Atlantic, 105 Eden Street, Bar Harbor, Me 04609. Electronic applications are preferred. Review of applications will begin immediately and continue until the position is filled.
College of the Atlantic is committed to academic excellence, cultural diversity, and multicultural education. COA is an AA/EEO employer. Applications are especially encouraged from persons who could enhance the ethnic, gender, and cultural diversity of the College.


text:
Survivorship Life Insurance
Most people are very familiar with individual life insurance policies that will pay a certain amount to beneficiaries upon the death of the policy holder. A survivorship, or second-to-die, life insurance policy insures two individuals, usually spouses, and only pays out when both have passed away.
There are several reasons a family may be interested in a survivorship policy as opposed to, or in addition to, an individual life policy. If a family has a substantial estate that may be subject to an estate tax, the proceeds of this policy may be used to offset some of what may be owed upon the death of the second policy holder. Also, these policies are generally easier to qualify for and less costly. The health and medical histories of both applicants are considered, making it easier for an individual in poor health to qualify for coverage. And since the benefit is only paid after both parties have died, premiums are generally lower than individual policies. Some families also use second-to-die policies as a way to add additional wealth to their overall estate. For example, it's not uncommon for parents to use a policy to fund a special needs trust.
Of course, there are also disadvantages to survivorship policies. For instance, when the first spouse dies, the second must continue to pay the premium, which may be difficult if the remaining spouse lacks the funds to do so. Also, if a couple has a large disparity in age, the younger spouse may end up paying more than they would have for a solo policy, since the premium is calculated using the average age of the insureds.
Second-to-die policies are just one of the tools that can be used in forming a comprehensive estate plan. It's always wise to consult an experienced estate planning attorney before making decisions regarding insurance products.


text:
Building partnerships – Building our future
Partnerships between Government and Universities have never been more important. They present educators, students, regulators, policy creators and decision-makers with real opportunities for growth and positive change.
To share experiences and insights; to challenge the popularly accepted position; to openly debate in a constructive and effective way – these are just the beginning of the benefits of mutually favourable partnerships.
This is why the Centre for Work Health and Safety has recently signed Memoranda of Understanding (MoUs) with the University of Wollongong and the University of Newcastle. These MoUs demonstrate the commitment the Centre and the Universities have in working together to develop work health and safety research expertise in Australia.
The Centre's Director, Skye Buatava said the research collaboration will provide opportunities for university students and academics to generate new knowledge by engaging in bona fide work health and safety research.
"The Centre is about world-class research using the latest data, evidence and insights to develop smarter, more innovative solutions to work health and safety challenges," she said.
"By strengthening our ties with these universities, we can make work health and safety research a well-regarded syllabus and career choice. After all, keeping people safe and healthy in their workplace should be in the hands of tertiary trained specialists."
University of Wollongong Vice-Chancellor, Professor Paul Wellings CBE said the partnership with the Centre would provide outstanding opportunities for researchers and students.
"This collaboration will see the University and the Centre work cooperatively to apply research to real-world challenges that will have a positive impact on workers and potentially prevent accidents and help save lives," he said.
Executive Director of the University of Newcastle's Institute for Energy and Resources, Professor Alan Broadfoot, said the agreement will play a significant role in bringing about behaviour change in work health and safety in NSW.
"Work health and safety is something that impacts every individual and underpins the core objectives and practices of all workplaces. This agreement will create more impact through innovative research that will ultimately improve the safety of workers across the state," Professor Broadfoot said.
The Centre is now actively seeking relationships with other universities across Australia to provide further work health and safety research opportunities.


Press Releases|
Foreign Secretary Tehmina Janjua and Mr. Sergey Ryabkov, Deputy Foreign Minister of the Russian Federation, led their respective delegations to the 13th Meeting of the Pakistan-Russia Consultative Group on Strategic Stability today.
During the meeting, the two sides had an in-depth exchange of views on prevailing regional and global security environments and their impact on the international arms control, disarmament and non-proliferation agenda. The two sides agreed on the need for preserving multilateralism in the field of international security and disarmament and shared the concern regarding the possible erosion of painstakingly negotiated international arrangements in several areas. The discussions encompassed issues such as non-militarization of outer space, upholding bilateral and multilateral treaties, developments in the field of information and telecommunications in the context of international security as well as matters related to the IAEA, OPCW and the Conference on Disarmament in Geneva.
The two sides underscored with satisfaction the close coordination, cooperation and consultations between Russia and Pakistan at various international fora. Both sides agreed on the need to further capitalize on the positive trajectory of the overall bilateral relations by exploring avenues for mutually beneficial bilateral cooperation.
Pakistan-Russia Consultative Group on Strategic Stability is a platform for structured dialogue between the two sides and has been meeting since 2003.
28 March 2019
Close Search Window


Canaan Fir Plug Seedlings
[a.k.a. West Virginia Balsam Fir]
[Abies balsamea var phanerolepis]
You are here: Nurserymen > Evergreen Plug Seedlings > Canaan Fir Plug Seedlings
Canaan Fir plug seedlings are very similar to Balsam Fir plug seedlings and Fraser Fir plug seedlings in appearance, grow zones and other characteristics, making the Canaan a very desirable ornamental tree and Christmas tree. It stands out from the often troublesome Fraser in that the Canaan Fir can handle wetter soils and is less affected by root disease. This species is naturally Phytophthora resistant, whereas Fraser is not.
SOLD OUT till Fall 2021
canaan fir plug seedlings, 25 pack shown canaan fir plug seedlings for sale canaan fir plug seedlings, root plug closeup
Canaan Fir plug seedlings for sale, approx 5-10″ tall
Canaan Fir [and Balsam Fir] are an acceptable substitute for Fraser Fir in problematic environments such as poorly draining areas prone to phytophthora root rot. This species likes richer, darker soils with ample water.
The Canaan Fir is naturally found in isolated populations at higher elevations. This may be why Canaan Fir plug seedlings are slower to break bud than Fraser Fir plug seedlings or Balsam Fir plug seedlings, making it less prone to damage from a late frost. If you've been watching the weather since 2010, this alone is a valuable characteristic to have, since gorgeous trees damaged by frost freezes are not gorgeous trees. This species will reach heights of up to 50ft with a nice pyramidal shape under normal circumstances, and provides excellent privacy and wind protection due to its dense growth. The Canaan Fir is named for the Canaan Valley in West Virginia. It is an excellent alternative to Balsam Fir and Fraser Fir in most situations.
Canaan Fir plug seedlings: characteristics and info
- prefers hardiness zones 3-7
- does ok in full sun but prefers partial shade
- mature height and spread: up to 50 ft high, 15-20 ft spread
- prefers dark rich soils, swampy soils, wet loamy soils, low areas and around ponds and streams
Penn State Ag Extension info on Abies balsamea var phanerolepis
Canaan Fir Sizes and Availability:
--- Canaan Fir transplants [sold out till Fall 2021]
--- Canaan Fir plug seedlings [sold out till Fall 2021]
--- Canaan Fir plug transplants [discontinued]
- Comparable alternative species: Balsam Fir, Concolor Fir, Douglas Fir, and Fraser Fir. Confused about species? Check out our Evergreen Tree Buyers Guide
5-pack for $33.00 (5 evergreen plug seedlings)
10-pack for $47.00 (10 evergreen plug seedlings)
25-pack for $83.00 (25 evergreen plug seedlings)
50-pack for $139.00 (50 evergreen plug seedlings)
100-pack for $199.00 (100 evergreen plug seedlings)


Search form
Published January 19, 2013
CCP has posted the changes to Black Ops that will be implemented in Retribution 1.1. Those changes are:
 - Increase the base jump range of all Black Ops ships to 3.5 light years (equal to that of Titans)
 - Reduce the mass multiplier used for Covert Jump Portal fuel costs from 0.00000018 to 0.000000135 (Reduces the fuel cost of covert bridges by 25%)
 - Increase the fuel bay on all Black Ops to 1250m3 (25% increase)
While these are just numbers, it's important to understand how major some of these changes are.
The Minor Changes
The increase in the fuel bay size equates directly into a 25% buff to fuel capacity, from 6,666 units of isotopes up to 8,333. Meanwhile, the mass multiplier is reduced by 25%. The effects of that are equally straightforward - fuel consumption scales with mass, so a smaller multiplier means less fuel per jump. However, it's not all good news - taking full advantage of the increased bridge range results in an overall higher fuel consumption. For example, take a Hound. With a mass of 1.42 million kilograms (including the added mass from the MWD), it currently costs 207 units of isotopes to bridge the ship to the maximum 4.5 light year range. A bridge to that same range after the changes only costs 155 units, but bridging to the new max range (7.875 light years) costs 271 isotopes. The net effect is actually a reduction in the total number of max-range bridges a Black Ops ship can make, though it's small; if the pilot wanted to strand his ship, he could bridge that Hound to max range 30 times after the patch, as compared to 32 times now.
The Major Change
Enough about the numbers. What does the range buff mean in real terms? For this example, I'm going to use the system Q-CAB in Tribute. The system is a regional gate to Venal, and the distance between the two regions is relatively low.
In the picture below you see the current Black Ops bridge range. Systems with the red squares and circles are within range of Q-CAB. Note how the Venal cannot be reached to the north, and large chunks of Vale of the Silent are inaccessible as well.
Now we're showing the current Titan range, and future Black Ops range. Many systems in Venal are now accessible, as are many more systems in Vale of the Silent.
The net effect is increased force projection for cloaking ships, including bomber gangs, which translates to more small gang opportunities. That's something I believe CCP wants. As the bomber FC for the CFC, I'm eagerly awaiting this change. While I'm sure some people want the ships themselves to be more capable in combat, to be able to warped cloaked, etc, I'll take this as a win.
Kcolor, primary bomber FC of the CFC. _USER_ Did I interest you in EVE? Did I interest you in LoL?
Recent Threads


text:
The souring of normally sweet production systems is a significant problem which can have implications to continued oilfield operations. Such problems are commonly approached by gathering of field sample and laboratory analysis or by simple test kits. This series in Hot Topics describes an alternative approach which includes the use of specialized field sampling and analysis procedures and portable equipment that can be moved from site to site. The current article provides an overview and introduction to how MIC growth can be studied and evaluated.
The souring of normally sweet production systems is a significant
problem. It can have implications in terms of
- reduced quality of produced hydrocarbons relative,
- the reduced productivity of wells,
- increased corrosivity of produced fluids.
In cases where remedial action is not taken, it can also have
implications relative to the potential for sulfide stress cracking
and selection of materials for downhole, flowlines and surface
facilities. Therefore, it is important to be able to properly
characterize field situations and make accurate recommendations
for remedial actions to minimize the impact of souring and to
prevent the occurrence of similar occurrences in other related
In an assessment of reservoir souring, field analysis provides
an important technical basis for engineering decision making through
their supporting scientific evidence. Such tests can yield information
useful in determining the sources and the potential severity of
souring and the selection and confirmation of successful remedial
actions. Some of the significant questions that can be addressed
through field investigation are indicated below:
- Is the souring a direct consequence of bacterial action?
- Were the bacteria introduced by the water injection system?
- Are the bacteria naturally occurring in the reservoir?
- Can the bacteria survive and grow under reservoir conditions?
- How adaptable are they to varying field conditions?
- Are there sufficient nutrients to sustain bacterial growth
in the system?
- What is the potential for controlling MIC and bacterial growth?
Field souring is often studied by either of two approaches:
- field sampling followed by transportation of the samples to
the laboratory for analysis, or
- analysis directly in the field using simplified field test
In many cases, the field sampling/laboratory approach is difficult
due to the remote nature of many onshore and offshore production
and injection facilities and the inability to transport, maintain
and analyze cultures. Additionally, most simple field tests lack
the sensitivity required to properly assess, characterize and
differentiate marginal cases.
Issues discussed in this series include:
- Description of MIC systems and methods of field investigation
- Specialized procedures and equipment for field or in-plant
investigation of souring, scaling, corrosion, fouling and bacterial
action in water handling systems. This includes a survey of planktonic
micro-organisms and bio-films as well as measurements of total
- A case study to validate this field testing capability
- Analysis of data obtained for characterization of reservoir
souring in petroleum production operations


input geometry is in lat/lon order, you can use ST_FlipCoordinates to swap X and Y.
Lon/Lat Order in the source and target CRS
Sedona will make sure the source and target CRS to be in lon/lat order. If the source CRS or target CRS is in lat/lon order, these CRS will be swapped to lon/lat order.
CRS code
The CRS code is the code of the CRS in the official EPSG database (_URL_ in the format of EPSG:XXXX. A community tool EPSG.io can help you quick identify a CRS code. For example, the code of WGS84 is EPSG:4326.
WKT format
You can also use OGC WKT v1 format to specify the source CRS and target CRS. An example OGC WKT v1 CRS of EPGS:3857 is as follows:
PROJCS["WGS 84 / Pseudo-Mercator",
 GEOGCS["WGS 84",
 DATUM["WGS_1984",
 SPHEROID["WGS 84",_PHONE_,298.257223563,
 AUTHORITY["EPSG","7030"]],
 AUTHORITY["EPSG","6326"]],
 PRIMEM["Greenwich",0,
 AUTHORITY["EPSG","8901"]],
 UNIT["degree",0.0174532925199433,
 AUTHORITY["EPSG","9122"]],
 AUTHORITY["EPSG","4326"]],
 PROJECTION["Mercator_1SP"],
 PARAMETER["central_meridian",0],
 PARAMETER["scale_factor",1],
 PARAMETER["false_easting",0],
 PARAMETER["false_northing",0],
 UNIT["metre",1,
 AUTHORITY["EPSG","9001"]],
 AXIS["Easting",EAST],
 AXIS["Northing",NORTH],
 EXTENSION["PROJ4","+proj=merc +a=_PHONE_ +b=_PHONE_ +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"],
 AUTHORITY["EPSG","3857"]]
Note
By default, this function uses lon/lat order since v1.5.0. Before, it used lat/lon order.
Note
By default, ST_Transform follows the lenient mode which tries to fix issues by itself. You can append a boolean value at the end to enable the strict mode. In strict mode, ST_Transform will throw an error if it finds any issue.
Format:
ST_Transform (A: Geometry, SourceCRS: String, TargetCRS: String, lenientMode: Boolean)
ST_Transform (A: Geometry, SourceCRS: String, TargetCRS: String)
ST_Transform (A: Geometry, TargetCRS: String)
Since: v1.2.0
Spark SQL Example:
SELECT ST_AsText(ST_Transform(ST_GeomFromText('POLYGON((170 50,170 72,-130 72,-130 50,170 50))'),'EPSG:4326', 'EPSG:32649'))
SELECT ST_AsText(ST_Transform(ST_GeomFromText('POLYGON((170 50,170 72,-130 72,-130 50,170 50))'),'EPSG:4326', 'EPSG:32649', false))
Output:
POLYGON ((_PHONE_.980342899 _PHONE_.336766362, _PHONE_.516721856 _PHONE_.912528664, _PHONE_._PHONE_ -_PHONE_.50985159, _PHONE_.924514083 -_PHONE_.21488129, _PHONE_.980342899 _PHONE_.336766362))
ST_Translate
Introduction: Returns the input geometry with its X, Y and Z coordinates (if present in the geometry) translated by deltaX, deltaY and deltaZ (if specified)
If the geometry is 2D, and a deltaZ parameter is specified, no change is done to the Z coordinate of the geometry and the resultant geometry is also 2D.
If the geometry is empty, no change is done to it. If the given geometry contains sub-geometries (GEOMETRY COLLECTION, MULTI POLYGON/LINE/POINT), all underlying geometries are individually translated.
Format:
ST_Translate(geometry: Geometry, deltaX: Double, deltaY: Double, deltaZ: Double)
Since: v1.4.1
Spark SQL Example:
SELECT ST_Translate(ST_GeomFromText('GEOMETRYCOLLECTION(MULTIPOLYGON(((3 2,3 3,4 3,4 2,3 2)),((3 4,5 6,5 7,3 4))), POINT(1 1 1), LINESTRING EMPTY)'), 2, 2, 3)
Output:
GEOMETRYCOLLECTION (MULTIPOLYGON (((5 4, 5 5, 6 5, 6 4, 5 4)), ((5 6, 7 8, 7 9, 5 6))), POINT (3 3), LINESTRING EMPTY)
Spark SQL Example:
SELECT ST_Translate(ST_GeomFromText('POINT(-71.01 42.37)'),1,2)
Output:
POINT (-70.01 44.37)
ST_Union
Introduction: Return the union of geometry A and B
Format: ST_Union (A: Geometry, B: Geometry)
Since: v1.2.0
Spark SQL Example:
SELECT ST_Union(ST_GeomFromWKT('POLYGON ((-3 -3, 3 -3, 3 3, -3 3, -3 -3))'), ST_GeomFromWKT('POLYGON ((1 -2, 5 0, 1 2, 1 -2))'))
Output:
POLYGON ((3 -1, 3 -3, -3 -3, -3 3, 3 3, 3 1, 5 0, 3 -1))
ST_VoronoiPolygons
Introduction: Returns a two-dimensional Voronoi diagram from the vertices of the supplied geometry. The result is a GeometryCollection of Polygons that covers an envelope larger than the extent of the input vertices. Returns null if input geometry is null. Returns an empty geometry collection if the input geometry contains only one vertex. Returns an empty geometry collection if the extend_to envelope has zero area.
Format: ST_VoronoiPolygons(g1: Geometry, tolerance: Double, extend_to: Geometry)
Optional parameters:
tolerance : The distance within which vertices will be considered equivalent. Robustness of the algorithm can be improved by supplying a nonzero tolerance distance. (default = 0.0)
extend_to : If a geometry is supplied as the "extend_to" parameter, the diagram will be extended to cover the envelope of the "extend_to" geometry, unless that envelope is smaller than the default envelope (default = NULL. By default, we extend the bounding box of the diagram by the max between bounding box's height and bounding box's width).
Since: v1.5.0
Spark SQL Example:
SELECT st_astext(ST_VoronoiPolygons(ST_GeomFromText('MULTIPOINT ((0 0), (1 1))')));
Output:
GEOMETRYCOLLECTION(POLYGON((-1 2,2 -1,-1 -1,-1 2)),POLYGON((-1 2,2 2,2 -1,-1 2)))
ST_X
Introduction: Returns X Coordinate of given Point null otherwise.
Format: ST_X(pointA: Point)
Since: v1.0.0
Spark SQL Example:
SELECT ST_X(ST_POINT(0.0 25.0))
Output:
0.0
ST_XMax
Introduction: Returns the maximum X coordinate of a geometry
Format: ST_XMax (A: Geometry)
Since: v1.2.1
Spark SQL Example:
SELECT ST_XMax(ST_GeomFromText('POLYGON ((-1 -11, 0 10, 1 11, 2 12, -1 -11))'))
Output:
2
ST_XMin
Introduction: Returns the minimum X coordinate of a geometry
Format: ST_XMin (A: Geometry)
Since: v1.2.1
Spark SQL Example:
SELECT ST_XMin(ST_GeomFromText('POLYGON ((-1 -11, 0 10, 1 11, 2 12, -1 -11))'))
Output:


text:
Abandoned Communities..... Porth y Nant
It was Richard Muir's book The Lost Villages of Britain that got me hooked on the topic of abandoned communities. Near the end of the book Richard gave a short list of some of his favourite deserted villages. He then said that there is one village, Porth y Nant, that has all the ideal qualities combined to produce perfection. He regarded it as a place "glorious in its beauty", and he was impressed by the fact that it was about to be restored and turned into a centre for the promotion and teaching of the Welsh language.
Porth y Nant lay in a small valley, Nant Gwrtheyrn, that runs down the lower slopes of Yr Eifl mountain towards the sea.
The location of Porth y Nant can be found on Google Maps by entering "Nant Gwrtheyrn". In the aerial view you can make out the original track running through the modern conifer forest as well as the present road. What the aerial view does not convey is the extreme steepness of the original track, in places one in three.
In the middle of the nineteenth century there were three farms in Nant Gwrtheyrn. A granite quarry called Porth y Nant was opened in 1861. It was opened by a Liverpool company called Kneeshaw and Lupton. The main output was rectangular granite setts, carved into shape at the quarry. At that time there was great demand for setts for use in paving the roads of the towns and cities of Lancashire. A jetty was built so that steam ships could carry the setts by sea to Liverpool, Manchester, or Birkenhead.
Soon after the opening of the quarry a terrace of small houses was built to provide accommodation for the workers. Later, in 1878, as workers were joined by wives, partners, and children, two more terraces of houses were built at right angles to each other further up the valley. One was known as Sea View as it faced west towards the beach, the other Mountain View as it looked towards the mountain and the quarry. Other buildings erected at about the same time were the Plas, a large house for the quarry manager west of Mountain View, and a chapel of the Calvinistic Methodist denomination.
People living at Porth y Nant were familiar with several stories and legends associated with the earlier history of Nant Gwrtheyrn. In particular they would have heard about:
- Vortigern, a fifth century British ruler whose attempts to negotiate with the invading Saxons went badly wrong. According to the local legend he was forced to flee and eventually found refuge in the valley that was given his name, Gwrtheyrn being the Welsh form of Vortigern.
For everything you will ever want to know about Vortigern go to the Vortigern Studies website.
- Rhys and Meinir, two cousins who fell in love and arranged to be married at the church in Clynnog Fawr (a place well worth a visit, by the way). Meinir failed to turn up for the wedding. In a distressed state Rhys spent months searching for Meinir, until a lightning strike opened a hollow tree and inside it he saw the skeleton of Meinir, still clad in its wedding dress.
- Ellis Bach, so called because of his very short stature, who as well as being a very good poet was renowned for his ability to climb over rough mountain slopes. He could be relied upon to round up sheep and goats ready for market day, but on the day itself was never to be seen.
Two houses in Mountain View
The former Seilo chapel, with part of Sea View terrace to the left
A section of the old track, known as the Corkscrew or Screw


text:
An air bubble of volume 21 cm3 is at the bottom of a lake 40 m deep where the temperature is 3.0°C. The bubble rises to the surface, which is at a temperature of 25°C. Take the temperature of the bubble to be the same as that of the surrounding water. What is the volume of the bubble just as it reaches the surface?
Answer in cm^3