text:
How To Find Upside In Downside
Wednesday, January 23, 2019 - 2:30pm
by Adam Fischbaum
One of my favorite colloquialisms is "50% of something is better than 100% of nothing." It's best when said with a grizzled Southern accent with a big dip of Copenhagen wedged in the speaker's lip.
---Recommended Link---
Ex-Military Intelligence Officer Finally Reveals He Secret To Her 90.9% Success Rate
Today only save 62% on the system that is helping smart investors like you make massive gains...hurry, wall street insiders hope to shut this down soon... Click here before it's too late.
Kidding aside, this phrase is one of the many mantras grown-up investors will use from time to time. Markets and stocks will and do go down at some point. It's one of the few guarantees that come with the territory. We all want to do well on the upside. But with an unavoidable downside, the key is to do less worse than the market.
It's doable.
The fancy term money managers throw around is "downside capture." As ridiculous as it sounds, it's a thing. And it works.
There's an actual portfolio called the downside capture ratio. However, rather than getting too far into those weeds, the ultimate goal of downside capture is for an investment portfolio to be down less than the overall market is down at its lowest point.
There are many different ways to protect an investment portfolio on the downside. Some are extremely complex and, frankly, seem like walking around the block just to get across the street.
In my two decades of professional experience, the simplest, most effective way to manage downside capture is to own dividend-paying stocks. Here's an example.
Twenty years ago, two investors decided to put some money to work. Investor A bought shares of the SPDR S&P 500 ETF Trust (NYSE: SPY). Investor B bought shares of steady Eddy dividend payer Southern Company (NYSE: SO). Both investors held on to their shares through thick and thin over the 20-year period. How did they do?
Here's a chart of the S&P 500 for the total period.
The worst periods are clearly marked. So how did our two investors do when the market was on its very worst behavior?
Here are the results.
However, drug stocks seem to perform a little better in choppier markets as they are more defensive in nature.
The Spyder holder didn't do so hot. The dividend investor, on the other hand, won multi-generational, cocktail party bragging rights.
Now, I am by no means suggesting that you should stake your investment portfolio on just one stock. That's financial suicide. Naturally, a portfolio must be diversified.
So how did a diversified portfolio of selected dividend-paying stocks do versus the S&P 500 at its worst points?
Pretty darned good.
I constructed an equally weighted portfolio of 17 widely held, dividend-paying blue chip stocks that included Coca Cola (NYSE: KO), Johnson and Johnson (NYSE: JNJ), and ExxonMobil (NYSE: XOM) to name a few. I back tested the portfolio using portfoliovisualizer.com. The portfolio was rebalanced annually, and all dividends were reinvested over an 18-year period.
When compared to Vanguard S&P 500 Index Fund (VFINX), not only did the blue chip, dividend outperform on the downside during the market's worst times, it also beat the market on a total return basis.
Not only did the dividend portfolio go down less two out of three times, it delivered an average annual total return of 8.61% from 2000 to 2018. The index fund returned an average of 4.75% annually for the same period.
And they say stock-picking is dead. Hogwash.
Risks To Consider: As calm, cool, and collected as we all like to be, most investors do get at least a little nervous when markets go down dramatically, especially if the money we've invested is for an important goal like college or retirement. It's normal. We're human. The key is to make sure your investments fit your goals and time horizon and to remind yourself why you bought the stocks you are holding in the first place.
Action To Take: I know its unpopular to say to the passive indexing crowd, but, keep in mind that when you index, you are always at the mercy of the index. Up or down. If the market's up, you're up. If the market's down, you're down. Despite what skeptics say, while stock selection may not always outperform on the upside, avoiding the herd and owning solid dividend-paying stocks can provide some portfolio buoyancy when markets decline.
Adam Fischbaum does not personally hold positions in any securities mentioned in this article.
3 stocks to buy NOW on Elon's crazy scheme


text:
Cambridge Consultants advance sport skills training
17 December 2014 Consultancy.uk 2 min. read
Cambridge Consultants
Product design firm Cambridge Consultants has designed a novel wearable technology, called Xelflex, that acts as a sensor in tight-fitting garments. These sensors provide users with guidance and feedback on their movements and can be used for a variety of purposes, ranging from sports, to physiotherapy, fitness and gaming.
Wearable technology, also known as wearables, fashionable technology, wearable devices, tech togs, or fashion electronics, are clothing and accessories incorporating computer and advanced electronic technologies. While not many consumers will possess the technology yet, it is becoming more and more incorporated in people's lives, and is already being used for healthcare purposes and gaming.
As to date, many of the wearable technologies rely on electronic components imbedded or attached to garments that are bulky, inelegant or difficult to wear, Cambridge Consultants has created a 'smart' textile that turns garments into active motion sensors, called XelfleX.
XelfleX consists of fibre-optic thread which acts as the sensor. The user will only need an additional small electronics pack which clips on to the fibre and communicates with a smartphone. By integrating the fibre into a close-fitting garment, the technique will measure the amount of bending at a defined sensor point in the fibre. Algorithms will subsequently turn the results from the different sensors into guidance that users can easily understand, giving feedback on their posture and movement, and coaching them on how to improve.
As the technology can be integrated in comfortable, washable, and robust clothing, and can endure heat or water, it can be used for a variety of purposes. Ranging from fitness and sports coaching, for example to help perfect ski techniques, to physiotherapy to help patients recover after injury, surgery or neurological problems, or to capture motion for gaming, film making and virtual reality applications. "Our aim was to create wearables that people actually want to wear. With XelfleX, the garment itself is the sensor and it allows you to create smart clothing that is low-cost, durable, useful and attractive to wear," comments Martin Brock, inventor of XelfleX at Cambridge Consultants.
Healthcare consulting firms Healthcare consulting services
NHS 111 and BNSSG reduce urgent care visits through service design In response to winter pressures on urgent care due to Covid-19, the NHS needed to reduce the risk of infection in busy waiting rooms.
CIL advises on UK healthcare sector deals CIL has completed seven engagements in the UK healthcare sector, or involving UK investors.
Test and Trace consultants come under further scrutiny After more than a year of controversy surrounding the public money spent on consultants for the Government's misfiring coronavirus app, it has emerged that almost 2,000 consultants are still being pa
Innovation consulting firms Innovation consulting services
New businesses crucial to future growth With companies looking to pivot their offerings and adapt to pandemic disruption, building new businesses is now seen as a priority by the majority of global company leaders.
Brands must embrace a new era of innovation in 2022 As 2022 gets underway, there will undoubtedly be a host of trends and predictions that marketers will be looking to identify in order to help design brand strategies for the coming year.
Accenture buys 60,000 Oculus headsets for VR training As the firm looks to safely welcome thousands of new recruits amid the ongoing pandemic, Accenture has purchased 60,000 virtual reality headsets.
Public Sector consulting firms Public Sector consulting services
Value for money questioned in consulting firm's pandemic charity role Britain's Government has pledged to examine the value for money provided by spending £2 million on consultants to assist with assessing bids made by charities for emergency funds.
Government selects McKinsey for future technology strategy work Management consultancy McKinsey & Company has won a £3 million contract to build business cases ahead of the government's annual spending review.
BJSS becomes AWS migration competency partner Consulting firm BJSS has joined the AWS Migration Competency Partner programme.
Sport consulting firms Sport consulting services
Europe's footballing elite struggle to profit amid market turbulence Of Europe's top footballing leagues, only the champions of Germany, Bayern Munich, reported a financial profit in the last year.
TCS announced as partner of Jaguar's Formula E Racing team Tata Consultancy Services has been announced as the title sponsor of the Jaguar Formula E racing team.
Capgemini wins six-year partnership with Ryder Cup Following this inaugural year as a Worldwide Supplier to this year's Ryder Cup, Capgemini's status will elevate to Worldwide Partner for the coming three tournaments.
Technology consulting firms Technology consulting services
Semi-conductor shortage to persist in 2022 With supply chains still in crisis, and a new coronavirus variant already wreaking havoc around the world, a new study suggests the technology market will be stung by chip shortages in 2022.
Tech investment could be better targeted to cut emissions While investment from venture capital and private equity is pouring into the climate tech sector, a new report suggests that not enough of it is targeting the reduction of greenhouse gasses.
Consulting bill for Ireland's National Broadband Plan tops €40 million The consulting bill for Ireland's National Broadband Plan has hit a new milestone: topping the €40 million mark since the project kicked off in 2016.
Cambridge Consultants news
Cambridge Management Consulting buys telecom specialist Straxia Digital transformation advisory firm Cambridge Management Consulting has expanded its telecommunications capability with the acquisition of Straxia.
16 consulting firms awarded government coronavirus contracts The UK Government has once again come under fire for its spending on private consulting contractors, after it emerged the industry had received contracts worth £56 million to help with the national r
Eric Wilkinson succeeds Alan Richardson as Cambridge Consultants CEO Product development and technology consultancy Cambridge Consultants has confirmed the retirement of Chief Executive Alan Richardson, who steps down following 33 years with the company.

redpajama_set_name: RedPajamaCommonCrawl


If you had a free airline ticket to anywhere in the world tonight, where would you want to go?
No doubt Florda or California.
Somewhere far, far away. Anywhere really, except here.
Cairns, Australia to be closer to the Great Barrier Reef again.
I would go to England to visit my cousin he is very ill and I miss him.
Anywhere hot and sunny, like the caribbean, Australia, the Seychelles, somewhere like that.
I would go to China,for I would like to see the culture,and one of the most ancient civilizations.
to see my mate in new zealand,who i havent seen for 2 years.
I would go to Toronto Canada.
I'd take a trip back to Australia for a while..I can't get enough of it..
I would go to Scotland and I wouldn't want to come back either. My s/o is there and I've never been happier anywhere than when I was there with him.
New york to go see da New York Yankees!
Back to Iceland. I'm quite smitten with it ,since my last visit.
Glasgow, Scotland...actually about an hour to an hour and a half north west of there but Glasgow is the closet major airport.
If you are given a free ride in plane, where would you prefer to go?
If you could live anywhere in the world for the rest of your life for free, where would you go?
If you could go anywhere in the world (at this very moment) where would you go and why would you choose to go there?
Is there a country you would never go to even if the plane ticket was free?


text:
Q: Checking new row is inserted in table database and run some script I want to send some notification to android app when new row is inserted in table database, but I'm having trouble to check if there is new row inserted or not.
Is there any function or query to check if new row inserted in table? or some logic to acquire that.

A: It depends on the database you are using.
For example in MySQL you can query the table information_schema.tables to get the latest update time.
https://dev.mysql.com/doc/refman/8.0/en/information-schema-tables-table.html
For postgres
Check if track commit timestamp is on
show track_commit_timestamp;

