text:
fou un general francès i cavaller de l'Orde de l'Esperit Sant (1770).

Després de servir al Canadà francès i ser governador de l'illa d'Yeu des de 1768, Verteuil era al comandament de La Rochelle en l'obertura de la Revolució Francesa. Després es va convertir en tinent general de l'exèrcit realista catòlic durant la Revolta de La Vendée. Capturat a Savenay, va ser executat com a presoner de la Convenció Nacional per les seves activitats contrarevolucionàries (condemnat com a "bandoler") a la Vendée.

Nascut a Beaurepaire, Vendée, Poitou, fill de Leonard de Verteuil, baró de Feuillas (1680-1743), Jacques Alexis es va casar l'agost de 1754 a Louisbourg, Nova Escòcia, amb Marie du Pont du Vivier de Gourville, filla de la seigneur de Gourville, títol que heretà.

Referències

Militars francesos
Persones de la Revolució Francesa

redpajama_set_name: RedPajamaWikipedia


text:
Chinese mainland reports no new locally-transmitted COVID-19 cases
Other News 20 August 2020 06:17 (UTC+04:00)
No new locally-transmitted COVID-19 cases were reported Wednesday across the Chinese mainland, the National Health Commission said Thursday, Trend reports citing Xinhua.
A total of seven confirmed cases arriving from outside the mainland were reported Wednesday, the commission said in its daily report.
No new suspected cases or deaths related to the disease were reported on the Chinese mainland, it added.
Of the new imported cases, three were reported in Jiangxi, and one each in Tianjin, Shanghai, Shandong and Sichuan, the commission said.
On Wednesday, 60 COVID-19 patients were discharged from hospitals after recovery, the commission said.
By the end of Wednesday, a total of 2,346 imported cases had been reported on the mainland. Of them, 2,148 had been discharged from hospitals after recovery, and 198 remained hospitalized, with no one in severe condition. No deaths from the imported cases had been reported.
As of Wednesday, the total number of confirmed COVID-19 cases on the mainland had reached 84,895, including 516 patients who were still being treated, with 24 in severe condition.
Altogether 79,745 people had been discharged after recovery, and 4,634 had died of the disease on the mainland, the commission said.
There were still two suspected COVID-19 cases on the mainland, it added.
According to the commission, 16,369 close contacts were still under medical observation after 1,430 were discharged on Wednesday.
By Wednesday, 4,586 confirmed cases including 72 deaths had been reported in the Hong Kong Special Administrative Region (SAR), together with 46 confirmed cases in the Macao SAR and 486 cases including seven deaths in Taiwan.
A total of 3,779 COVID-19 patients in the Hong Kong SAR, 46 in the Macao SAR, and 457 in Taiwan had been discharged from hospitals after recovery.
People of Azerbaijan will live in Shusha forever - President of Azerbaijan Politics 23:41

redpajama_set_name: RedPajamaCommonCrawl


