As a difference from the regular archives, BARs are created to follow this list of properties:
BARs can be stored in files but also in cloud encrypted with a secret key that we call SEED.
A SEED is an encryption key but it is used to cryptographically derivate an identifier for the BAR archive. This identifier is called LSEED (Location Seed) and can be used to locate a BAR file.
The name of the file and the LSEED are called "Aliases".
BARs are stored in cloud as compressed Bricks. A large file is divided into Bricks. A Brick is just an encrypted buffer identifiable by its hash (after compression and encryption).
Each Brick is encrypted with a different gey (randomly generated)
A specific version of a BAR is identifiable by cryptographic hash of it's content by computing the hash of the hashes of all its Bricks.
For storing those Bricks, we have created the EDFS storage service but we plan to have similar storages that are using various cloud storages (Dropbox , Google Drive, Amazon S3,IPFS, etc)
Therefore a BAR is:
An archive storable in cloud as Bricks
Anchorable in blockchains by it's HASH
Referencable in blockchain by an Alias
Retrievable from cloud by a SEED
The addFolder() method adds all the files in a specified folder in a brick archive.
addFolder(fsPath, barPath [, options], callback)
fsPath
The filesystem path where the folder is located.
barPath
The name associated with the folder entry inside the archive.
options| Optional
An object that allows to set whether the folder is encrypted or not through encrypt property. If encrypt is set to false
then the added folder is not encrypted.
If encrypt is set to true then the added folder is encrypted. If the options argument is missing then, by default,
the folder is encrypted.
callback
The function called when all files in the specified folder have been added to the archive.
It receives an error and the archive's hash.
The addFolder() method reads all files inside a directory located at a specified path, breaks them into bricks and adds
an entry inside the archive's bar map where bricks' hashes are kept. The hashes are used to locate the bricks inside EDFS.
In the following example the folder "/home/foo/bar" is added to archive under the entry "bar". The callback receives the archive's hash.
const EDFS = require("edfs");
const endpoint = "http://<IP_ADDRESS>:8080";
const edfs = EDFS.attachToEndpoint(endpoint);
const archive = edfs.createBar();
archive.addFolder("/home/foo/bar", "bar", (err, archiveDigest) => {
if (err) {
throw err;
}
console.log("This is the archive's hash", archiveDigest);
});
The extractFolder() extracts a folder from a brick archive to a specified location.
extractFolder(fsPath, barPath, callback)
fsPath
The filesystem path where the extracted folder is located.
barPath
The path inside the archive where the folder's brick references are stored.
callback
The function when the extraction process is completed.
The extractFolder() method reads all the brick whose references are kept inside the archive at path barPath and combines
them in order to obtain all the files inside the folder at the specified path.
In the following example the folder stored inside the archive under the name "bar" is extracted at path "/home/foo/bar".
const EDFS = require("edfs");
const endpoint = "http://<IP_ADDRESS>:8080";
const edfs = EDFS.attachToEndpoint(endpoint);
const archive = edfs.createBar();
archive.addFolder("/home/foo/bar", "bar", (err, archiveDigest) => {
if (err) {
throw err;
}
console.log("This is the archive's hash", archiveDigest);
archive.extractFolder("/home/foo/bar", "bar", (err) => {
if (err) {
throw err;
}
console.log("Successfully extracted");
});
});
The addFile() method adds the file at a specified path in a brick archive.
addFile(fsPath, barPath [, options], callback)
fsPath
The filesystem path where the file is located.
barPath
The name associated with the file entry inside the archive.
options| Optional
An object that allows to set whether the file is encrypted or not through encrypt property. If encrypt is set to false
then the added file is not encrypted.
If encrypt is set to true then the added file is encrypted. If the options argument is missing then, by default,
the file is encrypted.
callback
The function called when the file has been added to the archive.
It receives an error and the archive's hash.
The addFile() method reads the file at the specified path, breaks it into bricks and adds
an entry inside the archive's bar map where bricks' hashes are kept. The hashes are used to locate the bricks inside EDFS.
In the following example the file "/home/foo/bar.js" is added to archive under the entry "bar". The callback receives the archive's hash.
const EDFS = require("edfs");
const endpoint = "http://<IP_ADDRESS>:8080";
const edfs = EDFS.attachToEndpoint(endpoint);
const archive = edfs.createBar();
archive.addFile("/home/foo/bar.js", "bar", (err, archiveDigest) => {
if (err) {
throw err;
}
console.log("This is the archive's hash", archiveDigest);
});
The extractFile() extracts a file from a brick archive to a specified location.
extractFile(fsPath, barPath, callback)
fsPath
The filesystem path where the extracted file is located.
barPath
The path inside the archive where the file's brick references are stored.
callback
The function when the extraction process is completed.
The extractFile() method reads all the brick whose references are kept inside the archive at the path barPath and combines
them in order to obtain the file stored at fsPath.
In the following example the file stored inside the archive under the name "bar" is extracted at path "/home/foo/bar.js".
const EDFS = require("edfs");
const endpoint = "http://<IP_ADDRESS>:8080";
const edfs = EDFS.attachToEndpoint(endpoint);
const archive = edfs.createBar();
archive.addfile("/home/foo/bar.js", "bar", (err, archiveDigest) => {
if (err) {
throw err;
}
console.log("This is the archive's hash", archiveDigest);
archive.extractFolder("/home/foo/bar.js", "bar", (err) => {
if (err) {
throw err;
}
console.log("Successfully extracted");
});
});
The writeFile() method writes the given data in a brick archive.
writeFile(barPath, data [, options], callback)
barPath
The archive entry were the data is written.
data
The data added to the archive.
options| Optional
An object that allows to set whether the data is encrypted or not through encrypt property. If encrypt is set to false
then the added data is not encrypted.
If encrypt is set to true then the added data is encrypted. If the options argument is missing then, by default,
the data is encrypted.
callback
The function called when the data is added to the archive.
The writeFile() breaks the given data into bricks whose references are kept at the specified path inside the archive.
In the following example the data "content" is added to archive under the entry "bar". The callback receives the archive's hash.
const EDFS = require("edfs");
const endpoint = "http://<IP_ADDRESS>:8080";
const edfs = EDFS.attachToEndpoint(endpoint);
const archive = edfs.createBar();
archive.writeFile("bar", "content", (err, archiveDigest) => {
if (err) {
throw err;
}
console.log("This is the archive's hash", archiveDigest);
});
The readFile() reads the data written in a brick archive at a specific path.
readFile(barPath, callback)
barPath
The archive entry from were the data is read.
callback
The function called when the data is added to the archive. It receives an error and the read data.
The readFile() reads the bricks at a specified entry inside the archive and returns the data that was split in order to form the bricks.
In the following example the data stored at path "bar" inside the archive is read and returned through the callback.
const EDFS = require("edfs");
const endpoint = "http://<IP_ADDRESS>:8080";
const edfs = EDFS.attachToEndpoint(endpoint);
const archive = edfs.createBar();
archive.writeFile("bar", "content", (err, archiveDigest) => {
if (err) {
throw err;
}
console.log("This is the archive's hash", archiveDigest);
archive.readFile("bar", (err, readData) => {
if (err) {
throw err;
}
console.log("This is the data", readData);
});
});
The createReadStream() method creates a readable stream from the data written in a brick archive at a specific path.
createReadStream(barPath, callback)
barPath
The archive entry from were the data is read.
callback
The function called after the stream has been initialized or if an error occurs. It receives an error and the readable stream.
The createReadStream() reads the bricks at a specified entry inside the archive and pushes the data into a readable stream.
In the following example the data stored at path "bar" inside the archive is read and returned through the callback.
const EDFS = require("edfs");
const endpoint = "http://<IP_ADDRESS>:8080";
const edfs = EDFS.attachToEndpoint(endpoint);
const archive = edfs.createBar();
archive.writeFile("bar", "content", (err, archiveDigest) => {
if (err) {
throw err;
}
console.log("This is the archive's hash", archiveDigest);
archive.createReadStream("bar", (err, stream) => {
if (err) {
throw err;
}
stream.on('data', (chunk) => {
console.log("Received part of the data: ", chunk);
});
stream.on('error', (err) => {
console.error(err);
})
stream.on('end', () => {
console.log("Stream has no more data");
});
});
});
The listFiles() returns the names of all the files stored inside a brick archive at a specific path.
listFiles(barPath, callback)
barPath
The archive path from where the file names are read.
callback
The function called when the file names have been read. It receives an error and the list of files.
The listFiles() traverses the specified path inside the archive and returns the names of all the files
stored at the specified path.
In the following example the filenames stored inside the archive at path "bar" are returned through the provided callback.
const EDFS = require("edfs");
const endpoint = "http://<IP_ADDRESS>:8080";
const edfs = EDFS.attachToEndpoint(endpoint);
const archive = edfs.createBar();
archive.addFolder("/home/foo/bar", "bar", (err, archiveDigest) => {
if (err) {
throw err;
}
console.log("This is the archive's hash", archiveDigest);
archive.listFiles( "bar", (err, fileNames) => {
if (err) {
throw err;
}
console.log("These are the files", fileNames);
});
});
The listFiles() returns the names of all the folders stored inside a brick archive at a specific path.
listFolders(barPath, callback)
barPath
The archive path from where the folder names are read.
callback
The function called when the folder names have been read. It receives an error and the list of folders.
The listFiles() traverses the specified path inside the archive and returns the names of all the files
stored at the specified path.
In the following example the folders stored inside the archive at path "/" are returned through the provided callback.
const EDFS = require("edfs");
const endpoint = "http://<IP_ADDRESS>:8080";
const edfs = EDFS.attachToEndpoint(endpoint);
const archive = edfs.createBar();
archive.addFolder("/home/foo/bar", "/bar", (err, archiveDigest) => {
if (err) {
throw err;
}
archive.addFolder("/home/foo", "/foo", (err, archiveDigest) => {
if (err) {
throw err;
}
console.log("This is the archive's hash", archiveDigest);
archive.listFiles( "/", (err, folders) => {
if (err) {
throw err;
}
console.log("These are the folders", folders);
});
});
});