If it's off, set it to on in your postgresql.conf file and restart postgres.
Post that run the following to track the latest updates in your table
SELECT pg_xact_commit_timestamp(xmin), * FROM YOUR_TABLE_NAME;

redpajama_set_name: RedPajamaStackExchange


Are you losing sleep over choosing an experienced professional to clean, clear and maintain your gutter and downspouts? If you are, then it's because you are sicked and tired of attempting to perform the job on your own. It goes without saying, who would like to spend their valuable spare time going up and down a ladder and digging through disgusting and nasty rotting muck? That's not anybody's idea of a fun Saturday off, but at Clean Pro Gutter Cleaning™ that simply what, we do every day. While most people dread the thought of cleaning their gutters, we actually eagerly anticipate it. We recognize that we are providing our clients with an invaluable service. We take tremendous pride in offering that service.
Forgetting about gutter and downspout cleaning is something that happens constantly. The good news is that we can ensure that you never forget this important part of house routine maintenance again. When you select us to clean, maintain, and evaluate your rain gutters and downspouts, we can in fact schedule out future scheduled appointments ahead of time for you. That indicates that you will not need to stress over forgetting to have your gutters cleaned ever in the future. So, don't delay, call us now and let us take care of all of your gutter cleaning needs.
Regardless of whether you're a business, house owner, or building contractor we'll ensure you are pleased with your cleaning. We are known for our outstanding Gutter Cleaning services and making sure the job is done correctly – each time! We make it to ensure that you can rest easy knowing that your house is going to be well looked after.
Our Gutter Cleaning technicians are courteous and qualified. We work diligently and attentively and are completely insured. We never ever rest ladders on your gutters or leave scuff-marks on your wood deck from a gutter cleaning. Our service will never ever jeopardize your landscaping. After the conclusion of your clean out, we will be sure to examine the yard and make sure to leave it in a better condition than when we arrived.
Clean Pro Gutter Cleaning™ has thousands of satisfied clients and we've provided exterior cleaning services since 2001.
Below are several of the primary reasons that home Owners pick Clean Pro Gutter Cleaning™ to provide them with their yearly gutter cleaning services.
We Do The Job Right — The purpose of your gutters is to take rainwater away from your home. We guarantee that the gutters and the downspouts are cleaned out in order that they can do what they were created to do.
Online Quotes, Scheduling, & Payments — Every single thing is at the tip of your fingertips. We've made the routine of getting an estimate, scheduling service and even paying for that service quick and easy.
Trustworthy — We get the gutters cleaned out quickly. We strive to make certain we can get to the gutter cleaning before the scheduled day. We won't be able to always do that, but we always try our very best to make it happen.
Competitively priced — While we will not be the cheapest around, we endeavor to make sure all gutter cleaning quotes are fair. We review our rates routinely to make sure we're offering a great value for our clients.
Once you have a greater knowledge of gutter and downspout cleaning gains, you'll see why using qualified professional gutter cleaners is money well spent. Keeping your rain gutters and downspouts in excellent condition isn't an extravagance, it is something that is necessary for any area where there is a moderate to substantial amount of snow and or rain.
If you don't keep your rain gutters in great condition you are going to end up with water damage that can be very costly to repair. Nobody likes to spend cash on repairs and maintenance, but the expense of gutter cleaning is insignificant compared to the expense to fix damaged gutters.
Among the greatest reasons American homeowners will tell you that they procrastinate in selecting qualified professional gutter cleaners, is that they don't want another reoccurring expense. While it's reasonable that preventing reoccurring expenses is appealing, the truth is that paying trained professional gutter cleaners actually isn't an expense.
Rather, it is an investment. It's an investment due to the fact that it assists to safeguard the worth of your home. When you bought your home you most likely paid a sizable deposit. Then, you have actually made years of mortgage payments and monitored as your equity has grown. So, why would you jeopardize all of that by not paying proficient professional gutter cleaners to keep your gutters and downspouts in top condition?
After working hard all week there's probably absolutely nothing you look forward to more than spending your time off doing an awful and tiring job, right? Undoubtedly, this isn't the case. You don't want to clean your rain gutters and downspouts. In truth, it's safe to say that nobody desires to spend their free time cleaning their gutters and downspouts.
The good news is that you do not have to. When you choose a proficient professional gutter cleaner you will get the advantages of having your rain gutters cleaned more thoroughly than you might ever hope to have done yourself, while also avoiding the backbreaking work involved. That definitely sounds like a win-win scenario.
Another significant benefit of utilizing a knowledgeable professional gutter cleaner is that it will help your rain gutters and downspouts last longer. When correctly looked after, there are numerous types of rain gutters and downspouts that could last a lifetime. This is a fantastic benefit since having to replace your gutters can get quite expensive.
Rather than having to purchase brand-new gutters and downspouts prematurely, you are much better off paying a proficient professional gutter cleaner to come out and clear, clean and maintain your rain gutters and downspouts on a regular basis.
Why does overlooking your gutters trigger them to wear quicker? It's a matter of additional strain. Rain gutters are created to be strong and light-weight. In spite of their light-weight nature, they have sufficient strength to safely channel water through them and into downspouts. What they lack, however, is the ability to endure the weight of all of this water when they have added pressure put on them by debris and yard waste that is allowed to collect.
When yard waste applies tension on rain gutters it causes a lot of complications. It can lead the gutters to bend, droop, deform, and warp. If the design of gutter you have is segmented it can cause the joints to crack. The stress of debris in your gutters can even lead them to split away from your home and collapse. The point is straightforward, if you want your rain gutters to last then you need to make sure that they are cleared, cleaned and maintained by a competent professional gutter cleaner.
A typical mistake made by many American home-owners is to assume that their gutters are great because the issues aren't easily spotted. Even a child can see that there's an issue when there is something major going on, but not everybody can find more subtle signs of a problem. Do you have an idea who can spot tiny problems early on well before they become major issues? A competent professional gutter cleaner can.
In many cases, American home owners who wind up with the most severe water damage are house owners that had no idea that anything was amiss. They didn't discover an issue, and unbeknownst to them, there was a crack or a leakage in their rain gutters allowing water to rot the side of their house.
In numerous ways, this type of problem is far worse than a catastrophic rain gutters and downspouts failure. That's simply because a small damaged part of your gutters that permits a little water to enter your house can lead to major damage before it is noticed. What makes this issue such a serious concern is that it has actually been allowed to continue because the American homeowners didn't realize it existed.
Rain gutter style has remained mainly the same for a very long time. The reason is simple, they work rather well as long as they are looked after. While there have actually been modifications in products utilized, building approaches, and designs, the underlying idea of the gutter and downspout remains simple and mainly the same. They seize water, then use a slight angle to manage that water and direct it to where it will not result in any damage.
What every American home owner needs to keep in mind is that clearing, and cleaning your gutters is not optional. That would be similar to driving an automobile, never changing the oil, then hoping for it to never break down. Your gutters and downspouts need care and attention, and the best person to supply this is a knowledgeable professional gutter cleaner.
When you take a look at how little gutter cleaning really is, compared to the multiple benefits you get, it ought to be abundantly clear that it is well worth investing your cash in. If you don't use a skilled professional to clean your gutters and downspouts the only other alternatives are to not clean them, or to do the job yourself. Neither of these choices are good ones, which is why selecting an experienced professional gutter cleaner is the only way to go.


text:
Sometimes there's nothing like a great infographic for showing what data only says.
Making scientific data a visual thing can really drive home a truth. It's amazing how saying something without words can be this powerful.
Robby Berman
Cold, hard numbers are nice for experts. But how can the rest of us understand them?
Visualizations and infographics are everywhere these days — TV, mobile devices, wherever you look. They seem like a very modern, friendly way of getting a science-y point across. But as the Nature video below explains, they actually have a long history that includes some surprises, including a historical name you may recognize.
Remember Florence Nightingale, founder of modern nursing, the "lady with the lamp"?
She was actually an eminent statistician. Who knew?
Nightingale translated war statistics into something regular folks could understand.
This infographic is her most famous work:
It made its point about the benefits of sanitary practices so eloquently that it changed the way science was done in the 1880s. Even politicians could understand it. (Joke. Well, they could.)
It's easy to understand what it says, once you realize the picture on the right is "before" and the one on the left is "after." The blue area shows preventable diseases that could be controlled by more sanitary practices. "Before" shows the original amount these illnesses, and "after" shows what happened after things got cleaned up. Simple and powerful evidence for her cause.
Another example? The Human Genome Project.
Mapping human and animal genes has involved the collection of a gargantuan amount of data. Infographics to the rescue.
Here's an example. To show the genetic material that a person has in common with a chimp, a dog, a chicken, and a platypus, scientists spun the data into circles that show a human chromosome in the bottom half and any genetic material the animal has in common in the top.
Here, doggie!
Each of the 22 chromosomes has its own colored circle, and there are also circles for the male and female X and Y chromosomes. These circles are used all the time in scientific literature because they make it so easy for scientists to see what they've got.
And check out this more hypnotic, lovely way to show ocean currents.
This beautiful animation of ocean-current data collected by satellites and buoys speaks for itself. This isn't made-up movement. It shows what the data actually says. Wow.
Turning data into animations — OK, cartoons — like this doesn't make light of it.
It just lets more people in on the wonder of discovery.
And now, the video:


text:
The Neanderthals in Gibraltar were among the first to be discovered by modern scientists and have been among the most well studied of their species according to a number of extinction studies which emphasize regional differences, usually claiming the Iberian Peninsula partially acted as a "refuge" for the shrinking Neanderthal populations and the Gibraltar population of Neanderthals as having been one of many dwindling populations of archaic human populations, existing just until around 42,000 years ago.  Many other Neanderthal populations went extinct around the same time.

The skull of a Neanderthal woman, discovered in a quarry in 1848, was only the second Neanderthal skull ever found and the first adult Neanderthal skull to be discovered, eight years before the discovery of the skull for which the species was named in Neandertal, Germany; had it been recognised as a separate species, it might have been called Calpican (or Gibraltarian) rather than Neanderthal Man. The skull of a Neanderthal child was discovered nearby in 1926. The Neanderthals are known to have occupied ten sites on the Gibraltar peninsula at the southern tip of Iberia, which may have had one of the densest areas of Neanderthal settlement of anywhere in Europe, although not necessarily the last place of possible habitation.