text:
France to punish ex-generals for Islamist 'civil war' letter
Paris: Retired and serving French soldiers are meant to stay out of politics (Photo: cedric.chan)
Brussels, 28. Apr 2021, 07:15
France is preparing to punish ex-generals and acting offers who signed a letter warning of a civil war with Islamists.
"These are unacceptable actions ... There will be consequences, naturally," the French defence minister, Florence Parly, said on France Info radio on Monday (26 April).
"The military are not there to campaign, but to defend France and protect the French," she added.
"For those who have violated the duty of reserve, sanctions are planned, and if there are active soldiers among the signatories, I asked the chief of staff of the armed forces to apply the rules," Parly said.
According to French law, retired officers could lose their ranks and pensions if they violated their duties.
Acting ones could face court martial and between two to five years in prison.
The letter was signed by 24 retired generals, as well as 80 colonels or captains, 125 lieutenant-colonels or lower-ranked officers, and about 1,000 others.
It was published in the right-wing magazine Valeurs Actuelles on 21 April - the 60th anniversary of a failed putsch over Algerian independence.
"The hour is grave, France is in peril," they said.
And "the intervention of our comrades on active duty in a perilous mission of protection of our civilisational values" might soon be needed in a "civil war" that could cost "thousands" of lives, they said.
The letter targeted "Islamism and the hordes of the banlieue" - poor neighbourhoods with large migrant populations - as the enemies of France.
It also seized on recent jihadist attacks in the country, such as the murder of school-teacher Samuel Paty for showing Mohammed cartoons last year, to whip up emotion.
"Who could have imagined 10 years ago that a teacher would one day be beheaded on leaving school?," they wrote.
The lead signatory was Christian Piquemal, a former French Foreign Legion commander, who was arrested in 2016 for taking part in an anti-migrant rally in Calais.
Other French ministers and left-wing politicians also condemned the letter.
And Parly reassured the French public that the old men "in their slippers" who signed it posed no threat, because the "immense majority" of serving French officers had not joined them.
But French far-right leader Marine Le Pen voiced support for the malcontents.
She called on the generals to join her in "the battle of France" ahead of presidential elections next year.
France did suffer from "lawless areas, crime, self-hatred and our leaders' rejection of patriotism", she also said on Tuesday.
"[But] these problems can only be solved by politics," she added, in a word of caution.
The first round of French elections is due to take part in April next year.
French president Emmanuel Macron is currently neck-and-neck with Le Pen, with each scoring between 25 percent and 28 percent in polls earlier this month.
France vows tough retaliation for teacher's murder
France marks trauma of history teacher's murder
Muslim NGOs targeted by the France's retaliatory response to the brutal murder of a schoolteacher claim the government is labelling "innocent Muslims as 'Islamists" just to be able to say that they are doing something".
French people have held rallies in outrage over the murder of a history teacher by an Islamist extremist.
Tributes for EU Parliament's Sassoli after sudden death
The unexpected death of David Sassoli, president of the European Parliament, on Tuesday shocked the EU institutions, whose leaders spoke of a "passionate European, a sincere democrat and a good man".
Blasphemy and jihad: Macron launches EU debate
France has launched an EU debate on the "extremely sensitive" issue of blasphemy and jihadist violence, in a move that risks further alienating European Muslims.
Will the new Dutch government be more pro-EU?
The new Dutch government has taken office, with left-leaning liberal Sigrid Kaag taking over the influential ministry of finance from fiscal hawk Wopke Hoekstra.
€70m deadline dawns on fines in Polish rule-of-law row
Poland is facing a deadline on Tuesday to spell out to the EU Commission how it wants to bring its domestic judicial reforms into line with the order from the European Court of Justice on how Warsaw disciplines judges.


'Sometimes the wrong person gets accused! I'm pushing thru tho because I know what you don't know #itsmylife RHOA,' she posted.
We also wish all the best to both NeNe and her hubby, and we hope that they can overcome this terrible situation.
I am a care giver of 3 people in my family with cancer with 2 of them at stage 4. Yes, you get tired and it's mentally draining but Nene hasn't missed a beat. She's still doing what she wants when she wants. This is the best case for Reality TV to be private. They are not informing the public of anything. Nene is only promoting her selfish behavior and Gregg has no reason on this earth to apologize. Shame on Nene for her self pity. She has help so quit complaining and start teaching.