United fans slam Ed Woodward after pic of him 'arguing' with Alex Ferguson
by James CoxManchester United executive vice-chairman Ed Woodward isn't exactly the most popular figure with the club's supporters.
Since Alex Ferguson and former CEO David Gill retired in 2013, the club has suffered an alarming slide.
Woodward has become a figure of blame in United's demise as he's presided over a number of failed managerial appointments and botched transfers.
While he's more than capable in terms of the business side of things, noodle partners don't quite match up to the feeling of winning trophies.
In contrast, Ferguson is a club legend whose reputation is pretty much untouchable.
With this in mind, a photo of the pair in heated discussion in the stands during United's 3-3 draw with Sheffield yesterday has not gone down well.
The picture in question appears to show Woodward shouting at Ferguson and it has not gone down well with fans.
In fairness, the picture may have only captured a moment as Woodward and Ferguson were also pictured looking friendly.
Another photo shows the Scot with his head in his hand afterwards.
Either way, the reaction represents the frustration of the club's supporters at the moment.
The draw at Bramall Lane leaves United in ninth place and 20 points off leaders Liverpool after only 13 games.
United have insisted Ole Gunnar Solskjaer's job is safe but pressure is likely to mount on the Norwegian if results don't improve quickly, especially with Mauricio Pochettino available.
The Argentine was reportedly Ferguson's recommendation to replace Jose Mourinho at Old Trafford.


