text:
- owe (v.)
- Old English agan (past tense ahte) "to have, own," from Proto-Germanic *aiganan "to possess" (cf. Old Frisian aga, Old Norse eiga, Old High German eigan, Gothic aigan "to possess, have"), from PIE *aik- "to be master of, possess" (cf. Sanskrit ise "he owns," isah "owner, lord, ruler;" Avestan is- "riches," isvan- "well-off, rich").
Sense of "to have to repay" began in late Old English with the phrase agan to geldanne literally "to own to yield," which was used to translate Latin debere (earlier in Old English this would have been sceal "shall"); by late 12c. the phrase had been shortened to simply agan, and own (v.) took over this word's original sense.
An original Germanic preterite-present verb (cf. can, dare, may, etc.). New past tense form owed arose 15c. to replace oughte, which developed into ought (v.).


text:
Chatting With Astronauts
Students Connect With the International Space Station
NEW YORK, May 31, 2018 – Students at the Vaughn Next Century Learning Center, a member of the Center for Global Education's International Studies Schools Network, recently had the opportunity to interview two astronauts at the International Space Station.
Students from all of Vaughn's P–12 classes asked astronauts and former teachers Ricky Arnold and Scott Tingle questions on all sorts of topics, and a few even asked about cultural competence and global understanding!
You can watch the whole conversation below:

source: m-a-p/FineFineWeb


text:
IADC presents paper "Sand as a resource: Best practices to conduct responsible dredging projects". It presents best practices for optimal use of scarce sand resources, on both project and operational levels. Every stage of a project presents opportunities to increase the sustainability of sand extraction.
The paper Sand as a resource: Best practices to conduct responsible dredging projects presents best practices for optimal use of scarce sand resources, on both project and operational levels. Every stage of a project presents opportunities to increase the sustainability of sand extraction.
Learn how to achieve dredging projects that fulfil primary functional requirements while adding value to the natural and socio-economic systems by acquiring an understanding of these systems in the context of dredging as well as stakeholder engagement throughout a project's development.
The challenge of maintaining harbours and ports while conserving and sustaining coastal habitats, with all the rich resources they provide, requires that port and harbours do more to develop approaches to maintenance dredging that provide benefit to these neighbouring habitats. In this article, we describe an example from Harwich Harbour in the UK where Harwich Haven Authority (the Conservancy Authority) is looking to move to a more nature-based maintenance dredging methodology, using agitation dredging. Using the results of monitoring and sophisticated numerical modelling, we evaluate the likely benefit to the Stour/Orwell intertidal areas arising from the use of the agitation dredging.
Numerical models are often used to predict the magnitude and behaviour of dredge plumes to help assess and manage any environmental risks. To provide a realistic prediction of plumes resulting from dredging, numerical models require information on the rate at which sediment is suspended by the dredging, along with the characteristics of the suspended sediment. Previous investigations have shown that in the marine environment, fine-grained sediment suspended by natural processes and dredge-related activities are typically present as aggregated particles known as flocs. This article considers the importance of including the process of flocculation in dredge plume models.
Steel and concrete are the most common materials used in quay wall structures. The application of these materials contributes to a high emission of greenhouse gasses such as CO2 and the materials make up a large part of the construction costs. This graduate research examines whether alternative quay wall structures have the potential to be more cost effective and more sustainable compared to conventional structures for inland ports. An innovative quay wall of reinforced soil was designed and quay elements implemented to make a quay wall structure. A comparison was then made based on the criteria costs and sustainability between the innovative quay design and two conventional quays.
Registration open for the course Dredging for Sustainable Infrastructure; 20 - 22 June in Beveren (Belgium).
Green solutions in ports, waterways and coastal projects have increasingly become available thanks to many years of research and pioneering efforts in practice. These sustainable and/or nature-based solutions have shown to be good alternatives for classic solutions, but application is far from mainstream yet. One of the major hurdles is the lack of access of private capital to finance these kinds of solutions despite the strong interest of capital markets in green infrastructure opportunities. Identifying the hurdles and paving a way forward to overcome these hurdles could therefore help to increase the uptake of those green solutions.


I have to find error in the sentence--
The aroma of the invigorate morning cup of tea comes (1)/ wafting up the stairway and soon I am (2)/ sipping it slowly and reverentially without rushing. (3)/ No error (4)
They say there is an error in the first part but I don't think so. There is a similar sentence in oxford dictionary
'The aroma of the fresh coffee could be smelled half way down the street, says Muriel.'
Please help me....
 - 1
 "(to) invigorate" is a verb, but it is used here as an adjective. The adjective form is invigorating. – TypeIA May 29 '19 at 8:53
 - _USER_ This is an answer to the question. Please use the "answer" option for this, instead of commenting. – Ryan Jensen May 30 '19 at 22:07
 - 1
 _USER_ I'm familiar with the answer button; this was indeed meant to be a passing comment (trom my smartphone) rather than a complete answer. If it does happen to be the correct and complete answer, feel free to post it. (I see that you did exactly that and I will +1) – TypeIA May 31 '19 at 8:34
As TypeIA pointed out, the wrong form of "invigorate" is used here. Invigorate is a verb, and in this sentence it is used as if it were an adjective. Changing the word to "invigorating" gives us this sentence, which is grammatically correct:
The aroma of the invigorating morning cup of tea comes wafting up the stairway and soon I am sipping it slowly and reverentially without rushing.
It should be noted that, while this new sentence is grammatically valid, it still has what is almost certainly an error; "it," the object of "sipping" in the second clause, refers to the subject of the first clause, "aroma." It is very likely the author meant they were sipping the tea, but the sentence states that they are sipping its aroma.
Your Answer


Black, White and Grey: A War of Propaganda and Operation Olive Branch
January 22, 2018
Propaganda has been the building block of many wars, battles and military operations. It serves to fuel motivation, fire, and zeal to sympathizers and militants on-ground, aiding in their motivation, and keeping their morale high. The latest battle of propaganda can be seen with Operation Olive Branch executed by Turkey on January 20, 2018, at 17:00. Turkey initiated the operation with 72 fighter jets and bombing 108 out of 113 pre-planned locations. From the initiation of the operation till now, the YPG terrorist organization has been utilizing three main forms of propaganda, these being white, grey and black.
Propaganda by dictionary definition is 'information, especially of biased or misleading nature, used to promote a political cause or point of view'. Not one form of propaganda exists, and many ways of conducting propaganda are also present. In terms of platforms and mediums, social media is currently utilized the most, with means of Facebook, Twitter, and Instagram to aid in the maneuvering of ideas and ideology towards the organization.
The YPG is an offshoot of the PKK terrorist organization currently present within Syria. It is seen as the armed faction of the PYD, the 'political' body of the PKK in Syria. With the decision taken by the PKK in its third congress in 2005, a coordination body, the KCK, was decided upon whereby all of its arms and the terrorist organization itself were going to be connected and coordinated.
With the initiation of the KCK and its arms in northern Syria and parts of Iraq, the YPG, PYD and the PKK are trying to set up a terror corridor, to create an independent autonomous state made up of communes and cantons. An idea that was adapted from Ray Bookchin's Social Ecology theory. To aid in constructing its own governmental system, the YPG has been terrorizing Kurds in the region, dividing them among one another, and labeling them as either 'old' Kurds or 'new/reformed' Kurds. The organization has also been the US's greatest ally in fighting both extremist groups such as DAESH and other moderate groups as well. It is also worth noting that most natural gas resources and 80% of the region's water supplies go through the regions the PKK and its faction claim is theirs.
As with all terrorist groups, especially its founding organization the PKK, the YPG has been severely propagating false and misleading information in regards to both its activities, and the latest Operation Olive Branch initiated by the Turkish Armed Forces and the Free Syria Army against it. The operation consisting of bombing pre-planned ammunition depot's, training grounds, underground tunnels and weapons storage facilities is being twisted, turned and fed back to its sympathizers, to aid in recruitment purposes, and hatred towards the Turkish State, and to also derogate Turkey's activities in the eyes of international media organizations.
Specific techniques of ad hominem (attacking the opponent instead of attacking his arguments), ad nauseam (tireless repetition of slogans to mislead from the truth), appeal to fear (instilling anxiety in the general population), appeal to prejudice (using emotive terms and language to attach value to the idea proposed) and the Bandwagon techniques (spreading the idea of inevitable victory and calling everyone to join the cause) are being used by the PKK, the YPG, PYD and PJAK very aggressively.
The YPG has been attacking both Kurdish and non-Kurdish civilians in Afrin and Manbij, aiding in their migration to other countries and literally ethnically cleansing the region of Kurds who do not agree with their ideology. Operation Olive Branch in this sense is an operation for both Turkey's national security, but also possesses a humanitarian aspect whereby the Kurdish population not agreeing with the YPG is saved from its tyranny of terrorism.
YPG has been utilizing three forms of propaganda, these being white, grey and black. White propaganda is a propaganda initiated by the organization itself towards its opposition, in this case, the YPG against the Turkish state. The YPG has been distorting facts, figures and historical narratives on its communication platforms and social media, stating the Turkish state is going into Afrin for 'occupation' and 'trying to take away Kurdish land', when as stated before, this is not the case as at least 20,000 Kurds have been negatively affected, sometimes beaten and tortured by the YPG's activities.
Grey propaganda, on the other hand, is the mixing of true and false facts to cover the truth. Latest statistics show at least 110 YPG terrorists being killed by shelling of Turkish Armed Forces, and dozens turning themselves into the Turkish Army and the FSA. The YPG have accepted they have casualties, but are keeping the numbers to a bare minimum stating its only '3-5' people, mixing fact with fiction. Body counts show this is not the case.
Finally, black propaganda is a form of propaganda whereby the side conducting the propaganda executes it a way that looks like it has come from the opposition. The propaganda involves derogating the opposition, by making it look like they have losses, deaths, and defeat. The YPG has utilized black propaganda from the initial day of the operation and is still doing so today. False narratives of 'Turkish fighter jets being brought down' 'Turkish soldiers being killed' were spread on social media platforms, especially Twitter by the YPG. Fake Turkish nationalist looking Twitter accounts were made by the YPG and its sympathizers where black propaganda was executed with messages stating 'I'm sorry to say we have losses', 'Our tanks have been bombed by the terrorist YPG' and so forth. This propaganda not based on any facts or even photos was denied by the Turkish Armed forces stating no tanks have been hit, and all 72 fighter jets have returned home safely.
In conclusion, Operation Olive Branch is being fought both on-ground, and more importantly on cyber-space. This two-dimensional war is currently being fought with great effort and results by the Turkish state and should continue. Observers and followers of the operation should also look out for this misleading information and propaganda constructed by the YPG-PKK-PYD, aiming to distort the true nature and intention of the operation and to cover their own illegal activities.