text:
About ScienceNordic
Sites on the Danish island of Zealand with golden relics from the Early Bronze Age. 'E' stands for oath rings weighting in excess of 200 grams. 'e' are smaller specimens. 's' denotes golden bowls. The above gallery shows the newly-found rings in detail.
Detailed ornamentation on one of the rings. (Photo: Museum Vestsjælland)
(Photo: Museum Vestsjælland)
The tips of one of the rings with meander patterns, indicating that the ring dates from the Early Bronze Age (950-800 BC) (Photo: Museum Vestsjælland)
The four newly-found rings from Boeslunde. (Photo: Museum Vestsjælland)
Field teeming with Bronze Age gold rings
Four Bronze Age gold rings were recently found near the site where six similar rings were found in 2009.
Kirsten Christensen, curator, Museum Vestsjælland
monday 02. September 2013 - 06:27
A key question in archaeology is how a tool or a piece of jewellery was used and what significance it had to the people who used it.
Careful observations and descriptions combined with common sense always form a strong basis for these discussions, but sometimes a little more is needed, e.g. analogies from foreign peoples or inspiration from written sources.
Closely tied in with the question of how an item was used is the practice of naming. What do you call archaeological artefact?
Here it is not unusual to build on what other scholars have observed and written down, which is why some of the early archaeological research terminology has undergone some changes over the years.
For instance, wedges have been replaced by axes, and hair ornaments have become either neck rings or neck collars. However, most terms have remained unchanged over the years and will soon be celebrating their 175th anniversary.
Particularly problematic in this respect are items from the Bronze Age, because they differ so much from what researchers knew from daily life.
South Zealand field was a goldmine
'Oath rings' are among the more special names – and are in fact the background for this article.
On June 18-19 this year, Danish amateur archaeologist Hans Henrik Hansen and his nephew Christian Albertsen made a fascinating discovery.
They found four wrist-sized rings with the common feature that the two tips of the rings are hemispherical, decorated and hollow. Each of the rings is very likely to be unique.
Based on certain grave finds, archaeologists reckon the rings were used by men. The name 'oath rings' was inspired by the Icelandic sagas, in which people could take oaths by a gold or silver ring soaked with sacrificial blood.
The ring was found in a field by the Danish village of Boeslunde, and the location is no coincidence. No less than five gold rings have previously been found here, the latest one in 2009 – and there is also another one, which may come from the same site.
A total of nine or ten rings have thus now been found in this field, making Boeslunde by far the richest finding place for oath rings in Denmark.
The ten arm rings have a total weight of more than 3.5 kilos. The first six rings that were found weigh from 220 grams all the way up to 770 grams. The four newer ones are generally lighter, weighing between 95 grams and 290 grams.
Gold rings were used before sacrifice
The discovery of four rings at the same time and at the same site enables archaeologists to compare details. The four rings share certain design features, but none of the rings are identical.
One important feature of the newly-found Boeslunde rings is that they have visible traces of wear. On parts of the rings – especially at or near the tips – the decoration has either worn away or disappeared completely.
This indicates that the rings were not designed entirely for the purpose of sacrifice; they had been used for some time before they were deposited.
The gold ring found in 2009 has the same distinctive wear and roughly the same weight as the four newly-found ones. These four were found within metres of one another, and the ring from 2009 was found nearby, too. This means that the five rings may have been buried in the same spot, but have perhaps been dislodged slightly from their original position over the years by agricultural machinery.
One of the four 'new' rings has been pulled out of shape, and the other three bear traces of contact with ploughs or harrows.
These five rings were found on a slope, and an examination of the site later this year aims to clarify whether they were found near a bog hole, like the other rings, or whether they were deposited in some other way.
All of the four newly-found rings are currently on exhibition at the National Museum of Denmark in Copenhagen.
This article is reproduced on this site by kind permission of Skalk, a Danish periodical with articles about Danish prehistoric and medieval archaeology, history and related topics.
Read the Danish version of this article at videnskab.dk
Translated by: Dann Vinther
The National Museum of Denmark
Unique gold figurine of naked woman found in Denmark
A small figurine depicting a slim, naked woman was recently found in a Danish field. Strangely, this is the fifth in a series of tiny golden human figurines found recently in the area.
Did a recently found bird spear belong to a kidnapped Greenlander?
A recent archaeological find in Copenhagen – a bird spear from the Thule culture – has put focus on expeditions to rediscover Greenland 400 years ago and the expeditions' kidnapping of Greenlanders.
archaeology history society and culture videnskab.dk denmark society & culture
Researchers want to put Norway on the pig embryo map. Animal rights activists are critical.
Wolf packs don't actually have alpha males and alpha females, the idea is based on a misunderstanding
Sex for the first time: Norwegian teens are postponing their sexual debut
This is why you have negative feelings after sex
Researchers' Zone:
New research lets us into the brains of artists
Ever wondered what goes on inside a performer's brain? With EEG-technology we can show what the performing person feels in real time.
Can we vaccinate the world?
Self-interest seems to be a dominant motivating factor for vaccine-rich countries to donate - and it gives modest hope about win-win global cooperation during pandemics.
ABOUT SCIENCE NORDIC
© ScienceNordic.com
SCIENCE NORDIC OFFICES:
Oslo: c/o forskning.no, Postbox 5 Torshov, 0412 Oslo, Norway. Phone +47 22 80 98 90
Copenhagen: c/o Videnskab.dk, Carl Jacobsens Vej 16, Entr. 16, 2500 Valby, Denmark. Phone +45 707 01 788