GitHub App Manifests allow people to create preconfigured GitHub Apps. See "Creating GitHub Apps from a manifest" for more details.
Custom media type: fury-preview
fury-preview


Udder Delights in Hahndorf recalling cheese after E.coli found
Nearly a dozen cheeses made by popular Hahndorf cheesemaker Udder Delights are being recalled over fears of E.coli.
Some of its most popular cheeses, including its 200g camembert and brie are being recalled. The SA company said there was no evidence the form of E.coli found was dangerous but it was recalling them as a precaution.
The cheeses are available from Coles and independent retailers in SA, Queensland, Victoria and WA. In NSW they also sell at Woolies and in Tasmania they are sold at independent retailers.
Udder Delights chef executive Sheree Sullivan said the team was “devastated” after small levels of the bacteria were found in some of the company’s white mould 200g cheeses.
“It is with a very heavy heart that Udder Delights is doing its first voluntary recall since we began 20 years ago,” Ms Sullivan said.
“The whole team is devastated, because we all just work so hard to create a really high quality product.
“You always learn some of your best lessons through disasters, and I never really understood what a voluntary recall was. It means you have a choice - do you want to recall or not? We decided as a business we wanted to be 100 per cent sure it was safe.
“It was great SA Health and Dairysafe confirmed it wasn’t a dangerous bacteria, which can sometimes be a little bit of sunshine in a dark cloud.”
Ms Sullivan would not speculate on what caused the contamination, but said they were working with SA Health and their quality assurance team to quickly resolve the issue.
“We’re waiting for all their findings because they’re the experts. I know it’s a common bacteria... a tiny bit is normal,” she said.
“What we’re doing is analysing any new procedure we’ve introduced to see, is that where the gap is?”
The health department’s protection and licensing services executive director Dr Chris Lease said the recall was precautionary and affected products were being removed from sale.
“During routine testing, three products were found to exceed the allowable limits of E.coli and therefore the decision has been made to recall all products produced during the same production period,” Dr Lease said.
“We have no evidence that the form of E.coli present is dangerous, however the businesses decided to initiate a recall.”
The full recall includes the following products with Best Before dates of 29JAN20 up to and including 05FEB20:
• Udder Delights camembert 200g
• Cremeux Provincial Cheese double brie 200g
• Udder Delights brie 200g
• Divine Dairy Organic brie 200g
• Udder Delights Double Cream brie 200g
• Divine Dairy Organic Double cream brie 200g
• Udder Delights Ash brie 200g
• Eureka Camembert 200g
• Cremeux Provincial Cheese brie 200g
• Shale Point Double Cream camembert 200g
• Cremeux Provincial Cheese camembert 200g
SA Health is urging anyone who has purchased listed products to return them to the place of purchase for a full refund or throw them away.