The caves in the Rock of Gibraltar that the Neanderthals inhabited have been excavated and have revealed a wealth of information about their lifestyle and the prehistoric landscape of the area. The peninsula stood on the edge of a fertile coastal plain, now submerged, that supported a wide variety of animals and plants which the Neanderthals exploited to provide a highly varied diet. Unlike northern Europe, which underwent massive swings in its climate and was largely uninhabitable for long periods, the far south of Iberia enjoyed a stable and mild climate for over 125,000 years. It became a refuge from the ice ages for animals, plants and Neanderthals, the latter of which most certainly did not survive there for thousand years longer than any other habitation site. Around 42,000 years ago, the climate underwent cycles of abrupt change which would have greatly disrupted the Gibraltar Neanderthals' food supply and may have stressed their population beyond recovery, leading to their aggregated extinction in areas of Europe with similar climates.  In Gibraltar, but also in other less well studied areas, did the Homo Neanderthalensis leave its last footprint of existence circa 40,000 BCE.

Fossil discoveries

The Gibraltar Neanderthals first came to light in 1848 during excavations in the course of the construction of a fortification called Forbes' Barrier at the northern end of the Rock of Gibraltar. The skull of a Neanderthal was discovered in Forbes' Quarry by Lieutenant Edmund Flint, though its exact provenance is unknown, and was the subject of a presentation to the Gibraltar Scientific Society by Lieutenant Flint in March 1848. It was not realised at the time that the skull, now known as Gibraltar 1, was of a separate species and it was not until 1862 that it was studied by palaeontologists George Busk and Hugh Falconer during a visit to Gibraltar. They gave a report on it to the British Association for the Advancement of Science in 1864 and proposed that the species be called Homo calpicus after Mons Calpe, the ancient name for Gibraltar. It was only later realised that the skull was a specimen of Homo neanderthalensis, which had been named for the Neanderthal 1 skull found in Germany in 1856. Busk described it as "characteristic of a race extending from the Rhine to the Pillars of Hercules", highlighting its importance as confirmation that the Neanderthal 1 specimen was genuinely a member of a distinct species and not simply a deformed Homo sapiens.

The skull was the first Neanderthal adult cranium to be discovered and, although small, is nearly complete; it is thought to have belonged to a woman due to its gracile features. In 1926, a second Neanderthal skull was found by Dorothy Garrod at a rock shelter named Devil's Tower, very close to Forbes' Quarry. This fossil, known as Gibraltar 2, is much less complete than the Gibraltar 1 skull and has been identified as that of a four-year-old child. Further excavations at the two sites are infeasible. Quarrying at Forbes' Quarry has meant that it has been virtually denuded of Pleistocene sediments while Devil's Tower is directly under the North Front of the Rock of Gibraltar and is one of the most dangerous places on the entire peninsula due to frequent rockfalls.

Occupation sites

The limestone massif of the Rock of Gibraltar is riddled with caves – its ancient name, Calpe, means "hollow" – and it was here that archaeologists focused their efforts to find sites of Neanderthal occupation. Ten such sites have been discovered so far, of which the most important are five caves on the eastern side of the Rock: Ibex Cave, high up on the east side, which was only discovered in 1975 due to being buried under the wind-blown sands of the Great Gibraltar Sand Dune, and four sea caves near sea level on the south-eastern flank, Boathoist Cave, Vanguard Cave, Gorham's Cave and Bennett's Cave.

Large-scale excavations in 1947–54 by John d'Arcy Waechter showed that Gorham's Cave had been occupied for over 100,000 years during the Middle Palaeolithic, Upper Palaeolithic and Holocene epochs. Further excavations have been carried out in Gorham's, Vanguard and Ibex Caves since 1994 as part of the Gibraltar Museum's Gibraltar Caves Project. The excavations have revealed possibly the best evidence of a Neanderthal landscape found anywhere, buried under many metres of sand, fallen stalactites, bat guano and other debris that has fortuitously preserved an abundance of palaeontological evidence on the cave floors. The finds have enabled palaeontologists to reconstruct the lifestyles of the occupants and their environment in considerable detail.

The finds in Gorham's Cave include charcoal, bones, stone tools and burnt seeds dating from the Middle to Upper Palaeolithic periods, while Vanguard Cave contains Pleistocene and Middle Palaeolithic deposits. When Ibex Cave was discovered in 1975, fifty artifacts from the Middle Pleistocene period were found on the surface along with vertebrate remains and shells. Neanderthal tools were found in an excavation carried out there in 1994 by the Gibraltar Caves Project, though occupation of the cave seems to have been sporadic. Most of the stone tools appear to have been deposited during a single period of occupation, perhaps as short as a single day.

In July 2012, archaeologists discovered an engraving in Gorham's Cave, buried under 39,000-year-old sediments, which has been called "the oldest known example of abstract art". Consisting of a series of intersecting lines, the engraving is located about  inside the cave on a ledge that is thought to have been used by Neanderthals as a sleeping place. Its meaning (or whether it had any meaning) is not known but researchers have described it as providing the first evidence that Neanderthals had the cognitive ability to produce abstract art. The engraving was clearly made deliberately, rather than being an accidental by-product of another process such as cutting meat or fur, and would have taken a significant amount of effort to carve into the dolomite rock of the cave.

Gibraltar in prehistory

Pleistocene Gibraltar was physically very different from today. During the ice ages, the much greater volume of water locked up in the polar ice caps and continental glaciers meant that sea levels were far lower than in the present day. In the late Pleistocene period, when Neanderthals inhabited Gibraltar, the sea level was as much as  lower than today. The drop in sea levels exposed a coastal plain which considerably increased the size of the Gibraltar peninsula. The Bay of Gibraltar, to the west, was considerably smaller than it is today and was probably an estuary, while the eastern coast of the peninsula would have extended out around  to  east of the modern shoreline. Another small estuary to the north-east of Gibraltar would have marked the northern boundary of the peninsula's extended shoreline. Whereas modern Gibraltar is only  in size, the Pleistocene coastal plain would have added about another .

The entire coastal plain is now submerged in the Bay of Gibraltar, Strait of Gibraltar and Alboran Sea due to the rise in sea levels over the last 12,000 years, but its environment can be reconstructed in detail from the evidence of pollen, seeds and animal bones found in the caves of Gibraltar. It would have predominantly been a sandy grassland with patchy trees and shrubs, supporting a wide variety of flora and fauna. The wildlife included important game species – red deer, wild cattle, rabbits and wild boars – and predators including spotted hyenas, leopards, lynxes, wolves, brown bears, wildcats and possibly lions. Gibraltar was, then as now, a key waypoint on the avian migration route between Europe and Africa and a very wide variety of birds were present. Bones from the caves indicate the widespread presence of scavengers such as various species of vulture and waterbirds that would have lived in the estuarine areas of the plain. The general appearance of the habitat was similar to that of the present-day Doñana National Park,  north-west of Gibraltar.

The region enjoyed a much more stable and temperate climate than almost anywhere else in Iberia. The range of the climate of prehistoric Gibraltar can be deduced from proxies such as the remains of animals that are very sensitive to heat and humidity, such as Hermann's tortoise, which depends on a mean annual temperature of  for its eggs to hatch and a rainfall of no more than  annually. Whereas northern Europe underwent massive climatic swings between temperate and extreme glacial conditions, which made large areas of the continent uninhabitable for extended periods, Gibraltar's prehistoric climate appears to have been largely unaffected by such changes. The iconic ice age mammals of northern Europe – woolly rhinos, mammoths, bison, reindeer, muskox and cave bears – never made it as far south as Gibraltar, which enjoyed a temperate and stable year-round climate due to its southerly latitude, distance from the coastal mountains and position on the Mediterranean shore. As a result, it became a kind of "Africa in Europe" where animals, plants and Neanderthals were able to shelter from the worst effects of the ice ages.

Lifestyle of the Gibraltar Neanderthals

The evidence from Gibraltar's caves shows that the Neanderthals occupied the peninsula for at least 100,000 years. They probably did not stay there year-round but lived in widely dispersed groups that roamed across the open savannah and coastal wetlands of southern Iberia, seeking seasonal supplies of food. They are likely to have followed the movements of the animals, for instance following them to waterholes during dry summer periods. Gibraltar's southerly latitude would have meant a fairly constant pattern of activity throughout the year due to the long days and mild climate, in contrast to the more abruptly seasonal lifestyle of the Neanderthals who lived further north.

Animal remains found in the caves show that the Neanderthals were active hunters. Their predominant large prey appears to have been ibex, which would have been plentiful in the vicinity of the Rock. Red deer and other grazing animals are also well represented. More dangerous animals like wild boar, aurochs and rhino appear to have been avoided – understandably so, given that the Neanderthals are thought to have relied on using thrusting spears in close-quarter ambushes.

In addition to large animals, they also ate very large quantities of small mammals and birds. 80% of the bones found in the caves are those of rabbits, which would have been abundant in the coastal sand dunes. The Neanderthals exploited Gibraltar's location as one of Europe's focal points for migratory birds, by catching and eating them in large quantities. 145 species, representing a quarter of Europe's total, are represented in the finds from the caves, making them the richest sites for fossil bird remains anywhere in Europe. They also ate tortoises and even monk seals, suggesting that they might have hunted or at least scavenged marine mammals. They certainly ate shellfish in large quantities; many mussel shells have been found in the caves, indicating that the Neanderthals harvested them from the seashore and brought them back over a considerable distance, perhaps carrying them in bags made from animal skins.

The range of resources consumed by the Neanderthals seems to have remained constant throughout the 100,000 years of their occupation, as did their tools; as they did not face changes to their local environment, they had no need to develop new technologies, unlike the northern Neanderthals. This technological stasis is clearly visible from the artefacts found in Gibraltar. The newest Neanderthal tools to have been found there are virtually identical to the oldest, all exclusively being examples of the Mousterian type of flint tools that were first developed around 300,000 years ago. The Neanderthals even used the same hearth in Gorham's Cave for over 8,000 years. Animal bones from the vicinity show that the Neanderthals used the caves for cooking and butchery, as is apparent from the presence of bones which are burnt or have cut marks from Neanderthal stone knives.

Gibraltar's Neanderthals may have been the last members of their species. They are thought to have died out around 42,000 years ago, at least 2,000 years after the extinction of the last Neanderthal populations elsewhere in Europe. They did not disappear during the Last Glacial Maximum during the time of the H2 Heinrich event, when ocean circulations were disrupted by very rapid climate fluctuations which coincided with the disintegration of coastal ice sheets. Between 45,000 and 42,000 years ago, the climate abruptly became extremely cold, arid and unstable, with overall conditions around 42,000 years ago leading to the Neanderthals' disappearance. The fertile savannah was replaced by pine forests while higher ground became an arid steppe. The food resources available to the Gibraltar Neanderthals would have changed substantially, with many species disappearing and only partially being replaced by cold-weather species migrating from the north. They could not migrate away to warmer climates; although Africa is only  away across the Strait of Gibraltar, the Gibraltar Neanderthals were trapped as they had no boats. The ultimate cause of the extinction of the Gibraltar Neanderthals is not known but was probably not due to competition with modern humans, who did not arrive in the area until about 18,000 years ago. Their population had probably been shrinking for millennia and the abrupt climate change may have stressed them beyond recovery, leaving them vulnerable to the effects of inbreeding and outbreaks of disease.