text:
using namespace std;
using namespace boost::python;
using namespace IECore;
using namespace IECorePython;
using namespace Gaffer;
using namespace GafferScene;

namespace
{

//////////////////////////////////////////////////////////////////////////
// HierarchyViewFilter - base class for PathFilters which need a scene
// and a context. Designed for internal use in the HierarchyView.
//
// \todo The "track dirtiness from a context and plug" behaviour implemented
// here is common across many UI elements - perhaps it could be encapsulated
// in a utility class at some point?
// \todo Consider making these filters part of the public API at some point,
// and also allowing the HierarchyView widget to be customised with
// custom filters.
//////////////////////////////////////////////////////////////////////////

class HierarchyViewFilter : public Gaffer::PathFilter
{

	public :

		IE_CORE_DECLAREMEMBERPTR( HierarchyViewFilter )

		HierarchyViewFilter( IECore::CompoundDataPtr userData = nullptr )
			:	PathFilter( userData ), m_context( new Context )
		{
		}

		void setScene( ConstScenePlugPtr scene )
		{
			if( scene == m_scene )
			{
				return;
			}
			m_scene = scene;
			Node *node = nullptr;
			if( m_scene )
			{
				node = const_cast<Node *>( m_scene->node() );
				for( ValuePlug::Iterator it( m_scene.get() ); !it.done(); ++it )
				{
					sceneDirtied( it->get() );
				}
			}
			if( node )
			{
				m_plugDirtiedConnection = node->plugDirtiedSignal().connect(
					boost::bind( &HierarchyViewFilter::plugDirtied, this, ::_1 )
				);
			}
			else
			{
				m_plugDirtiedConnection.disconnect();
			}
		}

		const ScenePlug *getScene() const
		{
			return m_scene.get();
		}

		void setContext( Gaffer::ContextPtr context )
		{
			if( context == m_context )
			{
				return;
			}
			ConstContextPtr oldContext = m_context;
			m_context = context;
			if( m_context )
			{
				m_contextChangedConnection = const_cast<Context *>( m_context.get() )->changedSignal().connect(
					boost::bind( &HierarchyViewFilter::contextChanged, this, ::_2 )
				);
			}
			else
			{
				m_contextChangedConnection.disconnect();
			}

			// Give derived classes a chance to react to the changes
			// between the old and new contexts. First compare all the
			// variables in the new context with their equivalents in
			// the old.
			vector<InternedString> names;
			m_context->names( names );
			for( vector<InternedString>::const_iterator it = names.begin(), eIt = names.end(); it != eIt; ++it )
			{
				IECore::DataPtr newValue = m_context->getAsData( *it );
				IECore::DataPtr oldValue = oldContext->getAsData( *it, nullptr );
				if( !oldValue || !newValue->isEqualTo( oldValue.get() ) )
				{
					contextChanged( *it );
				}
			}
			// Next see if any variables from the old context are not
			// present in the new one, and signal for those too.
			names.clear();
			oldContext->names( names );
			for( vector<InternedString>::const_iterator it = names.begin(), eIt = names.end(); it != eIt; ++it )
			{
				if( !m_context->getAsData( *it, nullptr ) )
				{
					contextChanged( *it );
				}
			}
		}

		const Gaffer::Context *getContext() const
		{
			return m_context.get();
		}

	protected :

		// May be implemented by derived classes to be notified
		// when a part of the scene has been dirtied.
		virtual void sceneDirtied( const ValuePlug *child )
		{
		}

		// May be implemented by derived classes to be notified
		// when the context has changed.
		virtual void contextChanged( const IECore::InternedString &variableName )
		{
		}

	private :

		void plugDirtied( const Plug *plug )
		{
			if( plug->parent<ScenePlug>() == m_scene )
			{
				sceneDirtied( static_cast<const ValuePlug *>( plug ) );
			}
		}

		ConstScenePlugPtr m_scene;
		ConstContextPtr m_context;