NodeTypes
RelationshipTypes
CapabilityTypes
NodeTypes
tosca.nodes.RootRelationshipTypes
CapabilityTypes
NodeTypes
Node type: tosca.nodes.Root
The TOSCA Root Node Type is the default type that all other TOSCA base Node Types derive from. This allows for all TOSCA nodes to have a consistent set of features for modeling and management (e.g., consistent definitions for requirements, capabilities and lifecycle interfaces).
Attrs
| name | required? | type | default | description | derived from |
|---|---|---|---|---|---|
| state | true | string | initial | This attribute reflects the name of the Node Template as defined in the TOSCA service template. This name is not unique to the realized instance model of corresponding deployed application as each template in the model can result in one or more instances (e.g., scaled) when orchestrated to a provider environment. | |
| tosca_id | true | string | A unique identifier of the realized instance of a Node Template that derives from any TOSCA normative type. | ||
| tosca_name | true | string | This attribute reflects the name of the Node Template as defined in the TOSCA service template. This name is not unique to the realized instance model of corresponding deployed application as each template in the model can result in one or more instances (e.g., scaled) when orchestrated to a provider environment. |
Interfaces
| name | Operations | Implementation | description | derived from |
|---|---|---|---|---|
| tosca.interfaces.node.lifecycle.Standard | configure | configure_impl | Description for configure operation | |
| tosca.interfaces.node.lifecycle.Standard | create | create_impl | Description for create operation |


Sentsov to address European Parliament on Nov 26
He will also be given the 2018 Sakharov Prize for Freedom of Thought in Strasbourg on November 26.
Ukrainian film director and one of the Kremlin's former political prisoners Oleh Sentsov will address the European Parliament on November 26.
Sentsov will give a speech from 12:00 to 12:30 local time (from 13:00 to 13:30 Kyiv time), according to the parliament's draft agenda.
It was reported on November 21, Sentsov would be given the 2018 Sakharov Prize for Freedom of Thought in Strasbourg on November 26.
As UNIAN reported earlier, 24 Ukrainian POW sailors captured by Russian special forces near the Kerch Strait in November 2018, and 11 political prisoners were returned by Russia to Ukraine as part of a prisoner exchange on September 7. The political prisoners include Roman Sushchenko, Oleh Sentsov, Oleksandr Kolchenko, Volodymyr Balukh, Stanislav Klykh, Mykola Karpyuk, Oleksiy Syzonovych, Pavlo Hryb, Edem Bekirov, Yevhen Panov, and Artur Panov.


Hello, this is the content of the Enceladus-Finch, to test the connection to the chrome GPII connector


