Saturday, December 17, 2016

CIA and FBI agree that Russia intervened in the election to benefit Donald Trump.



WASHINGTON —The FBI is now backing the CIA’s assessment that Russian hackers sought in part to tilt the election in favor of President-elect Donald Trump when they breached American political institutions resulting in the theft of a trove of sensitive communications, a U.S. official said Friday.
President Obama, meanwhile, indicated Friday that Russian President Vladimir Putin must have been aware of the cyber attacks.
"Not much happens in Russia without Vladimir Putin knowing about it," Obama told reporters Friday. "This happened at the highest levels of the Russian government.'' Obama said he was awaiting a complete review of the matter by intelligence and and national security officials before he leaves office next month.

The FBI's support of the CIA's assessment, according to the official familiar with the bureau's position but not authorized to comment publicly, comes after FBI Director James Comey and National Intelligence Director James Clapper had meetings with CIA Director John Brennan earlier this week to review the agency's conclusion.
The FBI had indicated as recently as Monday that the CIA’s assessment — delivered earlier this month to some members of Congress — may prove accurate but lacked the definitive evidence necessary for the agency to reach such a conclusion.
That changed, the official said, after the high-level meetings resulted in a consensus on Russia’s motive, a conclusion that so far has been flatly rejected by Trump and has roiled the capital’s political establishment.
The Washington Postfirst reported the development Friday.
Russia, which has dismissed the CIA’s findings, was publicly identified in October as having breached the systems of the Democratic National Committee, resulting in theft of a trove of sensitive communications. 
Those communications were later provided to WikiLeaks and DCLeaks, which published the information in the months and weeks leading up to the general election. The leaks prompted the resignation of Democratic National Committee Chairwoman Debbie Wasserman Schultz on the eve of the party's national convention in July. The leaks also led supporters of Sen. Bernie Sanders to protest that the Democratic primaries were rigged against him.
At the time Russia was publicly identified, Clapper and Homeland Security Secretary Jeh Johnson concluded that the disclosures were "intended to interfere with the U.S. election process.''
The FBI had stopped short of endorsing the CIA's new assessment that Russia was hoping to boost Trump, the official said, because it had been considering how much weight to ascribe to multiple possible motives: Was Russia attempting to damage Democratic nominee Hillary Clinton's ability to govern, betting that she would be elected? Was it retaliation against Clinton for her past criticism of Russian elections? Was it intended to undermine confidence in the American political system? Or was it a combination of all?
The official said the bureau continued to weigh those and other options. But in the end, the collective effect of the Russian action was to assist Trump.

polymorphism



According to wikipedia , polymorphism is the provision of a single interface to entities of different types.[1] A polymorphic type is one whose operations can also be applied to values of some other type, or types.

 More specifically, it is the ability to redefine methods for derived classes. For example, given a base class shape, polymorphism enables the programmer to define different area methods for any number of derived classes, such as circles, rectangles and triangles. No matter what shape an object is, applying the area method to it will return the correct results. Polymorphism is considered to be a requirement of any true object-oriented programming language (OOPL)

An example of polymorphism :



Advantage of polymorphism:

One of the best practices of OOP is "program to interfaces". The overall meaning of this is to use interface types where you normally use concrete classes.

Let's take an example:
You need to write a class Payroll. It's responsibility is to generate payroll for employees of the organization. Let's try to solve this problem without using polymorphism first.
For a Manager, the method would like this:
public void generatePayroll(Manager manager)
Now, for another kind of employee e.g. Accountant, there would be one more method like this:
public void generatePayroll(Accountant accountant)

Can you notice a code smell here? 
We are adding a method for every type of Employee. The code is tightly coupled. 
Apart from redundancy in the code, there is a maintenance nightmare: update all methods in case the organization decides to change it's payroll process.

Polymorphism to the rescue:
The object hierarchy looks like this: Manager is a type of Employee, Accountant is another type of Employee. 
So, we can define Manager, Accountant classes to extend/implement the Employee class. AND change the generatePayroll method to accept an argument of type Employee. So, the method signature would look like this:
 public void generatePayroll(Employee employee)

Result:
We have just removed the code smell. We no longer need to have the redundancy in code. If there is a change in the organization's payroll process, the change is minimal i.e. in only one method.
In future, your system might add another type of Employee. But you don't have to worry. The generatePayroll(Employee employee) method is already capable of handling it's payroll process. 

This is one simple example. As your code grows complex, you would appreciate the importance of polymorphism more. Many design patterns use polymorphism as the key feature.

hope this helps please like my facebook page to get updated about my blogs....