		Signals::ScopedConnection m_plugDirtiedConnection;
		Signals::ScopedConnection m_contextChangedConnection;

};

// Wrapper functions

ScenePlugPtr getScene( HierarchyViewFilter &f )
{
	return const_cast<ScenePlug *>( f.getScene() );
}

ContextPtr getContext( HierarchyViewFilter &f )
{
	return const_cast<Context *>( f.getContext() );
}

//////////////////////////////////////////////////////////////////////////
// HierarchyViewSetFilter - filters based on membership in a
// list of sets.
//////////////////////////////////////////////////////////////////////////

class HierarchyViewSetFilter : public HierarchyViewFilter
{

	public :

		IE_CORE_DECLAREMEMBERPTR( HierarchyViewSetFilter )

		HierarchyViewSetFilter( IECore::CompoundDataPtr userData = nullptr )
			:	HierarchyViewFilter( userData ), m_setsDirty( true )
		{
		}

		void setSetNames( const vector<InternedString> &setNames )
		{
			if( m_setNames == setNames )
			{
				return;
			}
			m_setNames = setNames;
			m_setsDirty = true;
			changedSignal()( this );
		}

		const vector<InternedString> &getSetNames() const
		{
			return m_setNames;
		}

	protected :

		void sceneDirtied( const ValuePlug *child ) override
		{
			if(
				child == getScene()->setNamesPlug() ||
				child == getScene()->setPlug()
			)
			{
				m_setsDirty = true;
				changedSignal()( this );
			}
		}

		void contextChanged( const IECore::InternedString &variableName ) override
		{
			if( !boost::starts_with( variableName.c_str(), "ui:" ) )
			{
				m_setsDirty = true;
				changedSignal()( this );
			}
		}

		void doFilter( vector<Gaffer::PathPtr> &paths, const IECore::Canceller *canceller ) const override
		{
			if( paths.empty() )
			{
				return;
			}

			updateSets();

			paths.erase(
				remove_if(
					paths.begin(),
					paths.end(),
					boost::bind( &HierarchyViewSetFilter::remove, this, ::_1 )
				),
				paths.end()
			);
		}

	private :

		bool remove( const Gaffer::PathPtr &path ) const
		{
			for( vector<PathMatcher>::const_iterator it = m_sets.begin(), eIt = m_sets.end(); it != eIt; ++it )
			{
				if( it->match( path->names() ) )
				{
					return false;
				}
			}
			return true;
		}

		void updateSets() const
		{
			if( !m_setsDirty )
			{
				return;
			}

			m_sets.clear();
			if( !getScene() || !getContext() )
			{
				return;
			}

			Context::Scope scopedContext( getContext() );
			for( vector<InternedString>::const_iterator it = m_setNames.begin(), eIt = m_setNames.end(); it != eIt; ++it )
			{
				try
				{
					ConstPathMatcherDataPtr set = getScene()->set( *it );
					m_sets.push_back( set->readable() );
				}
				catch( ... )
				{
					// We can leave it to the other UI elements to report the error.
				}
			}
			m_setsDirty = false;
		}

		vector<InternedString> m_setNames;
		mutable bool m_setsDirty;
		mutable vector<PathMatcher> m_sets;

};

// Wrapper functions

void setSetNames( HierarchyViewSetFilter &f, object pythonSetNames )
{
	std::vector<InternedString> setNames;
	boost::python::container_utils::extend_container( setNames, pythonSetNames );
	f.setSetNames( setNames );
}

boost::python::list getSetNames( HierarchyViewSetFilter &f )
{
	boost::python::list result;
	const std::vector<InternedString> &s = f.getSetNames();
	for( std::vector<InternedString>::const_iterator it = s.begin(), eIt = s.end(); it != eIt; ++it )
	{
		result.append( it->string() );
	}
	return result;
}

//////////////////////////////////////////////////////////////////////////
// HierarchyViewSearchFilter - filters based on a match pattern. This
// is different from MatchPatternPathFilter, because it performs a full
// search of the entire scene, whereas MatchPatternPathFilter can only
// match against leaf paths.
//////////////////////////////////////////////////////////////////////////

class HierarchyViewSearchFilter : public HierarchyViewFilter
{

	public :

		IE_CORE_DECLAREMEMBERPTR( HierarchyViewSearchFilter )

		HierarchyViewSearchFilter( IECore::CompoundDataPtr userData = nullptr )
			:	HierarchyViewFilter( userData ), m_pathMatcherDirty( true )
		{
		}