Fostering is when children who aren’t able to live with their birth families are placed in a safe and loving family home on a temporary basis.
Find out more about what fostering isThere are many reasons to foster with Leeds City Council, including financial support, allowances, a comprehensive training package, your own support worker and gym membership.
Find out more about fostering with isYou don’t need any special qualifications to be a foster carer.
Find out more about who can be a foster carerOnce you’ve registered your interest you will be guided through the application process. This usually takes about six months.
Find out more about how to become a foster carerChildren and young people of all ages need foster carers and we’ll ask you if you have an age preference as part of your assessment.
Find out more about who you can foster


ScalaLab is based on many powerful and elegant open-source scientific libraries.
Thanks to the developers of those libraries.
These libraries are:
|
Library Name |
Web Page of Library |
|
Apache Common Maths |
|
|
Efficient Java Matrix Library (EJML) |
|
|
JAMA |
|
|
Scientific Graphics Toolbox (SGT) |
|
|
colt |
|
|
JFreeChart |
|
|
jmathplot |
|
|
JSci |
|
|
Matrix ToolKits for Java (MTJ) |
|
|
NUMAL |
http://www.amazon.com/Numerical-Library-Java-Scientists-Engineers/dp/1584884304 |
|
symja (Java computer algebra system) |
|
|
VISAD |
Developers that want to contribute to the ScalaLab effort by writing Scala higher level interfaces to those libraries are welcomed in order to produce both research work and an even better scientific programming environment.
If someone wants to contribute, don't hesitate to contact me.
Sorry, if I forgot some library, please remind me to add it!
Again, thanks to the many contributors of the ScalaLab components and of course to the many creators of the powerful JVM and Scala language infrastructure.
Regards
Stergios Papadimitriou
sterg@teikav.edu.gr


Clive Anderson (born 1952-12-10[ref]) has appeared in 86 episodes between 1988-2017. Clive Anderson on IMDB. Clive Anderson on Wikipedia. Clive Anderson on Chortle.
| 1988 | 1989 | 1990 | 1991 | 1992 | 1993 | 1994 | 1995 | 1996 | 1997 | 1998 | 1999 | 2000 | 2001 | 2002 | 2003 | 2004 | 2005 | 2006 | 2007 | 2008 | 2009 | 2010 | 2011 | 2012 | 2013 | 2014 | 2015 | 2016 | 2017 |


Process-types¶
Independently of a classification of processes as belonging to certain process taxa, processes are also distinguished by how they are represented formally in a model.
In copan:CORE, each process has a “mathematical” process type, such as “ordinary differential equation”, “implicit equation”, “event”, …
Note that because of this requirement to have exactly one of these types, some complex real-world processes (e.g., “off-equilibrium economic production”) whose description in a model involves more than one of these types needs to be split up into smaller processes (e.g., an “reallocation of factors” process of type “ODE” and a “usage of factors” process of type “explicit equation”).
The process types may be classified into two groups, those which influence a variable continuously over time (such as “ODE”, “explicit” and “implicit equation”) and those which do so only at discrete time points (“event” and “step”).
While each variable may be influenced by several processes, there are certain restrictions as to which process type combinations may influence the same variable. The main restriction is that a variable that is governed by a process of type “explicit equation” cannot by influenced by any other process, but may occur in processes of type “implicit equation”. In contrast, it is possible that a variable whose continuous evolution is governed by an “ODE” may also occur in an “implicit equation” and may also be changed at discrete time points by an “event” or “step”)
Currently, we provide the following process types:
Stochastic differential equations are not currently supported but may be approximated by processes of type “step” with a small time step.


Lisa's Coding Playground!
Home
Notes
Links
Links to Tuturials to Try
Home
Home
Flexbox
Flex 1 trial
Flex 2 trial
Home
Home
Grid
Flex 3 Grid trial
Overlapping grid layout
CSS-Tricks Grid
Comment form from Advanced CSS class
Newspaper layout from Advanced CSS class
Tulip page
Home
Home
Snippets
Flex & Grid Snippets
CSS Heirarchy
Overlapping grid layout
CSS-Tricks Grid
Random Snippets
Home
Home
Sections
Headers & Heros
Design Patterns
Home
Animations
Hover animations including hero
Sliding Flag
Transforms & Scaling
Home
Home
?
Home
Flex 1 trial
Flex 2 trial
Flex 3 Grid trial
CSS Heirarchy
Overlapping grid layout
CSS-Tricks Grid
Comment form from Advanced CSS class
Newspaper layout from Advanced CSS class
Tulip page
Home
Home
?
Home
Flex 1 trial
Flex 2 trial
Flex 3 Grid trial
CSS Heirarchy
Overlapping grid layout
CSS-Tricks Grid
Comment form from Advanced CSS class
Newspaper layout from Advanced CSS class
Tulip page
Home
Home
?
Home
Flex 1 trial
Flex 2 trial
Flex 3 Grid trial
CSS Heirarchy
Overlapping grid layout
CSS-Tricks Grid
Comment form from Advanced CSS class
Newspaper layout from Advanced CSS class
Tulip page
Home
Home