See also
 Dawn of Humanity (2015 PBS documentary)
 Engis 2
 List of fossil sites (with link directory)
 List of human evolution fossils (with images)
 Neanderthal
 Neanderthal 1
 Neanderthals in Southwest Asia
 Origins of Us (2011 BBC documentary)
 Prehistoric Autopsy (2012 BBC documentary)

References

Bibliography

 Human Timeline (Interactive) – Smithsonian, National Museum of Natural History (August 2016).

External links

Prehistoric Gibraltar
Mammals of Europe
Gibraltar

redpajama_set_name: RedPajamaWikipedia


In just under 2 hours from the official launch today, we have our first submission that arrived via email. Thank you so much to 'the woman who sat on the couch' for kicking us off!
**Once we're up and running I'll only be posting once weekly to show off all the beautiful submissions. But for now, while we're finding our legs, I'll post a few up ahead of time to help inspire you.


There was a time when I was a huge fan of Toonami, and I was quite sad to see it go. When it returned, I was excited, but I quickly saw a new death on the horizon. Without new content, there was little point to watch Toonami. Things aren't like they used to be. We have access to a swath of anime series through Crunchyroll and Funimation. Not only that, but we have access to simulcasts! How could Toonami compete?
That's why I am so excited to see the return of Samurai Jack. Not only is it new content, but it's also a show that I happen to miss. Unfortunately, as of now, little is known about the new season, except that it is set to air in 2016, as part of Adult Swim's Toonami block.
The show ran for four seasons, had 52 episodes, and ran from 2001 until 2004. The story was never resolved when the show was cancelled.
Hopefully this is just the beginning of new, and even exclusive content for Toonami. If nothing else, this one show could result in a fair boost to the ratings, and let's face it, Toonami needs a ratings boost. How much of a boost depends on a few things, including when the show will be on and the quality of the new season itself.
The post Toonami Lives: Samurai Jack Returns appeared first on Geekers' Keep.


text:
Laohekou (chiń. 老河口; pinyin: Lǎohékǒu) – miasto na prawach powiatu w środkowych Chinach, w prowincji Hubei, w prefekturze miejskiej Xiangyang, nad rzeką Han Shui. W 1999 roku liczba mieszkańców miasta wynosiła 517 746.

Stolica rzymskokatolickiej diecezji Laohekou.

Historia
W XVIII i XIX wieku Laohekou rozwijało się jako ośrodek handlu, lecz z czasem zaczęło tracić swoją pozycję na rzecz pobliskiego Xiangyangu. Miejscowość otrzymała prawa miejskie we wrześniu 1948 roku i została wyodrębniona z powiatu Guanhua (光化县), jednakże dokładnie rok później utraciła status miasta. Laohekou funkcjonowało jako miasto również w latach 1951-52. Prawa miejskie przyznano ponownie dopiero w listopadzie 1979 roku a w 1983 roku do Laohekou przyłączono tereny powiatu Guanhua. W latach 90. nastąpił szybki rozwój gospodarczy miasta.

Przypisy

Miasta w prowincji Hubei
Xiangyang


text:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:flexible="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.p_v.flexiblecalendarexample.CalendarActivity4">

    <LinearLayout android:orientation="horizontal"
        android:background="@android:color/holo_purple"
        android:padding="5dp"
        android:gravity="center"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <ImageView android:id="@+id/left_arrow"
            android:src="@drawable/left_arrow"
            android:layout_weight="1"
            android:layout_width="20dp"
            android:layout_height="40dp" />

        <TextView android:id="@+id/month_text_view"
            android:padding="5dp"
            android:gravity="center"
            android:textSize="22sp"
            android:textStyle="bold"
            android:textColor="@android:color/holo_orange_light"
            android:layout_width="wrap_content"
            android:layout_height="match_parent" />

        <ImageView android:id="@+id/right_arrow"
            android:src="@drawable/right_arrow"
            android:layout_weight="1"
            android:layout_width="20dp"
            android:layout_height="40dp" />
    </LinearLayout>

    <com.p_v.flexiblecalendar.FlexibleCalendarView
        android:id="@+id/calendar_view"
        android:background="@android:color/darker_gray"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        />

    <Button android:id="@+id/reset_button"
        android:text="Go to current month"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

redpajama_set_name: RedPajamaGithub


Weekend warriors may be on to something.
A new study, finds that weekend warriors who met recommended exercise guidelines (including those who exercised just once or twice a week but did so vigorously for at least 75 minutes, or at moderate intensity for at least 150 minutes) had a reduced risk of death from cardiovascular disease, cancer, or other causes.
· More than 63,000 adults in England and Scotland were surveyed about their health and physical activity between 1994 and 2012.
· Data regarding their deaths from any cause, cardiovascular disease, and cancer were also collected over this time period.
Posted on June 15, 2017 by Ted Sobol and filed under fitness.


Today we'd like to introduce you to Cerila Gailliard.
Cerila, can you briefly walk us through your story – how you started and how you got to where you are today.
In 2003, I was pursuing my undergraduate degree at the University of Phoenix in Information Technology. In my very last class, the teacher gave the class an assignment. The assignment was to answer the question, Where do you see yourself in five years? When it was time to present, I told the class in five years, I see myself working as a project management consultant.
After I graduated, I worked for various corporations in Information Technology, Manufacturing and Finance. In 2007, I was presented with an opportunity to work as a project manager for a fortune 500 corporation. I worked there leading and executing various projects around the world.
In 2014, I passed the exam to become a certified Project Management Professional (PMP) through the Project Management Institute (PMI). I knew then it was time for me to start my own business and fulfill my dream of becoming a project management consultant. In December 2014, I started my own business and "Orchestrating Your Success (OYS) LLC" was born.
Even though I had started my own business, it was not time for me to quit my day job. I continued to work full-time and manage my business on the side. Towards the end of 2016, I knew it was time to quit my job and go full-time into my business if I wanted to take my business to the next level. I knew it was a big risk for me, but I was ready to take the risk.
Understanding your target market is key to success. I changed my target market after I found out my services were needed, but they were not willing to pay for my services. Doing your research upfront on your target market is key. This dictates how I network and the opportunities I pursue for my business.
So, as you know, we're impressed with Orchestrating Your Success (OYS) LLC – tell our readers more, for example, what you're most proud of as a company and what sets you apart from others.
My company specializes in project management services. Orchestrating Your Success (OYS) LLC helps businesses advance their ambitious project goals through project management to maximize business resources and increase project profitability.
I am proud of the volunteer work we do with other organizations and non-profits. We provide free workshops through the Greater Phoenix of Score to educate small business on project management. I am a Venture Mentor at ASU through their Entrepreneurship and Innovation Program. I assist with helping start-ups bring their ideas to fruition.
Orchestrating Your Success (OYS) LLC separate ourselves from our competition by moving businesses to the next level by managing their projects effectively to remove project inefficiencies and maximize project resources.
When I wanted to know how to start a business in Arizona, I attended a four-hour class hosted by The Greater Phoenix of Score. They laid out in details on how to start a business in Arizona.
I follow their instructions and Orchestrating Your Success LLC was born. Karen Malta, The Caring Connector, help me to focus on what I wanted my business to become.
Alicia Marron Marseille, Director of the RISN Incubator (ASU). She taught me about entrepreneurship and all its intricacies. I really could not have gotten my business to where it is without her mentorship and guidance.


text:
Snow Shoe podría referir a:

Palabra en inglés de Zapato de forma de raqueta de nieve.
 Snow Shoe (Pensilvania)
 Municipio de Snow Shoe (condado de Centre, Pensilvania)


Home Bitcoin Lightning Network Promised Millions of Transactions a Second, Where Are They?
For years bitcoiners were told Lightning will solve all scalability problems. It will be able to welcome the world in an instant, capable of serving all the many uses, able to handle a million transactions a second.
Yet now many months since it launched, it can not even handle a million dollars worth of bitcoin transfers, with its capacity currently standing at just 111 BTC, worth $710,000.
The Lightning Network (LN) website says it is "capable of millions to billions of transactions per second across the network.
Visa handles many trillions of dollars worth of transactions a year. The bitcoin network too handles more than a trillion, $4 billion in just the past 24 hours. LN on the other hand can hardly move around half a million.
Top blockchains stats, October 2018.
When asked how that would be done, we were told to go and read a basic tutorial on LN, with arrogance radiating from Lightning Labs employees.
Lightning Labs investors as of October 2018.
Lightning Labs is first and foremost a for-profit start-up in San Francisco, raising $2.5 million in a seed round recently.
Jack Dorsey of Twitter was one investor, as were many others shown above. Including Ben Davenport of BitGo and Charlie Lee, the Litecoin founder who sold all of his itecoin at the very top in December 2017.
So you'd expect Lightning Labs employees to explain why the promised solution to all of bitcoin's scalability problems has turned out to be no solution at all so far and how they plan to change that.
Yet explaining it is perhaps too hard because some problems might be fundamental. The mentioned channel.db back ups problem, for example, needs a solution to the double spending problem.
An LN transaction is basically a promise. You're promising someone that you will eventually pay them by giving them a hash that kind of proves the payment will be made. In the meantime, you still have possession of the coins. So why can't you just make the same promise to someone else?
Of course it isn't as simple, there are all sorts of constraints, but in certain situations you can basically make the same promise, or better said, you can renegade on the promise you made. That can be intentional, by effectively stealing someone's bitcoin through broadcasting an older hash. Or it can be accidental, by some computer mishap somewhere corrupting your channels database and broadcasting an older transaction.
The latter has happened, with a user losing funds. That's because if you broadcast an older transaction, and the other party still has all the transaction records, they can take all your bitcoin as punishment.
The other party might not have all of those records, or he/she might not be paying attention because perhaps they're not online. So we bring in a trusted third party, watchtowers, which, as the name says, keep their eyes on the lookout on your behalf.
A compromise too far for many, but at least it is a solution of sorts. Keeping your laptop from corrupting your database, however, might not have an easy solution.
You can have automatic backups now and then, but with all this being automatic, the question is how do you know you're broadcasting the wrong hash if the database was somehow corrupted. You might find out soon because your coins have gone, but preventing that isn't easy.
Then there's optimized routing. Now what that means we do not know, but LN works through a six degrees of separation sort of thing. I know you, you know whoever, I pay whoever through you. The question is how do I know that you know whoever? Or how do I know who to go through in order to get to the final destination?
A solution to that is difficult, unless one chooses the easy way of having an all watchful eye that basically tells everyone what to do.
While subatomic swaps sounds interesting. You're basically automatically turning an address into an LN channel. Easy peasy, if you have to go through a third party, but not very easy in a trustless way.
And of course it isn't easy because they're effectively trying to re-invent bitcoin, something that was thought impossible before Nakamoto showed how it can be done.
Solving the double spending problem by trusting watchtowers who might cheat you isn't quite solving anything. Adding third parties in the middle of everything in the base protocol is unsolving things.
So it is barely being used. Whether that will change remains to be seen, with it potentially having some niche use cases, but solving the conceptual problems for actual use sounds like a very difficult task.
Especially if it has to compete with blockchain transactions once sharding is available. That keeps blockchain transactions as convenient as they are now, with the improvements done on the backend by effectively parallelizing the nodes.
There wouldn't be any additional trusted third parties, or locking up of funds to transact with the remainder, or failed payments due to lack of proper routing.
It would instead presumably work straight out of the box, just as bitcoin did on the very first day it was launched. While for LN it looks like it might take some more years for it to work, if it ever does.
I think we have been working to improve the transactions capacity of lighting network from 1,000-10,000,and now 1,000,000 per sec.(ANN)(RDN)Raiden Network:Welcome to ethereum lighting for cheap,fast,and scalable.So Raiden Network is handling such transactions.