Pokémon: Pseudo-Legendaries, Explained | Screen Rant
Pseudo-Legendary is a fan-made term for a group of Pokémon that have close to the stats and power of Mythical and Legendary Pokémon, but not quite.
Mythical and Legendary Pokémon are some of the most feared monsters in the franchise, yet there are some Pokémon that are close to matching them in strength. These are referred to as Pseudo-Legendary Pokémon by fans, and they share common traits that set them apart from their brethren.
Mythical and Legendary Pokémon are different in how they're acquired, but they are equally powerful. This dates all the way back to Pokémon Red and Blue, with Mew and Mewtwo's strength standing above all of other Pokémon in the Kanto region. The raw power of Mythical and Legendary Pokémon is meant to act as a reward for players who are diligent enough to seek out the rarest Pokémon in existence or who have defeated the mightiest trainers in the region.
Continue scrolling to keep reading
Click the button below to start this article in quick view.
Related: Three New Species Of Beetle Have Been Named After Legendary Pokémon
There are some Pokémon that can match Mythicals and Legendaries, either due to having powerful mixtures of moves or existing during the period when Mega Evolutions granted incredible power to common Pokémon. But a few Pokémon are only just below the Mythicals and Legendaries in their natural, base forms, which has led to fans referring to them as Pseudo-Legendaries.
Pokémon's Pseudo-Legendaries Are Pretenders To The Legendary Throne
Pokemon Ash Dragonite Pseudo Legendary
There are nine Pseudo-Legendary Pokémon in existence, one from each generation (save for generation three, which has two of them): Dragonite, Tyranitar, Metagross, Salamence, Garchomp, Hydreigon, Goodra, Kommo-o, and Dragapult. These Pokémon share a few common traits; they are all stage-three evolutions, they each require 1.25 million experience points to reach level 100, and they each have a base stat total of 600. Psuedo-Legendary Pokémon generally have a powerful Ability and access to a strong move pool in order to further enhance their strength. Additionally, all Pseudo-Legendaries but Tyranitar and Metagross have at least a partial Dragon typing.
Pseudo-Legendaries are clearly made strong on purpose, as they are often saved for the most powerful trainers in each region. Lance of the Kanto Elite Four used multiple Dragonite on his team; Drake of the Hoenn Elite Four had a mighty Salamence; and Metagross was the signature Pokémon of Champion Steven Stone, as was Garchomp for Diamond and Pearl's CynthiaThe first stages of these Pokémon were once extremely hard to find, but the introduction of online trading meant it became easier to find a baby Dratini or Goomy near the beginning of a game. This gives trainers the chance to easily use Pseudo-Legendaries during their own Pokémon journeys.
Next: Resident Evil Village Lady Dimitrescu Height Compared To Legendary Pokémon
Selling Sunset Davina, Heather, Christine-2
Selling Sunset Season 2: Why Christine Told Davina About Engagement Over Mary
About The Author
Leave a Reply


text:
The Administration just launched the Deep Space Food Challenge, and they're asking the members of the general public to put their thinking caps on.
The Deep Space Food Challenge is an international competition where NASA offers prize purse awards to U.S. teams.
According to NASA, the Challenge is a "public competition that seeks to create novel food production technologies or systems that require minimal inputs and maximize safe, nutritious, and palatable food outputs for long-duration space missions, and have potential to benefit people on Earth."
In layman's terms, the challenge is to find a way to provide future space explorers nutritious foods that are healthier and tastier than the freeze-dried stuff they eat now.
Plus, a solution with "efficient use of volume, water, and other inputs for producing food" could be used to combat food insecurity on Earth, especially in areas facing food shortages.
If you think you have the brains to figure out a solution, NASA wants you to take on the challenge for a chance at big bucks.
In Phase 1, NASA will award up to 20 of their favorite teams or ideas up to $25,000 and they will be invited to move on to Phase 2.
If you're up for the Deep Space Food Challenge, register by May 28 to put your brain to the test in the name of humanity (and space food).


see Usage limits overview. must be between the reserved capacity The global or regional limit for concurrent RAM, RAM hours, storage (GB), networks, and public IP addresses defined in your contract. You can exceed your account reserved capacity by setting a higher limit for max concurrent Metered RAM, Metered RAM hours, and storage usage. You are charged a premium for this additional usage. limit and the Max settable limit The highest usage limit that you can set for your account. To increase this value, contact support. .
 - By setting a limit that is higher than your reserved capacity, you can enable pay-as-you-go Any usage of maximum concurrent RAM, cumulative RAM hours, or overall storage capacity in excess of your reserved capacity, globally or in any region. To learn more, see Current account usage overview. , which allows your users to work on business-critical projects even after you exceed your expected billing rate.
 - For more information about limits and pay-as-you-go, see Understanding pay-as-you-go.
Alternative method to edit account-wide and regional limits
 1. Navigate to the Manage > Settings page.
 2. In the Account-wide limits section, click the blue, underlined value in the Limit column and enter a new value. limits
 Notes
 - The value for Limit A hard cap placed on a user, department, or customer account usage of storage, RAM hours, concurrent Metered RAM, and concurrent VMs. Limits may apply to global usage or to usage in a particular region. To learn more, see Usage limits overview. must be between the reserved capacity The global or regional limit for concurrent RAM, RAM hours, storage (GB), networks, and public IP addresses defined in your contract. You can exceed your account reserved capacity by setting a higher limit for max concurrent Metered RAM, Metered RAM hours, and storage usage. You are charged a premium for this additional usage. limit and the Max settable limit The highest usage limit that you can set for your account. To increase this value, contact support. .
 - By setting a limit that is higher than your reserved capacity, you can enable "pay-as-you-go", which allows your users to work on business-critical projects even after you exceed your expected billing rate.
 - For more information about the values on this page, see Account-wide usage limits.


text:
Monday, February 4, 2008
Fort Smith - The Old Barracks
Continuing our look at Fort Smith National Historic Site, this brick structure is the highly altered barracks building of the old fort. Located inside the five-sided walls of the fort, the barracks were used by both Confederate and Union troops during the Civil War.
The U.S. garrison of the fort abandoned the post in the spring of 1861 after receiving word that an overwhelming force of state militia was coming to seize the works. State troops then occupied the barracks briefly. When Arkansas joined the Confederacy, Fort Smith became a Confederate post and the barracks were occupied by Confederate troops. Southern soldiers remained here until 1863 when the post was abandoned ahead of a Union advance. The barracks were then used by Federal troops until the end of the war.
Fort Smith remained a military post until 1871, when it was abandoned. The U.S. District Court for the Western District of Arkansas then made use of the barracks structure, adding a second floor and attaching a new wing, visible here in the left of the photograph, containing a much improved Federal jail.
The structure now contains the visitor center of the national historic site, along with the restored courtroom of "Hanging Judge" Isaac C. Parker. Among the exhibits are displays on the fort's Civil War history.
We will continue our look at Fort Smith over the next few days and you can also learn more by visiting _URL_ (just scroll down to the Index and look for the links under the Arkansas section).