#include <executor.hpp>
| virtual mesos::Executor::~Executor |
( |
| ) |
|
|
inlinevirtual |
| virtual void mesos::Executor::error |
( |
ExecutorDriver * |
driver, |
|
|
const std::string & |
message |
|
) |
| |
|
pure virtual |
| virtual void mesos::Executor::frameworkMessage |
( |
ExecutorDriver * |
driver, |
|
|
const std::string & |
data |
|
) |
| |
|
pure virtual |
| virtual void mesos::Executor::killTask |
( |
ExecutorDriver * |
driver, |
|
|
const TaskID & |
taskId |
|
) |
| |
|
pure virtual |
| virtual void mesos::Executor::launchTask |
( |
ExecutorDriver * |
driver, |
|
|
const TaskInfo & |
task |
|
) |
| |
|
pure virtual |
| virtual void mesos::Executor::registered |
( |
ExecutorDriver * |
driver, |
|
|
const ExecutorInfo & |
executorInfo, |
|
|
const FrameworkInfo & |
frameworkInfo, |
|
|
const SlaveInfo & |
slaveInfo |
|
) |
| |
|
pure virtual |
| virtual void mesos::Executor::reregistered |
( |
ExecutorDriver * |
driver, |
|
|
const SlaveInfo & |
slaveInfo |
|
) |
| |
|
pure virtual |
The documentation for this class was generated from the following file:


Plymouth Argyle donate food to the homeless after Home Park match called off
The Pilgrims had catered for around 9,000 fans for their postponed game against Grimsby Town
by Chris ErringtonUneaten food from Plymouth Argyle’s postponed game against Grimsby Town at Home Park did not go to waste as it was donated to two groups who look after the homeless.
It was given to the George House Homeless Hostel in Stonehouse and the Salvation Army’s Devonport House.
The food had either already been ordered, cooked and/or heated when the League Two fixture was called off at around 12.30pm on Saturday.
With a crowd of approaching 9,000 hungry fans expected for the match there was a lot of it.
So some of it that could still be eaten - pasties, pies and slices - was distributed to the George House Homeless Hostel and Devonport House.
Argyle’s stadium catering manager Andrew Bradford made the food drop-offs.
The game against Grimsby was postponed because of safety concerns after part of the Barn Park End roof at Home Park was damaged by overnight gales which battered the city.
Argyle issued a statement to announce the game had been called off.
It read: "Severe winds overnight have caused significant damage to the roof of Home Park, rendering parts of the ground unsafe for spectators.
The continuing weather conditions, with winds gusting to gale-force at times, has made it impossible to safely access the roof to make repairs.
"With supporters' safety of paramount concern, and following consultation with the police and safety experts, we have been advised that we are not allowed to open the stadium.
"Therefore, regrettably we have been left with no option but to call off the game.
"In keeping with the rest of Home Park, the roof was assessed during the summer and passed independent stringent safety and structural tests.
"We are content that the overnight damage was unavoidable."