text:
Q: What are some ways to show that $1$ is not first-order definable in $(\mathbb{R}, +, 0, \le)$? My question is based on this answer by Asaf Karagila. Emphasis mine.

Indeed as a first-order structure, $(\mathbb{R},≤)$ cannot define the
operations $+,⋅$ or the constants $0,1$. In fact, even as an ordered
group $(\mathbb{R},+,≤)$ cannot define the number 1. These are all simple
exercises that can be given after the second week of a first course
about model theory.

This passage suggests to me that there should be a reasonably direct way to prove that $1$ is not definable in $(\mathbb{R}, +, \le)$ or the similar structure $(\mathbb{R}, +, 0, \le)$.
I'm curious what the canonical way to prove this fact is. I'm also curious if there's a way to prove this that's "syntactic" rather than "semantic" in nature and doesn't appeal to specific models of the theories in question.

Coming up with an informal argument to prove this is relatively straightforward. Let $M^1$ denote the universe of the first model and $M^i$ denote the first model and so on for $(2, ii), (3, iii), (4, iiii), (5, v) \cdots$. Similarly, let $T^i$ be the first theory. For the purposes of this question, I'll assume that the universe of a model is nonempty.
Let $M^i$ be a model of the theory associated with $(\mathbb{R}, +, \le)$. $0$ is the unique solution to the equation with one free variable $\forall w \mathop. x + w = x$.
Let $M^{ii}$ be the model associated with $(\mathbb{R}, +, 0, \le)$.
I can think of two ways to show the non-first-order definability of $1$. I'm pretty sure that these arguments work.
The first is to note that $M^2$ could be $\{0\}$, since without $1$ we are not guaranteed the existence of a positive element. $1$ is not definable because it is not definable in at least one model of $T^{ii}$, therefore it isn't first-order definable.
The second is to look at the standard model of $T^{ii}$. There is more than one way to extend it to a model of the theory associated with $(\mathbb{R}, +, 0, 1, \le)$. If we pick a non-positive element of $M^2$, then it will satisfy all the multiplication-free sentences that $1$ satisfies in the theory associated with $(\mathbb{R}, +, \cdot, 0, 1, \le)$. Since the choice of $1$ is not unique in at least one model, $1$ is not first-order definable.

The intuitive idea behind these arguments, from my perspective, is to locate specific models where there either a) are no suitable candidates for $1$ or b) is more than suitable candidate for $1$.
However, first-order-definability feels like a syntactic property and it feels like I'm using a hypothesis without stating it by looking at specific models and arguing about the reasonableness of extending them with interpretations of new function symbols.
What's the canonical way to prove this fact? Also, is there a way to prove it that's more directly syntactic?

A: I don't really understand your proposed approach, so I can't comment on it.

I'm not sure it's "canonical" per se, but in my opinion the most natural way to attack a problem like this is via automorphisms.
One of the most important properties of first-order logic is its isomorphism-invariance (and indeed this is usually taken as one of the criteria for being a "logic" in the first place - in particular, everything that follows holds for second-order logic, infinitary logics, etc.):

Suppose $\mathcal{A},\mathcal{B}$ are structures in the same language and $f:\mathcal{A}\rightarrow\mathcal{B}$ is an isomorphism. Then for every formula $\varphi$ in the language of these structures and every tuple $a_1,...,a_n\in\mathcal{A}$ we have $$\mathcal{A}\models\varphi(a_1,...,a_n)\iff \mathcal{B}\models\varphi(f(a_1),...,f(a_n)).$$

We can use this to prove for example that $1$ is not a first-order definable element of the structure $\mathcal{R}=(\mathbb{R};\le,+)$ as follows. Let $f:\mathbb{R}\rightarrow\mathbb{R}:x\mapsto 2x$. This is an automorphism of the structure $\mathcal{R}$ and $f(1)=2$, so by the fact above we get in particular that for each formula $\varphi(x)$ in our language we have $\mathcal{R}\models \varphi(1)\iff\mathcal{R}\models\varphi(2)$. Consequently there is no formula in our language which holds, in $\mathcal{R}$, of exactly the element $1$. And recall that this is what it means for an element to be (un)definable:

Given a structure $\mathcal{A}=(A;...)$ and an element $a\in A$, we say $a$ is (parameter-freely-)definable in $\mathcal{A}$ iff there is some formula $\varphi(x)$ in the language of $\mathcal{A}$ such that $$\{u\in A: \mathcal{A}\models \varphi(u)\}=\{a\}.$$

Note that this is very semantic, contra your request. This is however part of the definition of the term, and it really only ever makes sense to talk about definability relative to a structure, although unfortunately we do often abuse language. See here for a summary of definability (both with and without parameters).

Now the above approach is extremely "coarse," and - unsurprisingly - doesn't always work. For example, the structure $\mathcal{N}=(\mathbb{N};<)$ has no automorphisms at all (= is rigid), and so we can't use the idea above to rule out any definability results at all, but of course only countably many subsets of $\mathbb{N}$ could possibly be definable in $\mathcal{N}$ (and if you want to think about definable elements rather than relations, consider an uncountable rigid structure like the linear order $(\omega_1;<)$).
For more subtle results we need to use more specific properties of the logic in question. For example, the set $E$ of even numbers is not first-order definable in $\mathcal{N}$ but it is second-order definable in $\mathcal{N}$, so if we want to prove the non-first-order definability of $E$ in $\mathcal{N}$ we'll need to use a fact which is more specific to first-order logic. For example, we have the notion of back-and-forth systems, a kind of "isomorphism analogue" for which first-order logic (but not second-order logic!) satisfies an appropriate invariance principle; these are often presented game-theoretically (as Ehrenfeucht-Fraisse games), and I've written a number of arguments here on MSE using this presentation.

The semantic nature of definability notwithstanding, there is a "definability-flavored" question which is purely syntactic. Suppose I have a theory $T$. I can ask whether there is a formula in the language of $T$ which $T$-provably has some property. For example:

Is there a formula $\varphi(x,y,z)$ such that $$\mathsf{Pres}\vdash(\forall x,y\exists !z[\varphi(x,y,z)])\wedge(\forall x,y,x',y',z[\varphi(x,y,z)\wedge\varphi(x',y',z)\rightarrow x=x'\wedge y=y']),$$ where $\mathsf{Pres}$ is Presburger arithmetic?