		void setMatchPattern( const string &matchPattern )
		{
			if( m_matchPattern == matchPattern )
			{
				return;
			}
			m_matchPattern = matchPattern;
			m_pathMatcherDirty = true;
			changedSignal()( this );
		}

		const string &getMatchPattern() const
		{
			return m_matchPattern;
		}

	protected :

		void sceneDirtied( const ValuePlug *child ) override
		{
			if( child == getScene()->childNamesPlug() )
			{
				m_pathMatcherDirty = true;
				changedSignal()( this );
			}
		}

		void contextChanged( const IECore::InternedString &variableName ) override
		{
			if( !boost::starts_with( variableName.c_str(), "ui:" ) )
			{
				m_pathMatcherDirty = true;
				changedSignal()( this );
			}
		}

		void doFilter( vector<Gaffer::PathPtr> &paths, const IECore::Canceller *canceller ) const override
		{
			if( m_matchPattern.empty() || paths.empty() )
			{
				return;
			}

			updatePathMatcher();

			paths.erase(
				remove_if(
					paths.begin(),
					paths.end(),
					boost::bind( &HierarchyViewSearchFilter::remove, this, ::_1 )
				),
				paths.end()
			);
		}

	private :

		bool remove( const Gaffer::PathPtr &path ) const
		{
			return !m_pathMatcher.match( path->names() );
		}

		void updatePathMatcher() const
		{
			if( !m_pathMatcherDirty )
			{
				return;
			}

			PathMatcher toMatch;
			if( m_matchPattern.find( '/' ) != string::npos )
			{
				// The user has entered a full match path.
				toMatch.addPath( m_matchPattern );
			}
			else if( StringAlgo::hasWildcards( m_matchPattern ) )
			{
				// The user has used some wildcards, we
				// just need to make sure the pattern is
				// searched for everywhere.
				toMatch.addPath( "/.../" + m_matchPattern );
			}
			else
			{
				// The user hasn't used wildcards - add some to
				// help find a match.
				toMatch.addPath( "/.../*" + m_matchPattern + "*" );
			}

			// Here we literally have to search the entire scene
			// to find matches wherever they may be. We're at the
			// mercy of SceneAlgo::matchingPaths() and just have to
			// hope that it can do things quickly enough.
			m_pathMatcher.clear();
			try
			{
				SceneAlgo::matchingPaths( toMatch, getScene(), m_pathMatcher );
			}
			catch( ... )
			{
				// We can leave it to the other UI elements to report the error.
			}

			m_pathMatcherDirty = false;
		}

		std::string m_matchPattern;
		mutable bool m_pathMatcherDirty;
		mutable PathMatcher m_pathMatcher;

};

} // namespace

void GafferSceneUIModule::bindHierarchyView()
{

	// Deliberately using RefCountedClass rather than RunTimeTypedClass
	// to avoid having to register unique type ids and names for otherwise
	// private classes.

	RefCountedClass<HierarchyViewFilter, PathFilter>( "_HierarchyViewFilter" )
		.def( "setScene", &HierarchyViewFilter::setScene )
		.def( "getScene", &getScene )
		.def( "setContext", &HierarchyViewFilter::setContext )
		.def( "getContext", &getContext )

		.def( "setSetNames", &setSetNames )
		.def( "getSetNames", &getSetNames )
	;

	RefCountedClass<HierarchyViewSetFilter, HierarchyViewFilter>( "_HierarchyViewSetFilter" )
		.def( init<IECore::CompoundDataPtr>( ( boost::python::arg( "userData" ) = object() ) ) )
		.def( "setSetNames", &setSetNames )
		.def( "getSetNames", &getSetNames )
	;

	RefCountedClass<HierarchyViewSearchFilter, HierarchyViewFilter>( "_HierarchyViewSearchFilter" )
		.def( init<IECore::CompoundDataPtr>( ( boost::python::arg( "userData" ) = object() ) ) )
		.def( "setMatchPattern", &HierarchyViewSearchFilter::setMatchPattern )
		.def( "getMatchPattern", &HierarchyViewSearchFilter::getMatchPattern, return_value_policy<copy_const_reference>() )
	;

}

redpajama_set_name: RedPajamaGithub