ASP.Net Core Localization
See github source, sample
TODO: based on pre-release RC2, to be updated to RTM
Nuget packages
- "Microsoft.Extensions.Localization"
- "Microsoft.AspNetCore.Localization"
RequestLocalizationOptions
RequestLocalizationOptions are configured in Startup.
There are 3 built-in providers to set the culture of a request: QueryStringRequestCultureProvider, CookieRequest ("ASPNET_CULTURE" cookie) and AcceptLanguageHeader
You can set the cookie in an action method
[HttpPost] public IActionResult SetLanguage(string culture, string returnUrl) { Response.Cookies.Append( CookieRequestCultureProvider.DefaultCookieName, CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)), new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) } ); return LocalRedirect(returnUrl); }
Startup
- Startup.ConfigureServices: services.AddLocalization(options => options.ResourcesPath = "ResourcesFolder")
The ResourcesPath is the folder containing the .resx files.
services.AddMvc() // Add support for finding localized views, based on file name suffix, e.g. Index.fr.cshtml .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix) // Add support for localizing strings in data annotations (e.g. validation messages) .AddDataAnnotationsLocalization();
- Startup.Configure:
app.UseRequestLocalization(new RequestLocalizationOptions { DefaultRequestCulture = new RequestCulture("en-US"), SupportedCultures = new List<CultureInfo> { new CultureInfo("en-US"), new CultureInfo("en-GB") } });
In controllers, the ctor asks for IHtmlLocalizer<resourceName>.
public class AboutController : Controller { private IHtmlLocalizer<AmazingResource> _htmlLocalizer; public AboutController(IHtmlLocalizer<AmazingResource> localizer) { _htmlLocalizer = localizer; } [HttpGet] public string Get() { return _htmlLocalizer["Name"]; } }
Access localization via features
var requestCultureFeature = context.Features.Get<IRequestCultureFeature>(); var requestCulture = requestCultureFeature.RequestCulture;
Views
The one nice use-case for dependency injection into views, and there's a tag-helper (the string is the key).
@inject IViewLocalizer Localizer @{ ViewData["Title"] = Localizer["Home Page"]; } <p>@Localizer("Will be localized") </p> <p asp-loc>This will be localized</p>


Script to generate all the stats: rankings
Suggest more stats in the issue tracker
Last updated Tue Aug 7 23:34:19 EDT 2018


Data flows down
Send events up
Components are pure functions that return elements
Side effects are declared inside components with
useEffect()
Effects run after a component renders
Used to interact with DOM elements
Created with useRef
function Counter() {
const [count, setCount] = useState(0);
// ...
function Counter({ shouldCount }) {
if (shouldCount) {
const [count, setCount] = useState(0); // ⚠
}
// ...
function Counter({ shouldCount }) {
const [count, setCount] = useState(0); // ✅
function handleClick() {
if (shouldCount) {
setCount(count + 1);
}
}
// ...
const [count, setCount] = useState(0); // ⚠
function Counter() {
// ...
function Counter() {
const [count, setCount] = useState(0); // ✅
// ...
Functions whose names start with "use" and use other Hooks
Context provides a way to pass data through the component tree without having to pass props down manually at every level


The only file you need to download manually is config.tgz. Unpack, configure by editing config/targets, and install by running config/install.sh. The installer automatically downloads any additional files it might need. For more information, see INSTALL.
You can use the "generic Unix" procedure above, or you can install a pre-built system using the installer package in either smlnj-x86-110.77.pkg (for Intel/Mac OS X 10.6 Snow Leopard or later) or smlnj-ppc-110.77.dmg (for PPC/Mac OS X 10.5 Leopard). For more information, see below.
Download smlnj-110.77.msi and follow the instructions in WININSTALL.
For information on how to use access the subversion repository,
refer to our subversion recipe page.
Warning: When pulling the latest sources via subversion,
there is no guarantee that config/install.sh will operate
successfully due to a lack of usable bootfiles.
In this case you might be able to
generate new bootfiles using the bootstrap compiler (of an older
version). However, even that can be very difficult or even impossible,
in which case you will have to wait for the next working version to
be released.
As of this release, the Mac OS X installer (on Intel) puts SML/NJ in the directory /usr/local/smlnj. Future releases will update this installation in place (i.e., overwrite it). If you wish to install at a different location, you should use the build procedure for Unix systems.


Photo: Sandy Weston
While most of your time this month should be spent running, your efficiency may improve by lifting weights as well. You only need to hit the weights twice a week for about 30 minutes, but those 30 minutes are important. Don't worry about bulking up! The intense aerobic training that you runners do will not allow you to become “The Terminator.”
Benefits of increasing your muscular strength:
If you are just starting a strength-training program, keep it simple. I would recommend just a few upper and lower body exercises and core work using “functional movements.” Functional training means working the human body as one unit — with your feet on the ground.
By doing these types of movements, you work your core and increase your balance at the same time. Here are some suggestions to work into your program:
Two sets (8–12 reps) of the following, twice a week:
Include these next two exercises (hold each for one minute):
In the end, just remember to have fun and pick exercises that work for you. It is so much more rewarding when you make the most out of “getting there.”