This essentially asks whether Presburger arithmetic can implement a pairing operation. In case you're curious, the answer is negative (and despite being a syntactic question there's a semantic argument for this!).
We could also make allowances for incompleteness in our theory by permitting some casework (I'll talk about unary relations specifically for simplicity). Given a theory $T$ in a language $\Sigma$ and a sentence $\psi$ in the language $\Sigma\sqcup\{U\}$ for some fresh unary relation symbol $U$, say that $T$ almost defines a $\psi$-solution iff there is a finite sequence $\theta_1(x),...,\theta_n(x)$ of $\Sigma$-formulas such that $$T\vdash\bigvee_{1\le i\le n}\forall x(\psi[\theta_i/U]),$$ where $\psi[\theta_i/U]$ is the $\Sigma$-formula gotten by replacing "$U$" with "$\theta_i$" throughout $\psi$. This turns out to be equivalent to every model of $T$ having a parameter-freely-definable set satisfying $\psi$ in the obvious sense (this uses compactness).

A: In addition to the automorphisms and EF-games that Noah discussed in his answer, another (more syntactic) way to prove non-definability is by understanding all the formulas up to logical equivalence, relative to the complete theory of the structure in question.
Let $T = \mathrm{Th}(\mathbb{R},0,+,-,\leq)$. Note that I'm including $-$ in the language. Sometimes adding definable symbols to the language is necessary to get quantifier elimination. If we want to show that something is not definable, we're free to add more symbols to the language: if it's not definable in the expanded structure, it won't be definable in the reduct. And in this case, $-$ is actually definable in $(\mathbb{R},0,+,\leq)$, by the formula $x+y = 0$, so adding $-$ to the language doesn't even allow us to define any new sets.
Now the theory $\mathsf{ODAG}$ of ordered divisible abelian groups, in the language $\{0,+,-,\leq\}$, is complete and has quantifier elimination [see Corollary 3.1.17 in Marker's Model Theory: An Introduction, for example].
Since $(\mathbb{R},0,+,-,\leq)$ is an ordered divisible abelian group, $T = \mathsf{ODAG}$. So every formula is equivalent, in every model of $T$, to a quantifier-free formula.
What are the possible quantifier-free formulas in one free variable $x$? Every term in $x$ is equivalent to one of the form $nx$, for $n\in \mathbb{Z}$ (where $0x$ is $0$ and for $n>0$, $nx$ is $x+\dots +x$ ($n$ times) and $(-n)x$ is $-(x+\dots +x)$ ($n$ times)). So every atomic formula in $x$ is equivalent to one of the form $nx = mx$ or $nx \leq mx$ for $n,m\in \mathbb{Z}$. Subtracting $mx$ from both sides, every atomic formula in $x$ is equivalent to $kx = 0$ or $kx \leq 0$ for some $k\in \mathbb{Z}$. The first formula defines $\{0\}$ in $\mathbb{R}$, and the second formula defines $\{x\mid x\leq 0\}$ in $\mathbb{R}$. So any Boolean combination of atomic formulas in $x$ defines some union of the sets $\{x\mid x < 0\}$, $\{0\}$, and $\{x\mid 0 < x\}$. This shows that there are only $8$ formulas in one free variable up to logical equivalence modulo $T$. And only one of these $8$ defines a singleton.


Superpro DMX Lighting Console 512 Controller For Stage Moving Head. DMX512/1990 standard, 512 DMX channels, output with optical isolated. Up to 62 intelligent Fixtures may be connected with a maximum of 36 channels each. Uses can allocate DMX channel to each intelligent Fixture dynamically. 16-bit X/Y control for absolutely precise movement. Up to 80 SHAPE generators. SHAPE track control is provided to control such effects as circles, lines and shapes like 8, etc.
62 Chases, up to 100 Steps each. Trigger mode selectable: Music synchronously, Auto, Manual speed. 6 Chases, 62 Scenes operated at the same time.
At most 62 intelligent Fixtures can be selected simultaneously. 31 MACRO, running combination of different manual, scene and chase can be recorded to the MACRO.
Each USB flask-disk can record the whole data of controller. Power supply: AC 90-250V / 50-60Hz. Size: 483mm x 400mm x 105mm.
Adhering to your satisfaction, Jacmui stage lighting special effect equipment pursuing spirit of service, to provide timely, fast and professional after-sales service. Our products are packed by standard carton box or flight case, that's depended on detail sale item and price. The item "SuperPro DMX512 Light Console Stage Light LED Moving Head Controller" is in sale since Thursday, March 08, 2018. This item is in the category "Musical Instruments & Gear\Stage Lighting & Effects\Stage Lighting Controllers".
The seller is "kendysu2014" and is located in guangzhou, . This item can be shipped to North, South, or Latin America, all countries in Europe, all countries in continental Asia, Australia.


A short drive from Gokarna, Yana is famous for the towering, twin rock formations that bring in visitors by the droves. You can spend a few hours here, weaving your way through lush forests to get to the foothills of the jagged hills.
For those of you who are looking to pack in more than just beaches on your trip to Gokarna, Yana is perfect. A little more than an hour's drive away, Yana was once all forest and rocks. And attracted only the discerning trekker and the pilgrim (there's a famous Shiva temple here). However, in the past few years, a steady stream of tourists swing by (although it tends to be less crowded than Gokarna itself). Despite that, we recommend stopping by simply to check out the splendid rock formations here.
At the entrance, you will have to shell out a small fee to access the hills. Then, take a well-laid out pathway that takes you through a forest area. A couple of kilometres in and the breathtaking rocks will loom in front of you. Said to be formed from black limestone, the twin peaks are marked by vertical ridges. And are unlike anything you have seen around Karnataka. On your way in, you'll first see the shorter, Mohini Shikhara, and then the higher, Bhairaveshwara Shikhara. At the base of the second peak is a temple dedicated to Lord Shiva. You can then take a muddy path, around the temple, which takes you to the centre of the Bhairaveshwara Shikhara. The open cave formation is well-lit during the day. If you don't mind all the bat poo lying around, you are in for a memorable experience. You can look up to marvel at the scale of the rock and the blue sky that canopies it.
We recommend you come by on a weekday to take in the beauty and the quietness of the forests that's only interrupted by the chirping of birds.


New York University (NYU) is a private nonprofit research university based in New York City. Founded in 1831, NYU's main campus is centered in Manhattan, located with its core in Greenwich Village, and campuses based throughout New York City.
NYU is also a university with a global focus, where students travel internationally for education at NYU Abu Dhabi and NYU Shanghai, as well as to centers in Accra, Berlin, Buenos Aires, Florence, London, Madrid, Paris, Prague, Sydney, Tel Aviv, and Washington, D.C.


LG will be unveiling its latest high-end smartphone, the LG V30, in the coming weeks. The main selling point? The F1.6 aperture and glass lens in the dual rear camera. This is the world's first smartphone to have such a wide aperture lens among all existing smartphone cameras.
Having a wider aperture means that more light can pass through the camera lens, enabling smartphone photographers to take a clearer and brighter image whether they are shooting in the day or at night. According to LG, the F1.6 aperture lens will "deliver 25 percent more light to the sensor compared to an F1.8 lens." The wider aperture will also give smartphone photographers a greater depth of field when shooting portrait or close-ups, giving them a bokeh effect.
The V30's glass lens in the dual rear camera will complement the F1.6 aperture by allowing more light to pass through its lens than a plastic lens, and it also allows a better colour reproduction of the image taken.
Over the years, LG has impressed with its innovation in smartphone technology, excelling in manufacturing few of the best smartphones in the market especially their 2017 flagship, LG G6.


Sign Your Child Up For KidzFIT Today!
that are aligned to God's word concerning our health.
as they glorify God in spirit, song, and dance.
This program is designed to make a different in every child!
The KidzFIT curriculum is based upon biblical principles related to the health of the spirit; resources to stimulate the mind; and strategies to activate the body. Our hope is that this curriculum will provide children with sound knowledge about healthy living and inspire them to take proactive steps in maintaining a healthy lifestyle.
Our Mission is to provide education that equips children with knowledge and skills necessary to make sound decisions regarding the health of their spirit, mind, and body.
Our vision is to decrease the number of children diagnosed with childhood obesity and increase the amount of children who are healthy spiritually, mentally, and physically.
Childhood obesity has become an epidemic in the United States. According to a report by theCenters for Disease Control and Prevention (2012), There has been a decline in the prevalence among preschool-aged children. However,obesity among children is still too high. For children and adolescents aged 2-19 years, the prevalence of obesity has remained fairly stable at about 17% and has affected about 12.7 million children and adolescents for the past decade (para. 1). While there is no single solution to solving the epidemic, there are preventative strategies that can be taught and practiced.


text:
Q: Is there a Pythonic way to get the git tag of an imported module I have a library of functions (krypton) which I have recently moved into its own Python 3.7 site package (in C:\ProgramData\Anaconda3\Lib\site-packages\krypton). I would like to keep track of the version number of the package using git tags, as it forms part of the output when the package executes. I am using GitPython to do this.
So I need to find the directory in which the krypton code is located in a reliable way in order to pass it to the GitPython Repo() method, as otherwise the CWD from which the script which imports would be used.
What I have so far is
import krypton
directory = os.path.split(krypton.__file__)[0]

repo = git.Repo(directory)
__sha__ = repo.head.object.hexsha
tags = repo.tags
if tags:
    __version__ = repo.tags[-1].name
else:
    __version__ = "unknown"

So I am importing krypton.py within itself. Which doesn't feel right, but which seems to work OK. is there a more elegant/reliable/Pythonic way I should do this?

A: I believe you can skip the re-import by using inspect to get the path of the library itself. I found some stuff in this answer.


text:
from __future__ import print_function
import os
import shutil
import tempfile
import atexit
import stat
import sys

# Attempts to delete given possibly nonexisting or read-only directory tree or filename.
# If any failures occur, the function silently returns without throwing an error.
def try_delete(pathname):
  try:
    os.unlink(pathname)
  except OSError:
    pass
  if not os.path.exists(pathname):
    return
  try:
    shutil.rmtree(pathname, ignore_errors=True)
  except IOError:
    pass
  if not os.path.exists(pathname):
    return

  write_bits = stat.S_IWRITE | stat.S_IWGRP | stat.S_IWOTH

  def is_writable(path):
    return (os.stat(path).st_mode & write_bits) == write_bits

  def make_writable(path):
    os.chmod(path, os.stat(path).st_mode | write_bits)

  # Some tests make files and subdirectories read-only, so rmtree/unlink will not delete
  # them. Force-make everything writable in the subdirectory to make it
  # removable and re-attempt.
  if not is_writable(pathname):
    make_writable(pathname)

  if os.path.isdir(pathname):
    for directory, subdirs, files in os.walk(pathname):
      for item in files + subdirs:
        i = os.path.join(directory, item)
        make_writable(i)

  try:
    shutil.rmtree(pathname, ignore_errors=True)
  except IOError:
    pass

class TempFiles(object):
  def __init__(self, tmp, save_debug_files=False):
    self.tmp = tmp
    self.save_debug_files = save_debug_files
    self.to_clean = []

    atexit.register(self.clean)

  def note(self, filename):
    self.to_clean.append(filename)

  def get(self, suffix):
    """Returns a named temp file with the given prefix."""
    named_file = tempfile.NamedTemporaryFile(dir=self.tmp, suffix=suffix, delete=False)
    self.note(named_file.name)
    return named_file

  def get_file(self, suffix):
    """Returns an object representing a RAII-like access to a temp file, that has convenient pythonesque
    semantics for being used via a construct 'with TempFiles.get_file(..) as filename:'. The file will be
    deleted immediately once the 'with' block is exited."""
    class TempFileObject(object):
      def __enter__(self_):
        self_.file = tempfile.NamedTemporaryFile(dir=self.tmp, suffix=suffix, delete=False)
        self_.file.close() # NamedTemporaryFile passes out open file handles, but callers prefer filenames (and open their own handles manually if needed)
        return self_.file.name

      def __exit__(self_, type, value, traceback):
        if not self.save_debug_files:
          try_delete(self_.file.name)
    return TempFileObject()

  def get_dir(self):
    """Returns a named temp directory with the given prefix."""
    directory = tempfile.mkdtemp(dir=self.tmp)
    self.note(directory)
    return directory

  def clean(self):
    if self.save_debug_files:
      print('not cleaning up temp files since in debug-save mode, see them in %s' % (self.tmp,), file=sys.stderr)
      return
    for filename in self.to_clean:
      try_delete(filename)
    self.to_clean = []

  def run_and_clean(self, func):
    try:
      return func()
    finally:
      self.clean()


No flooring material can compare to the instant warmth and luxury hardwood flooring adds to a home. Want to coordinate the flooring with your cabinet? Not a problem! Wood is available in a variety of colors thanks to stains on the market today. Don't want to use a stain but want a darker wood? Opt for a darker-hued wood such as maple or walnut. Hardwood floors are a great addition to complete any design.
Dugan's Paint & Flooring Centers offers hardwood flooring from leading manufactures including Real Wood, Paramount, Bella Cera and many other manufactures. Do you have pets with long claws? If so, hardwood may not be the best fit for your lifestyle due to being more susceptible to scratching compared to tile. Do you have family members with allergies? Hardwood may be the best option as it doesn't trap allergens the way carpet does. At the end of the day, the flooring in your home needs to fit your lifestyle. The designers at Dugan's can help you find the best fit.
At Dugan's we will help you from start to finish with your hardwood project. From picking out the right wood for your project, through the installation process, the consultant's at Dugan's can help you as much as you like through the process.
Find the perfect hardwood flooring for your home at Dugan's Paint & Flooring Centers. With showrooms located in Sedalia, Warrensburg, Osage Beach and Laurie, Dugan's has served the central Missouri area for over 140 years. Visit with a consultant to discuss the best flooring to fit your lifestyle.


Magento is an Open Source ecommerce web application launched on March 31, 2008. It was created by Varien, building on components of the Zend Framework. Magento is available under the Open Software License version 3.0. Since version 1.1.7 some parts are licensed under the Academic Free License version 3.0. Magento is a feature-rich eCommerce platform that provides online merchants with unprecedented flexibility and control over the look, content and functionality of their eCommerce store. Magento's helps in excellent marketing, search engine optimization and catalog-management creating sites that are tailored to the client's unique business needs. With the invention of Magento, building an ecommerce website takes very less effort along with time and price, it keeps control of development cost and provides lot of flexible features.
Magento is the open-source eCommerce platform that promises to revolutionize the industry. It's modular architecture and unprecedented flexibility means your business is no longer constrained by your eCommerce platform. Magento is total control.
> Through a highly evolved template system of Magento, it is possible to brand a website for the various occasions, events etc.
> Layered Navigation: Usually with large inventories where each category has got hundreds of products, it really is cumbersome to have all the products in the scope of view, and Magento use several filtering tools to provide faster navigation to products.
> Product comparisons and product tagging features.
> Customer convenience- Magento includes multiple ship-to functionality right out of the box, helping avoid the frustration that can occur when a customer is shopping for multiple people at one time. Superior product search module when compared to competition.
> Search engine optimization: features like google site map, URL rewrites give full control of URL's act.
> Analytics, reporting and dash board for quick view.
> Extensive CMS: To manage contents.
Magento offers complete flexibility and control over the look, content and functionality of an ecommerce store while development. It provides the functionality for reviews, tags, wish list, compare products and many more. It is integrated with AJAX rich environment technology for facilitating features like one click checkout. It is integrated with real time shipping rate from SPS, SPS XML, FedEx, USPS, and DHL. Customer can ship the order to multiple addresses and on site tracking system from customer account. Shipping rate can be easily set per order and per item. It provides the exclusive functionality rating with weight and destination.
> View, edit, create and fulfill orders from admin panel.
> Create re-orders for customers from administration panel.
> Account dashboard for overview of various information.
It offers complete flexibility and control over the look, content and functionality of an ecommerce store while development. It provides the functionality for reviews, tags, wish list, compare products and many more. It is integrated with AJAX rich environment technology for facilitating features like one click checkout. It is integrated with real time shipping rate from SPS, SPS XML, FedEx, USPS, and DHL. Customer can ship the order to multiple addresses and on site tracking system from customer account. Shipping rate can be easily set per order and per item. It provides the exclusive functionality rating with weight and destination.
From customer point of view: it is 100% search engine friendly and provides full control of URL's rewrite methodology. Magento is compatible with multi language support as well as supports multiple currencies. Administration module is having great functionality for rights or access and any rights can be defined at any user. It allows defining multiple administrators with specific access privileges. Landing page of admin panel is in form of a dashboard providing all vital information of orders, products, and graphical representation on daily, monthly and yearly basis. Admin can create multiple store and easily manage them from admin panel. It provides the strong interface and functionality for reporting.


text:
class VirtualCallBase {
public:
	virtual ~VirtualCallBase( void ) {}
	virtual int call( VirtualCallBase *& ) = 0;
};

class IncrementCall : public VirtualCallBase {
public:
	virtual ~IncrementCall( void ) {}
	virtual int call( VirtualCallBase *& ) { return ++value; }
protected:
	int value = 0;
};

class DecrementCall : public VirtualCallBase {
public:
	virtual ~DecrementCall( void ) {}
	virtual int call( VirtualCallBase *& ) { return --value; }
protected:
	int value = 0;
};

/// Randomly return an implementation to avoid devirtualization.
///
std::unique_ptr<VirtualCallBase> makeVirtualCall( void )
{
	return std::unique_ptr<VirtualCallBase>((rand() & 1) ? static_cast<VirtualCallBase*>( new IncrementCall{} ) : static_cast<VirtualCallBase*>( new DecrementCall{} ));
}

IncrementCall incrementCall;

/// Helpers for tagged pointers
///
template < typename Type, typename Tag, uintptr_t Mask = alignof( Type ) - 1, typename = typename std::enable_if< std::is_integral<Tag>::value >::type >
constexpr Type * setTag( Type * type, Tag tag )
{
	return reinterpret_cast<Type*>( (reinterpret_cast<uintptr_t>( type ) & ~Mask) | static_cast<uintptr_t>( tag ) );
}

template < typename Type, uintptr_t Mask = alignof( Type ) - 1 >
constexpr uintptr_t getTag( Type * type )
{
	return reinterpret_cast<uintptr_t>( type ) & Mask;
}

template < typename Type, uintptr_t Mask = alignof( Type ) - 1 >
constexpr Type * clearTag( Type * type )
{
	return reinterpret_cast<Type*>( reinterpret_cast<uintptr_t>( type ) & ~Mask );
}

int taggedPointerCall( VirtualCallBase * next )
{
	static VirtualCallBase * taggedPtr = &incrementCall; //setTag( &incrementCall, 0 );
	const auto ptr = clearTag( taggedPtr );
	const auto tag = getTag( taggedPtr );
	taggedPtr = next;

	int ret;

	switch( tag )
	{
	case ( 0 ):
		ret = 0;
		break;
	case ( 1 ):
		ret = ptr->call( taggedPtr );
		break;
	}
	return ret;
}

/// Test tagged union performance
///
struct CallSite;

class VirtualInitBase {
public:
	virtual ~VirtualInitBase() {}
	virtual void init( CallSite & ) = 0;
};

struct CallSite {
	union {
		VirtualInitBase * init;
		VirtualCallBase * call;
	};
	void * data;
	bool enabled;
};

class StaticInit : public VirtualInitBase {
public:
	virtual ~StaticInit() {}
	virtual void init( CallSite & site ) { site.call = setTag( value.get(), tag ); site.data = this; site.enabled = tag - 1; }

	uintptr_t tag = 1;
	std::unique_ptr<VirtualCallBase> value;
};

StaticInit staticInit;

int taggedUnionCall( void )
{
	static CallSite callSite = { &staticInit, nullptr, false };
	const auto tag = getTag( callSite.call );

	int ret;

	switch( tag )
	{
	case ( 0 ):
		clearTag( callSite.init )->init( callSite );
		ret = 0;
		break;
	case ( 1 ):
		ret = -1;
		break;
	case ( 2 ):
		ret = clearTag( callSite.call )->call( callSite.call );
		break;
	}
	return ret;
}

/// Test condition+tagged union
///

int conditionalTaggedUnionCall( void )
{
	static CallSite callSite = { &staticInit, nullptr, true };
	if( callSite.enabled )
	{
		const auto tag = getTag( callSite.call );

		int ret;

		switch( tag )
		{
		case ( 0 ):
			clearTag( callSite.init )->init( callSite );
			ret = 0;
			break;
		case ( 1 ):
			ret = -1;
			break;
		case ( 2 ):
			ret = clearTag( callSite.call )->call( callSite.call );
			break;
		}
		return ret;
	}
	else
	{
		return 0;
	}
}

template < size_t Iterations = 100000000, typename Callable >
double usecPerCall( Callable && callable )
{
	struct timeval begin, end;
	gettimeofday( &begin, nullptr );

	for( size_t index = 0; index < Iterations; ++index )
	{
		callable();
	}

	gettimeofday( &end, nullptr );

	const auto elapsed = ( end.tv_sec - begin.tv_sec ) * 1000000 + end.tv_usec - begin.tv_usec;

	return double(elapsed)/double(Iterations);
}

template < typename Label, typename Generator >
void benchmark( Label && label, Generator && generator )
{
	std::cout << usecPerCall( generator() ) << " usec/call <== " << label << std::endl;
}

/// Dynamic rewrite callsite
///
class DynamicRewrite : public VirtualCallBase {
public:
	static const std::array<uint8_t,45> nopCode;

	static const std::array<uint8_t,10> nopOffset;

	static bool writeNop( uint8_t * const where, const size_t size )
	{
		if( size > nopOffset.size() )
		{
			return false;
		}
		else
		{
			// disable write protection
			const size_t pageMask =~((1<<12)-1);
			const size_t pageSize = 1<<12;
			assert( 0 == mprotect( reinterpret_cast<void*>( reinterpret_cast<size_t>(where) & pageMask ), pageSize, PROT_READ | PROT_WRITE | PROT_EXEC ) );
			// TODO: Atomically copy data...
			memcpy( where, &nopCode[ nopOffset[ size ] ], size );
		}
	}

	virtual ~DynamicRewrite() {}
	virtual int call( VirtualCallBase *& target )
	{
		target = value.get();

		// get callsite info
		//
		auto mangled =  __builtin_return_address( 0 );
		auto caller = __builtin_extract_return_addr( mangled );

		auto bytes = reinterpret_cast<uint8_t*>( caller );
		const int offset = 8;

		// dump it to think about rewriting
		std::cout << "Call site info from " << (void*)(bytes - offset) << " to " << (void*)(bytes + offset) << "(" << caller << "):\n\t";
		std::cout << std::hex;
		for( int index = -offset; index <= offset; ++index )
		{
			std::cout << int( bytes[ index ] ) << " ";
		}
		std::cout << std::dec << std::endl;

		//scan backwards until we find 'ff'
		int begin;
		for( begin = -1; begin > -offset; --begin )
		{
			if( bytes[ begin ] == 0xff )
			{
				break;
			}
		}

		if( begin == -offset )
		{
			std::cout << "Failed to find callq!" << std::endl;
			return 0;
		}

		if( ! enabled )
		{
			std::cout << "Changing range [" << (void*)(bytes + begin) << "," << caller << ") to nop: ";
			std::cout << std::hex;
			for( int index = begin; index < 0; ++index )
			{
				std::cout << int( bytes[ index ] ) << " ";
			}
			std::cout << std::dec << std::endl;

			writeNop( bytes + begin, -begin );

			std::cout << "Call site info after " << (void*)(bytes - offset) << " to " << (void*)(bytes + offset) << "(" << caller << "):\n\t";
			std::cout << std::hex;
			for( int index = -offset; index <= offset; ++index )
			{
				std::cout << int( bytes[ index ] ) << " ";
			}
			std::cout << std::dec << std::endl;
		}
		return 1;
	}

	bool enabled;
	std::unique_ptr<VirtualCallBase> value;
};

// http://www.felixcloutier.com/x86/NOP.html
const std::array<uint8_t,45> DynamicRewrite::nopCode =
{
	0x90, // 1 byte
	0x66, 0x90, // 2 bytes
	0x0F, 0x1F, 0x00, // 3 bytes
	0x0F, 0x1F, 0x40, 0x00, // 4 bytes
	0x0F, 0x1F, 0x44, 0x00, 0x00, // 5 bytes
	0x66, 0x0F, 0x1F, 0x44, 0x00, 0x00, // 6 bytes
	0x0F, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, // 7 bytes
	0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, // 8 bytes
	0x66, 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, // 9 bytes
};

const std::array<uint8_t,10> DynamicRewrite::nopOffset = { 0, 0, 1, 3, 6, 10, 15, 21, 28, 36 };

DynamicRewrite dynamicRewrite;

int dynmaicRewriteCall( void )
{
	static VirtualCallBase * callable = &dynamicRewrite;
	static std::atomic<VirtualCallBase*> atom = { nullptr };
	atom.store( callable, std::memory_order_relaxed );
	return callable->call( callable );
}

namespace Intended {

	struct CallSite;

	struct Message {};

	std::unique_ptr<Message> getMessage() { return std::unique_ptr<Message>{ nullptr }; }

	class Action {
	public:
		virtual ~Action() {}
		virtual void apply( CallSite & site, std::unique_ptr<Message> && ) = 0;

	};

	struct CallSite {
		std::atomic<Action*> action;
		const char * location;
		const char * context;
		void * data;	// TODO--other config info...
		std::bitset<8> mask;

		void call( std::unique_ptr<Message> && message )
		{
			auto callable = action.load( std::memory_order_relaxed );
			if( callable )
			{
				callable->apply( *this, std::move( message ) );
			}
		}

		template < typename MessageBuilder >
		void call( MessageBuilder && builder )
		{
			auto callable = action.load( std::memory_order_relaxed );
			if( callable )
			{
				auto message = getMessage();
				builder( message );
				callable->apply( *this, std::move( message ) );
			}
		}
	};

	class InitAction : public Action {
	public:
		virtual ~InitAction() {}
		virtual void apply( CallSite & site, std::unique_ptr<Message> && message )
		{
			site.action.store( next.get(), std::memory_order_relaxed );
			site.mask.set( 0, message == nullptr );
			site.call( std::move( message ) );
		}

		std::unique_ptr<Action> next = nullptr;
	};

	template <typename Thing>
	class WrapperAction : public Action, private Thing {
	public:
		template < typename U >
		WrapperAction( U && u )
		: Thing( std::forward<U>( u ) )
		{}

		virtual ~WrapperAction() {}
		virtual void apply( CallSite & site, std::unique_ptr<Message> && )
		{
			if( site.mask.test( 1 ) )
			{
				Thing::operator() ( site );
			}
		}
	};

	template <typename Thing>
	auto makeAction( Thing && thing ) -> std::unique_ptr< Action >
	{
		return std::unique_ptr< Action >{ new WrapperAction<Thing>{ std::forward<Thing>( thing ) } };
	}

	auto getAction( bool choice ) -> std::unique_ptr< Action >
	{
		uintptr_t value = 0;
		return choice ?
			makeAction( [ value ] ( CallSite & site ) mutable { value += reinterpret_cast<uintptr_t>( &site ); } ) :
			makeAction( [ value ] ( CallSite & site ) mutable { value -= reinterpret_cast<uintptr_t>( &site ); } );
	}

	InitAction init;

	void testIntended( void )
	{
		static CallSite site = { { &init }, LOCATION, CONTEXT, &site, 0 };
		site.call([]( std::unique_ptr<Message> & ){} );
	}

}

int main( int argc, const char** argv )
{
	benchmark( "Unconditional virtual call", []{
		return [ callable = makeVirtualCall() ]{ auto value = callable.get(); callable->call( value ); };
	});

	benchmark( "Conditional virtual call", [&]{
		auto condition = argc % 2;
		return [condition, callable = makeVirtualCall() ]() mutable { auto value = callable.get(); return condition ? callable->call(value) : 0; };
	});

	benchmark( "Null-check virtual call", [&]{
		return [callable = (argc%2) ? makeVirtualCall() : std::unique_ptr<VirtualCallBase>( nullptr ) ]() mutable { auto value = callable.get(); return value ? value->call(value) : 0; };
	});

	benchmark( "Atomic conditional virtual call",[&]{
		return [condition = std::unique_ptr<std::atomic<bool>>( new std::atomic<bool>( argc % 2 ) ), callable = makeVirtualCall() ]()mutable { auto value = callable.get(); return condition->load( std::memory_order_relaxed ) ? callable->call( value ) : 0; };
	});

	benchmark( "Switch/tagged pointer conditional virtual call", [&]{
		const auto tag = argc % 2;
		return [tag, callable = makeVirtualCall() ]{ return taggedPointerCall( setTag( callable.get(), tag ) ); };
	});

	benchmark( "Switch/tagged union conditional virtual call", [&]{
		staticInit.tag = (argc % 2) + 1;
		staticInit.value = makeVirtualCall();
		return []{ return taggedUnionCall(); };
	});

	benchmark( "Conditional switch/tagged union virtual call", [&]{
		staticInit.tag = (argc % 2) + 1;
		staticInit.value = makeVirtualCall();
		return []{ return conditionalTaggedUnionCall(); };
	});

	benchmark( "Dynamic Rewrite virtual call", [&]{
		dynamicRewrite.enabled = (argc % 2);
		dynamicRewrite.value = makeVirtualCall();
		return []{ return dynmaicRewriteCall(); };
	});

	benchmark( "Intended implementation", [&] {
		bool enabled = argc %2;
		Intended::init.next = enabled ? Intended::getAction( rand() % 2 ) : nullptr;
		return []{ return Intended::testIntended(); };
	});

	return 0;
}


A close-up of the inscription on the stone at South Mountain.
Eduardo Pagán stands in front of the Marcos de Niza stone carving protected behind iron bars.
In 1539, a Spanish advance party was set to explore the Southwest. The leader of that expedition is believed to have walked through Arizona, and there are markings that many believed were made during that trip, but there are experts who say the inscription is not authentic.
The stone inscription at South Mountain reads, "Friar Marcos de Niza corona todo el Nuebo Mexico a su costa ano de 1539." It translates to, "Friar Marcos de Niza crowned all of New Mexico at his expense in the year 1539."
It is believed the Spanish priest inscribed them himself to mark his expedition through the Valley. Did You Know those markings are not authentic?
"You know there was some controversy over its authenticity, and I wanted to be able to establish its veracity," said Eduardo Pagán, a historian and an ASU professor.
He is also one of three experts who were part of a PBS Show "History Detectives" that researched the stone in 2009.
"When we started out this investigation for History Detectives, I wanted to find out that it was true. For all sorts of reasons right, not only because I'm just a native Arizonan and wanted this thing to be accurate, but it would help us then pinpoint Marcos de Niza's journey," said Pagán.
Pagán and his fellow historians said there is no way the markings on South Mountain could have been made in 1539. They said the words "New Mexico" were established after the mid-1500s. Also the carving on the stone is written in Western World Style, from left to right.
"The more that I studied all the inscriptions, all of the way to the 1700s still kept this cubic style without any spaces between letters or worlds, and I went back and I looked at the Marcos de Niza inscription. and it looked so linear to me, it looked so modern," said Pagán.
Lastly and the most convincing evidence is the rock itself. Petroglyph experts tested the stone minerals within the carvings and found it predates the Automobile Era and post dates the Little Ice Age, which ended in the mid 19th century. Ultimately the inscription is a forgery. They determined the carvings were most likely made sometime after the turn of the 20th century.
"So shouldn't that be preserved as well, even though it might be a fraud it's a historic fraud, it's a historic inscription. So, it becomes a very interesting story now," said Pagán.
Pagán said the writing may have been carved by someone who admired Marcos de Niza and decided to pay homage to the friar. He said proving the inscription a forgery could also be proof that he never really traveled through the Sonoran Desert.
The Marcos de Niza stone inscription has been protected behind iron bars since it was discovered in the 1920s, a way to keep vandals from destroying it. Interestingly that in that same area, are authentic Hohokam petroglyphs. Pagán said they are easily thousands of years old, yet those petroglyphs are not protected, and there are signs they have been vandalized.


text:
Un plasmoïde est une structure autoconfinée constituée d'un plasma et d'un champ magnétique qui en assure la cohésion. Les plasmoïdes ont été proposés pour expliquer divers phénomènes naturels comme la foudre en boule, les bulles magnétiques dans la magnétosphère ainsi que certains objets présents dans les queues de comètes, dans le vent solaire, dans l'atmosphère du Soleil et dans la couche de courant héliosphérique. Des plasmoïdes sont produits en laboratoire par divers dispositifs, comme les configurations à champ inverse (Field-Reversed Configurations), les sphéromaks et les focalisateurs de plasma dense.

Origine du mot

Le mot plasmoïde (plasmoid en anglais) a été créé en 1956 par Winston Bostick (1916-1991) pour désigner une « entité plasma-magnétique » :

Caractéristiques des plasmoïdes

Bostick présente ainsi les plasmoïdes :

Applications en astrophysique

Bostick prolonge sa démarche en appliquant sa théorie des plasmoïdes aux phénomènes astrophysiques. Dans une publication de 1958, il applique les lois d'échelle en physique des plasmas à des paires de plasmoïdes projetés par un canon à plasma (un dispositif « dense plasma focus »), qui interagissent de façon à simuler un modèle de galaxie en formation.

Notes

Sources

Références

Bibliographie

  Bostick, W. H., "Experimental Study of Plasmoids", Electromagnetic Phenomena in Cosmical Physics, Proceedings from IAU Symposium no. 6. Edited by Bo Lehnert. International Astronomical Union. Symposium no. 6, Cambridge University Press, p. 87

Compléments

Liens externes
  ADS Abstract references

Astrophysique
Plasma


Lets Put An End To Women Abuse!
Hit the escape button above to immediately leave this site if your abuser may see you reading it.
A women brought you into this world, therefore we need to help and make sure that they are okay and living a violence-free life!
Look around at the women you are with. Think of those you cherish in your families and your communities. Understand that there is a statistical likelihood that many of them have suffered violence in their lifetime. Even more have comforted a sister or friend, sharing their grief and anger following an attack.
Violence and abuse affect women from all kinds of backgrounds every day. Sometimes, women are attacked by strangers, but most often they are hurt by people who are close to them. Violence and abuse can cause terrible physical and emotional pain. But you are not alone, and you can get help.
Why are we just sitting when we know that there are women out there who are getting abused. We have to help and make a change! We need women in our lives and we need to help them find the courage and strength to say something. Take a stand and say NO to violence against women!