text:
We see white stockings in the earlyand mid-19th century, but they subsequently disappeared for a few decades. Suddenly at the turn-of the 20th century we see girls and younger boys wearing first white long stockings and then white knee socks. Knee socks began to replace long stockings beginning in the 1910s. Boh white stockings and white knee socks were often worn with strap shoes or sandals. Significant differences existed between countries for reasons we do not undrstand. Boys wearing white knee socks were much more common on the Continent than wither Britain or America. White knee socks were worn in America and Britain, but mostly by girls. White knee socks seem especially common in France and Germanyand were worn by both boys and girls.
White knee socks began to appear about the turn of the century. I have seen advertisements for white socks of various lengths in store catalogs during the late
19th century, but have seen few actual photographs of boys wearing them with knee-length pants until after the turn of the century. Many of the boys wearing dresses, however, were photographed with white socks--usually
ankle length. Until the turn of the century boys mostly wore
over-the-knee stockings for dress occasions. Even after the turn-of-the century over the knee stockings were often worn with knee pants and knickers and were more common than kneesocks. Throgh the 1910s, thre-quarter length sovks were more common than jneesocks, but were generally replaced during the 1920s. tiockings In some countries such as Germany they were even worn with shorts. Boys after the turn-of-the centuruy began wearing white knee socks with Fauntleroy suits, although long white stockings were more common. Often they were worn with strap shoes. After World War I knee socks of all descriptions became more common with the increasingly popular short pants. Conventions for wearing
white knee socks, however, varied greatly from country to country.
Great differences exist in the conventions for wearing white kneesocks. These differences exist among countries. In some countries like England,
white kneesocks were considered suitable for young children and girls. Little English boys wore them, but rarely school-age boys. On the continent, white
kneesocks were more commonly worn by boys. There were also different institutiions and activities in which white kneesocks were worn. Choirs and schools often used them in school uniforms. After World War II, they were commonly worn by Japanese schoolboys.
White kneesocks currently have a dressy look. They were worn, however for both dress wear and for play. The use of white kneesocks differed somewhat from country to country. Small boys still in dresses might wear white stockings for socks in the late 19th century, but once breeched they almost always wore dark stockings. After the turn of the century, white stickings and socks were worn by boys after breeching--although the age varied. While white kneesocks could be worn with for both play and dress outfits, often dark stockings were considered more suitable for especially formal occasions.
Erly kneesocks were often made from a bulky materail. Some were knitted at home. This was much less true for white kneesocks. This is because white kneesocks wre often worn for more formal dresswear--at least by boys. Hosiery for formal wear was commonly more sheeer than hosiery for every day wear.
White knee socks were often made to come to the knee without the extra material for turn over top cuffs.
We have noted boys in several countries wearing white knee socks. They were more common in some countries than others. There are substantial differences betwwn the conventions for wearing white knee socks among different countries. Knesocks for example were very common in Britain. Knee socks were perhaps more commonly worn in Britain than any other country. yet boys rarely wore knee socks. They were much more common for girls. We see both boys and girls wearing knee socks in Germany. We also see both boys and girls wearing white kneesocks in France. Similar patterns were observeable in Belgium. Knee socks were commonly worn by American boys in the 1920s and 30s, but they were commonly patterened knee socks. White knee socks were much more common. Our information on many countries is more limited at this time. These conventions have varied over time.
Various insitutions such as schools or youth groups have employed white kneesocks as part of their uniforms or costumes. Schools in various countries were the most common. Many European choirs also outfitted the boys wearing short pants in white kneesocks. Some youth groups have also used white kneesocks. This was particulartly true of the Young Pioneees, but the Scouts and other youth groups have employed white kneesocks as part of formal dress uniforms. We also note white kneesocks being used as part of band uniforms and dance costumes.
Navigate the Boys' Historical Clothing Web Site:
[Return to the Main knee socks page>]
[Introduction] [Activities] [Biographies] [Chronology] [Cloth and textiles] [Clothing styles] [Countries] [Topics]
[Bibliographies] [Contributions] [FAQs] [Glossaries] [Images] [Satellite sites] [Tools]
[Boys' Clothing Home]

source: openbmb/Ultra-FineWeb


Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.
My Sql Server database has some nullable nvarchar fields, and no nvarchar fields containing empty strings. I want to keep it this way, but the default MVC model binder seems to turn null strings into empty strings.
When a controller retrieves a null nvarchar database field, the null field turns into null string inside the controller, and from there the view renders them, say as blank text boxes. When the page is posted, the default model binder uses these blank text boxes to update the model, and the formerly null strings are changed to empty strings. When the data is updated back to the database, nulls are overwritten with empty strings.
What is the easiest way to get model binding to leave these nulls unchanged?
share|improve this question

What's an SS database, SQL Server? As a practical matter, you should be able to ignore the difference if you test for String.Empty or "" instead of null, since those two things will return true for null as well. – Robert Harvey Jul 9 '09 at 19:08

Yes, SS = Sql Server. Null and the empty string are not identical and you can't ignore the difference, either in T-SQL or in C#. In the past I had a painful experience in a project where blending of the two caused a lot of unexpected behaviors (bugs). For example if a programmer just tested (x == null) instead of using String.IsNullOrEmpty(x) on the C# side or (x IS NULL) instead of (x IS NULL OR LEN(x) = 0) in SQL the test will fail, apparently randomly, depending on whether the default value of null has been changed to the empty string or not. – keithm Jul 9 '09 at 21:30

I was bitten by this one again today. I missed decorating a class property with [Required], so my validator (xVal) did not notice the property becoming an empty string. The object containing this empty string property was then written into a database, where the NOT NULL constraint on the table field of course did nothing at all. – keithm Jul 14 '09 at 21:56
4 Answers 4
I know you are probably looking for something more sophisticated, but the default behavior of the ModelBinder is to convert empty form field values into the default value for the datatype of your model object property. String properties become empty, int properties become 0, etc.
You can obviously create a validation scheme that will check for string.empty and convert to null prior to updating the DB. For int form fields you will need to check for 0, and then convert to null.
share|improve this answer

Thanks for your suggestion. I only care about strings becoming non-null, not integers or anything else. As for validation, I take care of most of that through class annotations and the xVal project. In this scheme, when a validation error is detected, a automatic RulesException is thrown that automatically turns into a validation error message. I don't want to create an exception that ends up on a page that in fact is due to the model binding process. – keithm Jul 10 '09 at 1:28
Here's a hack I used a few months ago before I found the eden of stackoverflow. :) It's a pain, and doesn't scale well, but it works:
Basically, you override the binding inside of a partial linq object. If there's a value you know should always be null (but never legitimately empty) you can do the following. I used this for a string-based user id (SID).
partial void OnSubProcess_Owner_UserChanged()
{
 if (string.IsNullOrEmpty(this.SubProcess_Owner_User))
 this._SubProcess_Owner_User = null;
}
James
share|improve this answer
The right answer might be to override the default Model binder to add this functionality yourself.
Maybe you could have a NullValueAttribute that you could apply to string properties to identify the null value. Then make empty string a null value.
I am experiencing the same problem at the moment and will probably resort to this
share|improve this answer
up vote 0 down vote accepted
I'm posting this answer to follow through on this question. After working with it for a while I came to see this problem as part of the general concern of model integrity. For a while I had implemented a solution inside my update stored procedures to catch empty strings and turn them to nulls, along the lines of mikerennick's answer above. Later I wanted also to make sure fields were trimmed and I happened to move the application to NHibernate (and most of the stored procedures went away). In the end I embedded some POCO logic to trim and check for empty strings (from whatever source) in the setters as so:
public MyClass {
 private string _name;
 public string Name {
 get { return _name; }
 set { _name = value.TrimToNullIfEmpty(); }
 }
}
public static class StringExtensions {
 public static string TrimToNullIfEmpty(this string s) {
 string temp = (s ?? "").Trim();
 return temp.Length == 0 ? null : temp;
 }
}
share|improve this answer
Your Answer

discard
By posting your answer, you agree to the privacy policy and terms of service.
Not the answer you're looking for? Browse other questions tagged or ask your own question.


book size I can do a layout that is this small. As you could see here, there's not a lot of detail that you could really get onto a canvas this small, but that's kind of the point. It pretty much forces you to just think about the specifics of this page where you want the panels to be where the characters or objects are within the panels, where the word balloons you're going to go, how much spaces between each panel, all that really important stuff can definitely be executed at this small size. Now it doesn't mean that you have to do all your layouts at this small size. There's also nothing wrong with doing your layouts at the final print size, considering that you're probably going to be drawing your final artwork much bigger than this. The most important thing, though, about the layout stage is making sure that your layouts are with in proportion to the final printed size. So this small little canvas here is in direct proportion to this comic book. Now, how did I do that? Well, I'm an artist, and that means I'm probably pretty bad at math, and I actually happen to be pretty bad at math. So I utilize a trick that I learned a while ago, and it really helps me create something in proportion to something else, either smaller or larger, and all you really need is a ruler or some sort of straight edge. So what you want to do is take the size that you want your final comic to be printed at. This is the size right here for this example, take a sheet of paper and put it underneath it. Now take your ruler or whatever straight and you have and lay it across whatever stock canvas size you're working with from corner to corner, and you can draw imaginary line and then press down when you get to the paper underneath and continue that line as far as you want it to go. Let's take it all the way to the edge of this sheet for this example. So now that you have that diagonal, essentially all you really want to do is draw a horizontal line, and wherever it meets anywhere on that diagonal line, then you draw a vertical line connecting it. So, for instance, if you want to make a size that is smaller than that original comic book size but still in proportion, you would create a horizontal line that is higher on that diagonal. So I'll I will put a horizontal line right here just until it hits the diagonal. Now, if I wanted to be really small, I'll just keep going up this line. Wherever that horizontal line meets the diagonal, I then draw a vertical line to connect it. And as you could see here, this size right here is in direct proportion to this size right here, but it's dramatically smaller now. The lower I go on this diagonal, the bigger I could make the size. So once again I draw a horizontal line, touches the diagonal, and then I draw a vertical line to connect it. Now this size is bigger than this size, which is smaller than this size, but all of it is in proportion to each other. For me being not super savvy with numbers and math, it's visual enough from me to make sense of it. And it's up to me. I could kind of tweak it to how big and how small I wanted to be. You can do this with any shape, by the way. So say you choose a comic book size that is a little bit more unique, like this horizontal size. The same principle applies. So once again, this small size right here is in direct proportion to this size. So if I was going to lay out a comical page that was in this size, I would do it at this size. For instance, if I wanted to work much smaller now, once you figured out with size, you want to work on for your layouts. Let's then go into the next step, which is adding guidelines to your pages. 4. Creating A Framework: Okay, so now that we've decided what size we want our comic to be, and we've created a layout size that is in proportion to that final size, let's get into creating some guidelines for that page. So in order to create some form of order on your page to not have any important information, get cut off in the printing process and to make sure that there's enough room for important details like narration boxes and word bubbles you're gonna wanna place in some rough guidelines. So you might have all seen the PRI ruled comic book pages that you can get at the art store pretty much those air. Just Bristol board sheets of paper with blue line guidelines around them. Pages like that condemn finitely be convenient to work on, but they're also a little bit expensive. So I'm gonna show you how to rule out your own pages and with those guidelines, even indicate so here we have our sheet of paper to begin our layouts, so this page indicates one page of comics just at a smaller size. Now, if we look at a page of comics, here is an issue of Riverdale. When I'm illustrating these comics. I'm taking into account that I want some pieces of the artwork to go straight to the edge of the page. Right here is an example. Over here is an example. Some of the black that I indicated in the background is an example that's called full bleed. Full bleed is when the artwork goes all the way off of the page straight to the edge. That's a storytelling choice that I make when I want certain scenes where parts of the page to have a certain amount of impact. It only works as an impactful visual if everything around it is contained within some sort of framework. So here's another example where most of the panels are contained within a certain framework. And then this last panel here goes all the way down to full bleed. I achieved this effect by ruling out on my pages a template that I work off of. One set of guidelines indicates where I want all the important artwork to go within meaning where most of the panels are gonna fit within past. That line indicates where bleed starts to happen. Like this, for instance, were a full bleed image like this. So because layouts are a small sketch version of what you want the page to look like, you want to start that guideline process during this stage, so a good place to start is to figure out where you want to border your page. So how far from the edge of the comic page do you want your panels toe lay within for me? I think a good rule of thumb is about 1/2 inch on all sides. Okay, so now we have a framework that are panels can work within. You also want to indicate a second set of guidelines. Generally, these guidelines will indicate where you want the word balloons to stay within and the narration boxes as well. So all the important lettering will stay within those guidelines. And for me, I'll usually indicate maybe 1/4 inch from the edge of this live area. Now you can make exceptions for where certain lettering does pop out of these guidelines for effect, just like your artwork. But generally this is a good frame of reference to work within. So now that we got our guidelines in, let's start adding in our panels so say I had a three panel story going on over a year. Here's panel one hears panel to and panel three. I want to have be very impactful moment, and I wanted to go all the way to full bleed in order to create that sense of impact. I know that I'm going to go past this live area all the way to the edge of the page. So say, in Panel one, we have an establishing shot, and it's a low angle shot of a building or something like that. And, um, there's a hero silhouetted at the top. We just see an indication of a hero with a cape silhouetted at the top of the building. I'm gonna do this really quick. Just give me sketch quality just the way our layouts would be. Some clouds windows. We get a sense of the composition of the panel that in Panel two we have a close up shot of that character's eyes. Maybe he's seeing something down below danger we're seeing through his mask and then in Panel three, we want that to be the big, impactful moment where the superhero character jumps off the building and flies into action So this is the area where I want to go past this live space here and go all the way to the edge of the page. - Okay, So bear with my terrible stick figure drawings here, But I'm just trying to illustrate a point of what I'm talking about by creating a certain framework for your page so that certain things can pop out of that framework if necessary. So here we have our hero character jumping into action with some of the background buildings that he jumped off of in the background. His cape can even be shown going past all the way to the edge of the page underneath some of those panels that were above him. Now, for instance, if I just jumped into the page without putting any of those guidelines down and then just saying, Oh, there's gonna be a panel here panel one panel to is gonna be here, and perhaps it I'm not taking into account that it goes completely off the page. And then, uh, yeah, the character is gonna jump out over here, and it's gonna be really great scene and half of him gets cut off. He gets cut off his hand, for instance, some of the panels go all the way to the edge. There's really no structure to the page, so sometimes you get really excited and you just want to start drawing already. I totally get that minorities to, but it takes just a little bit of time to put in a certain kind of framework


text:
We investigated the effects of humor on vocabulary instruction in a study with 84 seventh grade students from an ethnically mixed, middle-class, Northeastern, suburban school district. The experimental group received a series of lessons for vocabulary words for which we provided humorous contexts. The control group received a series of vocabulary lessons for the same words in typical, non-humorous contexts, based on guidelines from a standard reading textbook. Following each lesson, we administered identical assessment tests to each group. An examination of preand post-test scores revealed that students in the experimental group significantly outperformed their control group counterparts on tests for which we provided humorous vocabulary lessons. The study is examined in light of engagement theory within a motivational theoretical perspective.
Aria, C., & Tracey, D. H. (2003). The Use of Humor In Vocabulary Instruction. Reading Horizons: A Journal of Literacy and Language Arts, 43 (3). Retrieved from _URL_


P$, but not the values of $e_1$ and $e_2$. (I think - I'm still not completely sure I haven't misunderstood the question.) – Matt Pressland Sep 11 '12 at 10:20

@MattPressland Yeah, I agree. Let's see if we can get the OP to improve the question. – rschwieb Sep 11 '12 at 12:33
show 1 more comment
As I understand your question, it is somehow similar to this:How to check if a point is inside a rectangle. I see that my answer (while received no votes), may be correct and may be simply applied in your case.
share|improve this answer

Where is your answer? – Jordi Planadecursach Oct 4 '12 at 22:37

To locate my answer, please do a find on my name after you have clicked the link. – Emmad Kareem Oct 4 '12 at 23:37
add comment
One (far-from-optimal, but straightforward) way to do it: since you have the box's coordinates available, you also presumably have the four corners of the box available. Now, knowing $P$'s distances from the two points along one edge lets you narrow down the point's location to one of two points $i_1$ and $i_2$ (since the two circles $|P-p_1|=r_1$ and $|P-p_2|=r_2$ have at most two intersection points). Similarly, knowing $P$'s distance from the two points along the other edge narrows down its location to one of two points $i_3$ and $i_4$. (If you really want, I can flesh this out with the equations for those two points - but it's straightforward to find them yourself; it's just a bit of algebra or alternately a bit of geometry) Now, the kicker: the two sets of two points can't be the same, because $i_2$ is the reflection of $i_1$ about the edge $p_1p_2$ and $i_3$ is the reflection of $i_4$ about a different edge $p_3p_4$. This means that you can compare to determine which of the points $i_1,i_2$ is identical to which point $i_3,i_4$ and that's enough to get your point precisely. Once you have that, the standard point-in-rectangle tests should suffice.
Note that for algorithmic reasons, once you have $i_1$ and $i_2$ you may want to perform the point-in-rectangle test on both of them; they can't both be in the rectangle, but it's possible that they're both out of the rectangle, in which case you don't have to bother going on and finding $i_3$ and $i_4$.
share|improve this answer
add comment
The distance measurement from any point gives you a circle around that point as a locus of possible positions of $P$. Make any such measurement from a point $A$. If the question is not settled after this (i.e. if the circle crosses the boundary of the rectangle), make a measurement from any other point $B$. The two intersecting circles leave only two possibilities for the location of $P$. If you are lucky, both options are inside or both outside the rectnagle and we are done. Otherwise, a third measurement taken form any point $C$ not collinear with $A$ and $B$ will settle the question of exact position of $P$ (and after that we easily see if $P$ is inside or not.
One may wish to choose the first point $A$ in an "optimal" faschion such that the probability of a definite answer is maximized. While this requires knowledge about soem a prioi distribution where $P$ might be, the center of the rechtangle seems like a good idea. The result is nondecisive only if the measured distance is between half the smallest side of the rectangle and half the diagonal of the rectangle.
share|improve this answer
add comment
Measure distances from the four corners of the rectangle.
Consider the four triangles formed from P and the four sides of the rectangle.
Apply the Law of Cosines to measure the angles of the four triangles next to the sides of the rectangle.
If any is larger than 90 degrees then you are outside. Otherwise you are inside.
EDIT 1:
Suppose your rectangle is $EFGH$ where the sides are $d(EF)=d(HG)=x$ and $d(FG)=d(EH)=y$.
Let the distance of $P$ from $E,F,G,H$ be $e,f,g,h$ respectively.
Now by Law of Cosines applied to angle $EHP=\alpha$ we have $\cos (\alpha) = (y^2+h^2-e^2)/(2yh)$. If the angle is larger than $90^\circ$ then $y^2+h^2-e^2<0$. We need to apply a similar check 8 times. If any of the expressions is negative then we are outside. Else we are inside (or on boundary). So you have to check the sign of 8 expressions.
If either of the following
$y^2+h^2-e^2$, $y^2+e^2-h^2$, $x^2+e^2-f^2$, $x^2+f^2-e^2$, $y^2+f^2-g^2$, $y^2+g^2-f^2$, $x^2+g^2-h^2$, $x^2+h^2-g^2$
is negative $P$ is outside.
EDIT 2:
In case efficiency is a consideration: To test that $P$ is inside, or on the border, checking with respect to 3 sides will do. So it takes 6 inequalities. For example
$y^2+h^2-e^2\ge 0$, and $y^2+e^2-h^2\ge 0$, and
$x^2+e^2-f^2\ge 0$, and $x^2+f^2-e^2\ge 0$, and
$y^2+f^2-g^2\ge 0$, and $y^2+g^2-f^2\ge 0$.
EDIT 3:
A similar approach will work for checking with respect to a convex polygon.
share|improve this answer

can you translate that into a boolean equation ? – Jordi Planadecursach Oct 8 '12 at 20:33

I added a formulation. – Maesumi Oct 8 '12 at 22:17
add comment
You have the coordinates of the four corners of the box. I'll imagine that the box is situated so its sides are horizontal or vertical (This could be easily obtained by a rotation if box wasn't originally like this). So you can also get the coordinates of:
$p_M$, the center of the box (inside the box),
$p_L$, the point directly to the left of the center so that the left side of the box bisects the line joining $p_M$ to $p_L$,
$p_R$, the point directly to the right of the center so the right side of the box bisects the line joining $p_M$ to $p_R$,
two further points $p_A$ and $p_B$ respectively above and below the box, so that the top/bottom of the box bisects the line joing $p_M$ to $p_A$ or $p_B$.
Now for your mystery point P you find
$t_M=d(p_m,P)$, $t_L=d(p_L,P)$, and similarly for $t_R,t_A,t_B$.
Now use the fact that the mystery point $P$ is on the (half plane to the) left of the right side iff it is closer to the point $p_M$ than it is to $p_R$, i.e. iff $t_M>t_R$. Similarly $P$ is to the right of the left side iff $t_M>t_L$, and $P$ is below the top of the box iff $t_M>t_A$, and finally $P$ is above the bottom of the box iff $t_M>t_B$.
We now have that p lies in the box iff each of the quantities $t_M-t_*$ is positive, where * is one of the four symbols $L,R,A,B$. For the function, define
$f(distances)=min(t_M-t_L,t_M-t_R,t_M-t_A,t_M-t_B)$


text:
Admation recently completed the first stage of its integration with Mediaocean's Spectra.
Mediaocean, formerly known as BCC, provides Australia's leading ad agency finance software.
The initiative was driven by agencies who understood the benefits of linking their project and resourcing software with their finance system.
Connect your workflow and finance software for greater ease and agility
Software solutions are becoming a critical part of streamlining operations in ad agencies. Still, technology can pose its own challenges. For example, the disconnect between specialised tools is placing more pressure on teams who spend precious creative time moving data across platforms. In today's technology-driven world, it shouldn't be this difficult.
Everything in focus with two powerful tools
For some time admation has been delivering its robust project and resource management software to ad agencies.
Now it's extending its capabilities to connect workflow and finance tools to deliver greater productivity and ease.
Admation recently completed the first stage of its integration with Mediaocean's Spectra. Mediaocean, formerly known as BCC, provides Australia's leading ad agency finance software.
The initiative was driven by agencies who understood the benefits of linking their project and resourcing workflow with their finance system.
Both Mediaocean and admation have worked closely on this project to ensure that the integration of Spectra and admation provides a fast, secure service for agencies.
Clemenger Group is currently up and running with the live system and already reaping the benefits.
Connecting the dots for greater productivity
So what does this mean for admation users?
You can now link an admation 'Project' with a job in Spectra as well as link Spectra Cost Types (e.g. Art Director, Copywriter) with the admation equivalent Task Types.
The integration allows you to view approved Estimated Time for a Project (Eg: Art Director x 20 Hours, Copywriter x 15 Hours) which is helpful when using admation's Resource Management Module to schedule your project.
The integration is two-way so logged time can optionally be pushed back to Mediaocean's Timesheet module Aura, where Timesheets will still require management approval.
As we know the Agency Job Number is the key reference to work going through an agency, so ensuring that admation projects are linked was common sense. The integration also enables reconciliation between Mediaocean Estimates and Admation's Resourcing module.
Greater accuracy. Speedier results
Imagine no more Job Number typo's! This powerful integration reduces the risk of data entry errors across the two platforms. Save time with information at your fingertips instead of having to copy and paste data.
See more. Do more.
Have greater visibility over your job hours/costs, resources hours/costs and job revenue projection, enabling you to make better and more informed decisions.
The easier it is to do your work, the more time you have to play.
Make technology work for you
We want to ensure we're always offering our clients value. This integration supports our clients who have invested in the Spectra platform, making sure that their technology is working for not against them.
Stay tuned for the next stage of our integration scheduled for Q4 2018. For more details on how this can benefit your ad agency email _EMAIL_
Please login with linkedin to commentadmation
Streaming giant Netflix has questioned the feasibility of local content requirements in its submission to the government's 'Supporting Australian Stories on Our Screens' options paper review. The review follows the ACCC's Digital Platforms Inquiry, from which the government identified existing Australian content obligations as a topic of interest in the development of a platform-neutral regulatory […]
A brave move has paid dividends for Baskin-Robbins Australia who recently announced they won the award for Best Digital Initiative at last week's QSR Media Awards. Baskin-Robbins Australia's Master Licensee, Palm Oasis Ventures took a risk in launching a digital winter campaign targeting a new millennial and Gen Z demographic when it partnered with Netflix to launch season 3 of the streaming giant's most popular show, the sci-fi horror series, Stranger Things.
Leading eCommerce website development agency, Convert Digital, has achieved the coveted Magento Gold Status from Adobe. This accomplishment has been reached following the agency's continuing work with the Magento 2 platform - platform that is incredibly robust and offers unrivalled flexibility and scalability.


The Macrium Reflect knowledgebase has been upgraded.
Please go here for the latest information.
Knowledgebase
v5: Incompatible Disk Selected
Expand / Collapse

v5: Incompatible Disk Selected
This article explains the reasons why you might see the error message "Incompatible Disk Selected" when attempting a Restore or Clone operation.
Notes:
 - This is only an issue with when the structure of the target disk for a restore or clone differs from the source. It does not concern disks used to store images / backup files.
 - There are no disks currently available that would cause this issue when connected directly (i.e. not via USB). However, some external disk enclosures are remapping the native disk structure to enable > 2TB disks to be used with Windows XP.
When restoring or cloning you may see the error message box below and be prevented from continuing with the operation:
The error indicates that the target disk has a larger sector size than the source or you are using a USB disk enclosure that is changing the reported sector size of the disk. This is not supported.
The table below shows compatible disks for the source and target of restore and clone operations:
 Source Sector Size
Target Sector Size
 Compatible
 512 or 512e 512 or 512e
 512 or 512e 4096 No
 4096 512 or 512e
 4096 4096

How do I check disk sector sizes?
1. Press the 'Windows' key, type 'System
Information' and press 'Enter'
2. In the Window that opens, expand 'Components' > 'Storage' and select 'Disks'. A list of all locally attached disk will be displayed in the right Window. The 'Bytes/Sector' field will display the sector size.
Note:
Disks with a physical sector size of 4096 Bytes that implement 512e will show 512
Note: If your PC uses "Intel Rapid Storage Technology" (RST) also known as "Intel Matrix Storage" then you may need to update the Intel Matrix/RST driver to the latest release when moving to a disk that supports Advanced Format 512eIntel RST Driver Download
What is a disk sector?
A sector is the smallest addressable block on a disk and until recently all disks had a sector size of 512 Bytes. With the advent of larger, multi Terabyte, disks the physical sector size has increased on some disks to 4096 Bytes. These are sometimes referred to as 4K sector disks. To overcome Windows compatibility issues the majority of disks use a technology called Advanced Format 512e. This enables 4K disks to emulate 512 Byte sector size disks by providing an emulated sector size of 512 Bytes.
So what's the problem?
The NTFS file system contains a data structure called the Master File Table (MFT). The MFT is critical to the file system and defines all the files and directories. The MFT contains 'records' and each record is 1024 Bytes (1K) long if the disk sector size is 512 Bytes. For a 512 Bytes per sector disk this equates to 2 sectors. If the entire file system is restored or cloned to a disk with a sector size of 4096 Bytes then each MFT record (at 1K) would be a quarter of a sector. Since a sector is the smallest amount data that can be read or written to a disk this means that NTFS cannot directly read it's own data! 4K Disks that support Advanced Format 512e do not have this problem as these disks permit directly accessing 512 Bytes of data.
Update for external USB enclosures...
We have identified that a number of recent external USB enclosures will 'fake' 4096 Bytes per sector disks and cause the error above. This happens regardless of the actual sector size of the attached disk and even if the disk supports 512e.
Why do they do this?
Normally disks with 512 Bytes per sector that are larger than 2TB would need to be initialized using the GUID Partition Table (GPT) format. Note that GPT disks are not supported by Windows XP, however, MBR disks are supported by all Windows Operating Systems, including Windows XP.
If the reported sector size is changed to 4096 Bytes then MBR disks can be as large as 16 Terabytes and still be accessible by Windows. So, by changing the reported disk sector size to 4096 Bytes for disks attached to the enclosure this enables all Windows PC's from XP onwards to be able to access disks greater then 2TB. If you are selling USB enclosures then this gives you a larger potential market and is a 'no-brainer' product feature.
Isn't this good?
Well yes, if the only purpose for the USB enclosure is to provide additional storage and you do not intend to take out the disk. But this is bad if you intend to clone to a disk in the enclosure and then use the cloned disk to boot your PC. It simply won't work. If you remove the disk from the enclosure then it cannot be read. This is because the sector size will change and the partition structures on the disk will be unreadable.
So what do I do?
If you receive the 'Incompatible Disk Selected' error shown above and you are using an external USB enclosure, then either try a different enclosure which doesn't change the reported disk sector size or directly attach the disk to a spare SATA port on your PC's motherboard. This will ensure that the disk manufacturer's drive geometry is reported correctly and may allow you to proceed with your clone or restore operation providing that the reported sector size is now compatible.
Search Terms
Incompatible Sector Size
Advanced format 512e
4K Disks
Details
Last Modified:4 Sep 2013
Last Modified By: Administrator
Type: Info
Article not rated yet.
Article has been viewed 45,611 times.
Options


text:
Tolerance for Disagreement Scale (TFD)
The tolerance for disagreement scale is designed to measure the degree to which an individual can tolerate other people disagreeing with what the individual believes to
be true. This conceptualization is similar to that of argumentativeness. People with high argumentativeness are likely to be able to deal with more disagreement than
those people who are low in argumentativeness. It is believed that conflict in interpersonal communication is in large part (in conjunction with the level of liking between
the people) a function of the tolerance of disagreement of the interactants. Alpha reliability estimates for the TFD scale can be expected to be in the neighborhood of.85.
Instructions: This questionnaire involves people's feelings and orientations. Hence, there are no right or wrong answers. We just want you to indicate your reaction to each item. All responses are to reflect the degree to which you believe the item applies to you. Please use the following system to indicate the degree to which you agree that the item describes you:
5 = Strongly Agree, 4 = Agree, 3 = Undecided, 2 = Disagree, 1 = Strongly Disagree
___ 1. It is more fun to be involved in a discussion where there is a lot of disagreement.
___ 2. I enjoy talking to people with points of view different than mine.
___ 3. I don't like to be in situations where people are in disagreement.
___ 4. I prefer being in groups where everyone's beliefs are the same as mine.
___ 5. Disagreements are generally helpful.
___ 6. I prefer to change the topic of discussion when disagreement occurs.
___ 7. I tend to create disagreements in conversations because it serves a useful purpose.
___ 8. I enjoy arguing with other people about things on which we disagree.
___ 9. I would prefer to work independently rather than to work with other people and have disagreements.
___10. I would prefer joining a group where no disagreements occur.
___11. I don't like to disagree with other people.
___12. Given a choice, I would leave a conversation rather than continue a disagreement.
___13. I avoid talking with people who I think will disagree with me.
___14. I enjoy disagreeing with others.
___15. Disagreement stimulates a conversation and causes me to communicate more.
Step 1. Add the scores for the following items: 1, 2, 5, 7, 8, 14, 15.
Step 2. Add the scores for the following items: 3, 4, 6, 9, 10, 11, 12, 13.
Step 3. Complete the following formula: TFD = 48 + total of Step 1 - total of Step 2.
Scores above 46 indicate High TFD. Scores below 32 indicate Low TFD. Scores between 32 and 46 indicate moderate TFD.
Teven, J. J., Richmond, V. P., & McCroskey, J. C. (1998). Measuring tolerance for disagreement. Communication Research Reports, 15, 209-217.
Richmond, V. P., & McCroskey, J. C. (2001). Organizational communication for survival: Making work, work (2nd Ed.) Chapter 14. Needham Heights, MA: Allyn & Bacon.

source: HuggingFaceFW/fineweb-edu


effected by other characteristics, like color. Color is a factor in the data so it will be treated as discrete.
ppc <- ggplot(data = diamonds, aes(x = color, y = price/carat))
ppc + geom_point()
plot of chunk unnamed-chunk-18
This could suggest a strong relationship but maybe not. It depends on the center of the distributions for each color.
Jitter
ppc + geom_jitter()
plot of chunk unnamed-chunk-19
Jittering moves points a little to reduce overplotting. This makes it look the centers are closer to being equal.
Using alpha can further reduce the effect of overplotting.
ppc + geom_jitter(alpha = 0.1)
plot of chunk unnamed-chunk-20
This is more informative, still. Jittering is a common way to reduce overplotting. It can also appear as an option within other geoms that plot points of lines.
Boxplots
Of course, a common way of plotting contionuous ~ discrete is a boxplot.
ppc + geom_boxplot()
plot of chunk unnamed-chunk-21
This makes it clear that the medians per color for price/carat are about the same, and certainly not statistically different.
You can decorate the boxes using a fill, which is another aesthetic.
ppc + geom_boxplot(aes(fill = color))
plot of chunk unnamed-chunk-22
# or fill all as gray
ppc + geom_boxplot(fill = "gray")
plot of chunk unnamed-chunk-22
Plotting distributions with histograms and density plots
The most basic plot of a distribution is a histogram. When plotting histograms it is important to experiment with varied bin widths top see what is the distribution at different levels of detail.
Study the distribution of the carat variable.
summary(diamonds$carat)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.200 0.400 0.700 0.798 1.040 5.010
pcarat <- ggplot(data = diamonds, aes(x = carat))
pcarat + geom_histogram()
## stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust
## this.
plot of chunk unnamed-chunk-24
Outliers in the data are skewing the picture of the majority. We need to restrict the scale of carat in the data, or the region we're plotting.
pcarat + geom_histogram() + scale_x_continuous(limits = c(0, 3))
## stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust
## this.
plot of chunk unnamed-chunk-25
Now that that's fixed, let's experiment with bin widths.
pcarat + geom_histogram(binwidth = 1) + scale_x_continuous(limits = c(0, 3))
plot of chunk unnamed-chunk-26
pcarat + geom_histogram(binwidth = 0.1) + scale_x_continuous(limits = c(0, 3))
plot of chunk unnamed-chunk-27
pcarat + geom_histogram(binwidth = 0.01) + scale_x_continuous(limits = c(0,
 3))
## Warning: position_stack requires constant width: output may be incorrect
plot of chunk unnamed-chunk-28
Density plots give a continuous estimate to the distribution.
pcarat + geom_density() + scale_x_continuous(limits = c(0, 3))
## Warning: Removed 32 rows containing non-finite values (stat_density).
plot of chunk unnamed-chunk-29
The stat_density function created the plotted data. Parameters that effect how the density estimate is calculated are passed through the geom function.
# bumpier
pcarat + geom_density(adjust = 0.5) + scale_x_continuous(limits = c(0, 3))
## Warning: Removed 32 rows containing non-finite values (stat_density).
plot of chunk unnamed-chunk-30
# smoother
pcarat + geom_density(adjust = 5) + scale_x_continuous(limits = c(0, 3))
## Warning: Removed 32 rows containing non-finite values (stat_density).
plot of chunk unnamed-chunk-30
If you also map an aesthetic to a discrete variable, like color or fill, it splits the data on this variable and plots them overlaid or stacked.
pcarat + geom_histogram(binwidth = 0.1, aes(fill = color)) + scale_x_continuous(limits = c(0,
 3))
plot of chunk unnamed-chunk-31
# Here color is the variable from the dataset
pcarat + geom_histogram(binwidth = 0.1, aes(color = color)) + scale_x_continuous(limits = c(0,
 3))
plot of chunk unnamed-chunk-32
# here, color is an aesthetic and the variable in the data This just
# colored the border and left the fill as black
pcarat + geom_density(aes(color = color)) + scale_x_continuous(limits = c(0,
 3))
## Warning: Removed 1 rows containing non-finite values (stat_density).
## Warning: Removed 1 rows containing non-finite values (stat_density).
## Warning: Removed 1 rows containing non-finite values (stat_density).
## Warning: Removed 1 rows containing non-finite values (stat_density).
## Warning: Removed 6 rows containing non-finite values (stat_density).
## Warning: Removed 13 rows containing non-finite values (stat_density).
## Warning: Removed 9 rows containing non-finite values (stat_density).
plot of chunk unnamed-chunk-33
pcarat + geom_density(aes(fill = color)) + scale_x_continuous(limits = c(0,
 3))
## Warning: Removed 1 rows containing non-finite values (stat_density).
## Warning: Removed 1 rows containing non-finite values (stat_density).
## Warning: Removed 1 rows containing non-finite values (stat_density).
## Warning: Removed 1 rows containing non-finite values (stat_density).
## Warning: Removed 6 rows containing non-finite values (stat_density).
## Warning: Removed 13 rows containing non-finite values (stat_density).
## Warning: Removed 9 rows containing non-finite values (stat_density).
plot of chunk unnamed-chunk-34


Molecules and Cells
Indexed in /covered by CAS, KoreaScience & DOI/Crossref:eISSN 0219-1032 pISSN _PHONE_
Fig. 3.
Download original image
Fig. 3. (A) Chemical structure of iodoacetate and MMF. The red and purple round-squares show common and different chemical structures for both inhibitors, respectively. (B) The difference in inhibitory modes between iodoacetate and MMF.
Mol. Cells 2019;42:597~603 _URL_
© Mol. Cells


Accepted Java solution
 - 0
 D
 This function returns the node value which makes the gap minimum. Notice that function should return the parent node when current node is null. Therefore, the left and right value are intinalized as the root value in the beginning.
 public class Solution {
 // time complexity: o(n)
 public int closestValue(TreeNode root, double target) {

 int left = root.val;
 int right = root.val;
 if(root.left!=null)
 left = closestValue(root.left, target);
 if(root.right!=null)
 right = closestValue(root.right, target);

 if(Math.abs(root.val-target)<=Math.abs(left-target)&&Math.abs(root.val-target)<=Math.abs(right-target))
 return root.val;
 if(Math.abs(root.val-target)>Math.abs(left-target)&& Math.abs(right-target)>Math.abs(left-target))
 return left;
 else
 return right;

 }

 }
Log in to reply

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.


text:
An excerpt from H. Petard, "A contribution to the mathematical theory of big game hunting," The American Mathematical Monthly, vol. 45, no. 7, pp. 446-447, 1938:
The Hilbert, or axiomatic, method. We place a locked cage at a given point of the desert. We then introduce the following logical system.
- Axiom I. The class of lions in the Sahara Desert is non-void.
- Axiom II. If there is a lion in the Sahara Desert, there is a lion in the cage.
- Rule of Procedure. If p is a theorem, and "p implies q" is a theorem, then q is a theorem.
- Theorem I. There is a lion in the cage.
The method of inversive geometry. We place a spherical cage in the desert, enter it, and lock it. We perform an inversion with respect to the cage. The lion is then in the interior of the cage, and we are outside.
The method of projective geometry. Without loss of generality, we may regard the Sahara Desert as a plane. Project the plane into a line, and then project the line into an interior point of the cage. The lion is projected into the same point.
The Bolzano-Weierstrass method. Bisect the desert by a line running N-S. The lion is either in the E portion or in the W portion; let us suppose him to be in the W portion. Bisect this portion by a line running E-W. The lion is either in the N portion or in the S portion; let us suppose him to be in the N portion. We continue this process indefinitely, constructing a sufficiently strong fence about the chosen portion at each step. The diameter of the chosen portions approaches zero, so that the lion is ultimately surrounded by a fence of arbitrarily small perimeter.


text:
Chelson Lane Wood £55,000 Freehold
- Near Sidford, Sidmouth, Devon
- nearly 2 ¾ acres
Stone access track and the edge of the woodland
Rustic picnic bench and camping area
Broadleaved woodland grove
Valuable deadwood habitat
Heather filled ground floor
Ride stop at entrance
Fresh deer poo
Historic gulley along the eastern boundary
Large oak tree
Private parking area
Path through the larch trees
Chelson Lane Wood has a variety of habitats as well as plentiful trees for timber.
Good access allows easy enjoyment, whether popping in for an hour or two or for a weekend of camping under the stars.
The purchasers of the woodland will be asked to enter into a covenant to ensure the quiet and peaceful enjoyment of adjoining woodlands and meadows.
Numerous tree species are found within this established woodland. The upper reaches of the southern part of the woodland are sun soaked and the species found here reflect this. Scots Pine trees (Pinus Sylvestris) are found here and their well spaced aspect allows light to penetrate the forest floor. Scots pine trees are great for wildlife, from stump dwelling mosses to Greater Spotted Woodpeckers feeding of the pine cones. Traditionally pines trees were planted as windbreaks for farms and in clusters to act as a reference for travellers. There are also spruce trees here.
In-between the pines are naturally regenerating native trees which include birch and holly.
The lower, northern part of the woodland is mainly planted larch trees - an excellent tree for fence posts and forestry projects as it is resistant to rot. In the autumn the needles turn golden before falling, a glorious spectacle within the local landscape.
A grove of mature broadleaved trees are found at the north western fringes. Here older, knarled English oak trees are found with other species growing in the shrub layer of the woodland.
Sat upon the picnic bench you will be able to observe and hear a number of bird species that frequent this peaceful environment. Siskins can be seen feeding on the seeds of larch cones or a goldcrest using its specialised beak to feed on insects hidden within the pine cones. Whilst high above buzzards soar effortlessly in the thermals.
Elsewhere in the locality there are signs of badger activity and within Chelson Lane Wood you may spot one of these mainly nocturnal mammals trundling through the undergrowth. Roe deer are also present.
Meander north through the trees and discover a rustic picnic bench, ideal for family and friends to sit around enjoying a picnic whilst savouring the peaceful atmosphere of the wooded environment.
Access, tracks and footpaths
Access is via a stoned track from a quiet country lane not far from the charming village of Sidford.
At the entrance to Chelson Lane Wood there is a private parking area.
The track that borders the western boundary is a bridleway and gives the woodland owner direct access to a network of other footpaths and bridleways from which to explore this stunning part of Devon. There are no pubic rights of way through the woodland.
Rights and covenants
Enjoy forest yoga among towering trees or a picnic upon the rustic bench in a glade.
The more adventurous could set up a zip wire within the trees.
A calm place to be, ideal for occasional overnight stays whilst gazing at the stars and observing wildlife.
Local area and history
Chelson Lane leads to Harcombe Hill where this woodland is situated. Historically just off this lane and near the main entrance to the woodland at Harcombe Hill there were a series of 'Marl pits', signs of which can still be seen to this day.
The nearby coastline around Seaton and Sidmouth is the beginning of a World Heritage Site consisting of 95 miles of Jurassic coastline that begins at nearby Orcombe point
There are a number of thriving, local small scale fishing industries based along the coastline with day boats catching fish and crabs. The bass fishery attracts many anglers in season and there are a number of chartered fishing trips available.
Please do enjoy your visit to Chelson Lane Wood, but take care of any undulating ground or trip hazards as well as standing or leaning deadwood which has been left as a wildlife habitat.
Particulars and plans were prepared by our local manager, Stuart Brooking.
All boundaries are indicated with green markings on posts and trees.
The northern and southern boundaries are along the edge of the two access tracks.
The western and eastern boundaries are indicated by a line of fence posts.
Find this wood
- OS Landranger: OS No. 192
- Grid ref: SY 160 914
- Nearest post code: EX10 0PR
- GPS coordinates: 50.7168, -3.19112
You can view Chelson Lane Wood at anytime by taking a copy of the details with you. The woodland can be accessed on foot.
- From Honiton take the A375 south towards Sidford & Sidmouth.
- At the top of the hill out of Honition turn left at Putts Corner onto Seaton Road, signposted to Seaton & Farway.
- Stay on this road for around 2 miles until you get to Chelson Corner Cross where you turn right onto Beech Tree Lane.
- Follow this road for about 1/2 a mile and take the first turning on your right at Chelson Cross, opposite 'Long Chimney Farm' which is signposted to Harcombe.
- Stay on this winding road for about 1.5 miles until you see a lay-by on your right at the top of a hill with 2 field gates. Carry on past these gates and down the hill until you see a forestry track in front of you on a left hand bend in the road. This is the access track and has a 'public bridleway' sign on a post here.
- Park on the left hand side of the track at the entrance and walk up to the main woodland entrance gate.
- Walk through the pedestrian gap in the gateway and take the right hand track up the hill.
- Turn right at the top and immediately left.
- Walk along the forestry track for another 200 metres and you will see the entrance to Chelson Lane Wood on your left indicated by a 'Chelson Lane Wood' name sign on a ride stop.
- Satnav/GPS note: the postcode EX10 0PR is for the point shown by the red dot on the location maps number 2.
Please note this wood is owned by woodlands.co.uk.
Our regional managers are often out working in our woodlands, so if you email an offer and want to be sure it has been received, please phone our manager on their mobile phone. The first offer at the stated price which is accepted, whether by phone or email, has priority.
Please take care when viewing as the great outdoors can contain unexpected hazards and woodlands are no exception. You should exercise common sense and caution, such as wearing appropriate footwear and avoiding visiting during high winds.
These particulars are for guidance only and, though believed to be correct, do not form part of any contract. Woodland Investment Management Ltd hereby give notice under section 21 of the Estate Agents Act 1979 of their interest in the land being sold.


Customize CUDA Fortran Profiling with NVTX
The NVIDIA Tools Extension (NVTX) library lets developers annotate custom events and ranges within the profiling timelines generated using tools such as the NVIDIA Visual Profiler (NVVP) and NSight. In my own optimization work, I rely heavily on NVTX to better understand internal as well as customer codes and to spot opportunities for better interaction between the CPU and the GPU.
Two previous Pro Tip posts on Parallel Forall showed how to use NVTX in CUDA C++ and MPI codes. In this post, I'll show how to use NVTX to annotate the profiles of Fortran codes (with either CUDA Fortran or OpenACC).
NVTX has a lot of features, but here I'll focus on using it to annotate the profiler output with timeline markers using nvtxRangePush() and nvtxRangePop(). I'll show you how to insert markers with custom labels and colors. Continue reading
CUDA 7.5
Simple, Portable Parallel C++ with Hemi 2 and CUDA 7.5
The last two releases of CUDA have added support for the powerful new features of C++. In the post The Power of C++11 in CUDA 7 I discussed the importance of C++11 for parallel programming on GPUs, and in the post New Features in CUDA 7.5 I introduced a new experimental feature in the NVCC CUDA C++ compiler: support for GPU Lambda expressions. Lambda expressions, introduced in C++11, provide concise syntax for anonymous functions (and closures) that can be defined in line with their use, can be passed as arguments, and can capture variables from surrounding scopes. GPU Lambdas bring that power and convenience to writing GPU functions, letting you launch parallel work on the GPU almost as easily as writing a for loop.
In this post, I want to show you how modern C++ features combine to enable a higher-level, more portable approach to parallel programming for GPUs. To do so, I'll show you Hemi 2, the second release of a simple open-source C++ library that I developed to explore approaches to portable parallel C++ programming. I have written before about Hemi on Parallel Forall, but Hemi 2 is easier to use, more portable, and more powerful.
hemi-logo-blogIntroducing Hemi 2
Hemi simplifies writing portable CUDA C/C++ code. With Hemi,
 - you can write parallel kernels like you write for loops—in line in your CPU code—and run them on your GPU;
 - you can launch C++ Lambda functions as GPU kernels;
 - you can easily write code that compiles and runs either on the CPU or GPU;
 - kernel launch configuration is automatic: details like thread block size and grid size are optimization details, rather than requirements.
With Hemi, parallel code for the GPU can be as simple as the parallel_for loop in the following code, which can also be compiled and run on the CPU.
void saxpy(int n, float a, const float *x, float *y)
 hemi::parallel_for(0, n, [=] HEMI_LAMBDA (int i) {
Hemi is BSD-licensed, open-source software, available on Github. Continue reading
Combine OpenACC and Unified Memory for Productivity and Performance
The post Getting Started with OpenACC covered four steps to progressively accelerate your code with OpenACC. It's often necessary to use OpenACC directives to express both loop parallelism and data locality in order to get good performance with accelerators. After expressing available parallelism, excessive data movement generated by the compiler can be a bottleneck, and correcting this by adding data directives takes effort. Sometimes expressing proper data locality is more effort than expressing parallelism with loop directives.
Wouldn't it be nice if programs could manage data locality automatically? Well, this is possible today with Unified Memory (on Kepler and newer GPU architectures). In this post I demonstrate how to combine OpenACC with Unified Memory to GPU-accelerate your existing applications with minimal effort. You can download the source code for the example in this post from the Parallel Forall GitHub repository.
Jacobi Iteration with Heap Memory
I'll use the popular Jacobi iteration example code which is representative of many real-world stencil computations. In contrast to the previous OpenACC post, I modified the array data allocation to use heap memory instead of using automatic stack-allocated arrays. This is a more common scenario for real applications since real-world data arrays are often too large for stack memory. This change also makes it a more challenging case for OpenACC since the compiler no longer knows the size of the arrays. The following excerpt shows the main loop of the Jacobi iteration with 2D index computation. Continue reading
Increasing the Luminosity of Beam Dynamics with GPUs
Adrian_CERNWhat is dark matter? We can neither see it nor detect it with any instrument. CERN is upgrading the LHC (Large Hadron Collider), which is the world's largest and most powerful particle accelerator ever built, to explore the new high-energy frontier.
The most technically challenging aspects of the upgrade cannot be done by CERN alone and requires collaboration and external expertise. There are 7,000 scientists from over 60 countries working to extend the LHC discovery potential; the accelerator will need a major upgrade around 2020 to increase its luminosity by a factor of 10 beyond the original design value.
Ph.D. student Adrian Oeftiger attends EPFL (École Polytechnique Fédérale de Lausanne) in Switzerland which is one of the High Luminosity LHC beneficiaries. His research group is working to parallelize their algorithms to create software that will offer the possibility of new kinds of beam dynamics studies that have not been possible with the current technology.
Brad: How is your research related to the upgrade of the LHC?
Adrian: My world is all about luminosity; increasing the luminosity of particle beams. It is all about making ultra-high-energy collisions of protons possible, and at the same time providing enough collisions to enable fundamental particle physics research. That means increasing the luminosity. I'm doing my Ph.D. in beam dynamics in the field of accelerator physics.
High Luminosity LHCThese days, high-energy particle accelerators are the tools of choice to analyze and understand the fundamental building blocks of our universe. The huge detectors at the Large Hadron Collider (LHC) at CERN, buried about a hundred meters underground in the countryside near Geneva, need ever-increasing collision rates (hence luminosity!): they gather statistics of collision events to explore new realms of physics, to detect extremely rare interaction combinations and the tiniest quantities of new particles, and to find explanations for some of the numerous wonders of the universe we live in. What is the dark matter which makes up 27% of our universe made of? Why is the symmetry between anti-matter and ordinary matter broken, and why do we find only the latter in the universe?
CERN is preparing for the High Luminosity LHC, a powerful upgrade of the present accelerator to increase the chances to answer some of these fundamental questions. Increasing the chances translates to: we need more collisions, so we need higher luminosity. Continue reading
CUDA 7.5
CUDA 7.5: Pinpoint Performance Problems with Instruction-Level Profiling
[Note: Thejaswi Rao also contributed to the code optimizations shown in this post.]
Today NVIDIA released CUDA 7.5, the latest release of the powerful CUDA Toolkit. One of the most exciting new features in CUDA 7.5 is new Instruction-Level Profiling support in the NVIDIA Visual Profiler. This powerful new feature, available on Maxwell (GM200) and later GPUs, helps pinpoint performance bottlenecks, letting you quickly identify the specific lines of source code (and assembly instructions) limiting the performance of GPU code, along with the underlying reason for execution stalls.
In this post, I demonstrate Instruction-Level Profiling by showing how it helped understand and improve the performance limitations of a CUDA kernel that implements the Iterative Closest Point algorithm (the original source code, by Thomas Whelan, is available on Github). I'll show how instruction-level profiling makes it easier to apply advanced optimizations, helping speed up the example kernel by 2.7X on an NVIDIA Quadro M6000 GPU.
Profiling the kernel using the Guided Analysis feature of the Visual Profiler showed that the kernel performance was bound by instruction and memory latency. Latency issues indicate that the hardware resources are not used efficiently since most warps are stalled by a dependency on a data value from a previous math or memory instruction. Figure 1 shows that the compute units are only 40% utilized and memory units are around 25% utilized, so there is definitely room for improvement.
Figure 1 Kernel Performance Limiter (Bound by instruction and memory latency).
Stall Analysis in Previous Profiler Versions
Before CUDA 7.5, the Visual Profiler was only capable of pointing out performance issues at the application or CUDA kernel level. For stall latency analysis, the CUDA 7.0 Visual Profiler produces the pie chart in Figure 2 by collecting various stall reason events for the entire kernel.
Figure 2 Legacy (CUDA 7.0) pie chart for stall reasons (generated using events collected at kernel level).
Figure 2 Legacy (CUDA 7.0) pie chart for stall reasons (generated using events collected at the kernel level).
This pie chart shows that the two primary stall reasons in this kernel are synchronization and memory dependencies. But if I look into the kernel code, there are lots of memory


#!/usr/bin/env python # coding: utf-8 # # Distributed training on AWS # In this tutorial we will learn: # 1. How to start a cluster on AWS for use with Classy Vision; # 2. How to start a new project on the cluster; # 3. How to launch training jobs on the cluster; # # ## 1. Setup # # Make sure you have Classy Vision installed, as described in our [Getting started](_URL_ tutorial. # # For this tutorial we will also need the Classy Vision sources, you can clone it with this command (on your terminal): # In[ ]: get_ipython().system(' git clone _URL_ # In this tutorial we'll use [Ray](_URL_ to manage the AWS resources. Install Ray and all its required dependencies with: # In[ ]: get_ipython().run_line_magic('cd', './ClassyVision/examples/ray') get_ipython().system(' pip install -r requirements.txt') # You should also set up your AWS CLI and credentials as described [here](_URL_ To make sure everything is working, run on your terminal: # In[ ]: get_ipython().system(' aws ec2 describe-instances') # That should print a JSON file with all your current AWS instances (or empty if you don't have any). # ## 2. Cluster setup # We have a sample cluster configuration file stored in the Classy Vision repository, under './examples/ray/cluster_config.yml'. Let's verify that Ray can start the cluster appropriately: # In[ ]: get_ipython().system(' ray up cluster_config.yml -y') # That will take about 10 minutes, and at the end you should see a message explaining how to connect to the cluster. Assuming everything worked successfully, now tear down the cluster: # In[ ]: get_ipython().system(' ray down cluster_config.yml -y') # We will now set up an EFS volume to store our code and datasets. Follow [this tutorial](_URL_ to setup the EFS volume in your AWS account. # # When you're done with that tutorial, go back to the EFS section in the AWS console, find your filesystem there and click 'Manage file system access'. Add the 'ray-autoscaler-default' security group to the list of security groups allowed to use your EFS volume. That security group should have been created by the 'ray up' command we ran earlier. # # You should now have an identifier for your EFS volume. Open 'cluster_config.yml' in your favorite text editor and replace '{{FileSystemId}}' with your own EFS id. We are now ready to launch our cluster again: # In[ ]: get_ipython().system(' ray up cluster_config.yml') # ## 3. Create a project # # When it's done, let's attach to the head node of the cluster: # In[ ]: get_ipython().system(' ray attach cluster_config.yml') # That will give you an SSH session into the head node, which coordinates all the worker nodes in Ray. In our example configuration file, the head node is a CPU-only machine, and the workers all have GPUs. # # Both the head node and the worker nodes will have the same EFS volume mounted, so we'll use that to send code from the head to the workers. The following commands are meant to run on the head node (e.g. in the terminal prompt you got from 'ray attach'). Let's start a project in the EFS folder: # In[ ]: $ cd efs $ classy-project my_project # ## 4. Start training # # Classy Vision comes with a launcher analogous to 'torch.distributed.launch', but that launches jobs on multiple machines using Ray. To use it, simply run: # In[ ]: $ python -m classy_vision.distributed.launch_ray --nnodes=2 --use_env ~/efs/my_project/classy_train.py --config ~/efs/my_project/configs/template_config.json --distributed_backend ddp # Your first time running this you might see logs like 'Not enough GPUs available'. That's normal, and it's because the worker nodes are still being set up. The 'ray up' command should have printed a command line you can use to follow their progress. But there's no need to do anything, the launcher will wait until the workers are available and execute the command automatically. # # That's it! When that command is done it should print the folder where the checkpoints are. # # > Note that we specified the full absolute path for the config in the argument list. That's because the 'classy_train.py' command is running on a remote machine and we are relying on the fact that the EFS folder is mounted at exactly the same location on the head and worker nodes. Keep that in mind if you modify this setup. # # > Remember to tear down the cluster with 'ray down cluster_config.yml' when you're done. You will be billed as long as the machines are up, even when not using them. # ## 5. Troubleshooting # # If you hit an error during this tutorial, here are a few things that might help to debug what is going on: # # ### Make sure all workers have initialized properly # # When the 'ray up' command finishes, it prints a command line to tail the logs. It should look like: # '''bash # ray exec cluster_config.yml 'tail -n 100 -f /tmp/ray/session_*/logs/monitor*' # ''' # # Run that command and look for any errors. When the workers are done initializing, you should see '-- StandardAutoscaler: 2/2 target nodes (0 pending)' printed repeatedly on the logs. # # ### Make sure EFS volumes are mounted on all machines # # Sometimes the EFS package fails to install on workers. To verify EFS is working, get the worker node IPs with 'ray get-worker-ips cluster_config.yml', then ssh on them with: # '''bash # ssh -i ~/.ssh/ray-autoscaler_us-west-2.pem ubuntu@ # ''' # # Once in a worker machine, run 'df -h' to list all the current mounts. Verify '/home/ubuntu/efs' is on that list. If it's not, look for the EFS setup commands on the 'cluster_config.yml' file and run them yourself. That should clarify what the issue is. If you didn't setup the EFS security groups correctly (as described in step 2), the 'mount' command will hang for a few minutes then fail. # # ## 6. Conclusion # # In this tutorial we covered how to start using Classy Vision on AWS using Ray. For more information about Ray, check out their [repository](_URL_ The next tutorials ([[1]](_URL_ [[2]](_URL_ [[3]](_URL_ will demonstrate how to customize the project created by the 'classy-project' utility for your own needs. To learn more about how to train models in Classy Vision and how to use Tensorboard to visualize training progress, check out our [Getting started](_URL_ tutorial.


text:
Former Torpedoes: Russia Increases the Accuracy and Reduces the Cost
The latest torpedo homing technology that boosts the target detection range and the kill accuracy has passed qualification trials in Russia, the press office of the Tecmash Group [part of the Technodinamika conglomerate within the state tech corporation Rostec].
The new torpedo homing equipment has been developed by the Scientific Research Institute of Electronic Devices JSC (NIIEP, part of Rostec). The system features smaller dimensions, lower power consumption, and reduced cost. NIIEP is a leading Russian enterprise to create near-location systems in the range of electromagnetic waves from decimetre to optical and onboard computers and automation for various weapons systems and military equipment. The enterprise has developed and produced proximity fuse systems for various missile weapons, including S-300, Tor, Kinzhal and Iskander-M complexes, Grad, Smerch and Tornado multiple rocket launchers.
Russian torpedoes will increase the target detection range and increase the likelihood of its defeat, said the Deputy General Director of NIIEP Valery Edvabnik. He noted that the new equipment "is characterized by smaller dimensions, lower power consumption and reduced cost", reports TASS.
For the development of professionals, NIIEP awarded a presidential scholarship.In February, it was reported that Russia has decided to upgrade Soviet torpedoes.