Friday, 8 January 2016
What do companies like Apple, Google, and Facebook do to prevent hacking?
Good question.
These mega giants (Google, Apple, Facebook, Amazon, Microsoft,
etc) aren’t heard in the media for being rendered to cyberattacks.
Their multi-billion dollar businesses rely on their tech innovations, so
if any of that information is ever leaked, we’re talking about losing
hundreds of millions of dollars.
So, what do these guys do to protect their secrets? Here is a list of just a few things that they actually do:
1. They use sophisticated firewall systems.
They
have a network of highly sophisticated and complicated firewalls to
prevent hackers from compromising incoming and outgoing traffic. This is
not your average Joe’s ZoneAlarm subscription—these are customized
firewall systems that monitor incoming and outgoing traffic to block
hackers’ attempts to enter company networks and web apps.
2. They spend millions of dollars on a star testing team.
Each
of these companies has in-house security teams that test and monitor
their software. Anytime there is an abnormality in their systems, they
have a team analyzing it and working around-the-clock to remedy the
situation. This way, if a hacker ever somehow did make it through their
intense firewall systems, they have a legion of engineers monitoring
their first attempts and resolving the situation.
3. They have physical security.
Remember the movie, Ocean’s 11?
In order for the team to hack into all those casinos’ security systems,
they needed to physically get inside the casino. Not all hacks can be
successful without some physical effort—remember when “dumpster-diving
hacking” used to be big? These successful companies make it policy to
shred all company documents and use high-security when anyone enters
their facilities. This way no questionable characters can enter their
campuses.
4. They buy a ridiculous amount of bandwidth.
This
one isn’t as obvious, but to fight against DDoS attacks, they buy a
huge amount of extra bandwidth. This is to mitigate the risk of a
volumetric attack (i.e. DDoS attacks). I write more about this in a post
on how to prevent DDoS attacks, if you are interested in learning more.
5. They educate their employees about cybersecurity regularly.
This
is often overlooked, but it is imperative to educate employees on how
to have good cyber hygiene. Things like not e-mailing important customer
info via e-mail, or even storing customer PII is often unknown by
employees. These companies have mandatory training to ensure that each
employee understands their responsibility in their company’s cyber
welfare.
These multi-billion tech businesses make it a
company goal to have world-class cyber security. Amazon’s cyber security
is so advanced that they even won a bid over IBM
to build a cyber security team for the CIA. Their success depends on
the level of their security, so of course they would spend hundreds of
millions of dollars on it.
However, although small businesses
cannot afford to spend millions of dollars on web security, the need for
web protection is still the same. In my experiences, using a comprehensive web app firewall service as well as educating employees about good cyber hygiene is often enough protection.
Monday, 4 January 2016
What are the best websites for Java Projects with source code for CSE Students?
http://projectsgeek.com/java-mini-projects-with-source-code
For a Core Java Developer , Questions around following topics should be good.
- OOPs Concepts
- Abstract Classes and Interfaces
- Constructors
- Overloading and Overriding
- File IO and Serialization
- Collections - List , Map , Set - Search, Sorting Algorithms
- Access Specifiers
- Exceptions - Checked , Unchecked
- Generics
- Java Keywords - static , final , volatile, synchronized , transient, this , super etc.
- JVM and Memory Management
- MultiThreading and Synchronization
- HashCode and Equals
- Design Patterns
- Dependency Injection
- Reflection API
- Java 8 features - Lambda Expressions , Default Methods.
Here is a list of 200+ questions on Core Java - Java - Interview Questions and Answers - Quick Reference - One Liners.
If Someone is being hired for a Network / Distributed Application, Following questions can be asked
- Communication Protocols like IP, HTTP, TCP, FTP,UDP
- Synchronous vs Asynchronus Communication
- Sockets
- Technologies like RMI, RCP
- Message Queues
- Interface APIs - JMS, JDBC
- ORMs - EJB ( Session Beans , Entity beans, MDB's ), Hibernate
If someone has to work on a Java based web application then he can be asked questions around following topics -
- JSP / JSF
- Servlets / filters / Interceptors
- Session Management / Transaction Management
- JNDI
- Architectures - n Tier, MVC
- Web Frameworks like Struts / Spring
- Service Oriented Architecture / Web Services - SOAP / Rest
- Web Technologies like HTML, CSS, Javascript and JQuery
- Markup Languages like XML and JSON.
- Application and Web Servers
- Caching
- Cloud service (AWS, SoftLayer, BlueMix)
If someone has to work on Java UI, then questions around following can be expected -
- Applets
- Frameworks like Swing, SWT, AWT
- Advanced Frameworks like JavaFX
Every Developer is expected to have knowledge regarding the Data structures. If you are applying positions for a product / system development companies, lot stress will be given to these Questions.
- Arrays , Linked List
- Search Algorithm and their complexity
- Sorting Algorithms and their complexity
- Trees , Graphs
Every Java Developer is expected to have Database Knowledge so questions around following concepts can be asked
- Database Drivers
- Normalization / Denormalization
- Isolation Levels
- Transaction Management
- SQL Tuning / Optimization
- SQL Queries - Inner Outer Joins, Group By , Having
- Prepared Statement and their benefit.
- Indices , Views
- Stored Procedures
- Triggers
- Cursors
Moreover questions around Tools, Methodologies, Processes can be asked -
- Development Tools - Eclipse / RAD
- Design Tools and Diagrams
- Configuration Management Tools like SVN, Clearcase etc
- Defect Management
- Build Tools like Maven, Ant etc
- Testing - Unit Testing, JUnit , Black box , White Box
- Development Methodologies - Agile / Waterfall / Iterative
- Requirement Analysis
- Release Management
and then Interviewer can also ask open ended questions.
- Which feature would you most like to see added to Java?
- Which feature would you most like to be removed from Java?
- Have you gone through some of the features introduced with latest Java version ?
- Do you think removing Perm gen completely in Java 8 is a good idea ?
- How would you go about debugging an exception ?
- How does Java differ from other programming languages you've worked with?
- How do you document your code ?
- If you are given a choice to implement something using javascript or Java ? Which technology will you use and why ?
- What Design Patterns you have used in your project ?
- Which Web application Framework - Struts, Spring do you like and Why ?
- Which IDE, Source Control,Build tool you think is best ?
- Which development methodology you would like to work with ?
- Do you think using open source servers like Apache , Tomcat is a better idea than paid servers ?
- Which testing tools do you use ?
- What are the most important performance issues in Java web applications
- What are the most important technologies / specifications in Java EE 6?
- Do you like pair programming ? What's your views on Agile methodology comparing to SDLC ?
Here are few links that might help.
200+ Java / J2EE Interview Questions and Answers
Java - Advanced Interview Questions for Experienced Professionals
Struts Framework - Interview Questions and Answers
Spring framework - Interview Questions and Answers
Hibernate - Interview Questions and Answers - Quick Reference
WAS / WSAD / RAD - Interview Questions and Answers
SVN ( subversion ) Interview Questions and Answers
Interview Questions and Answers on Maven
SVN ( subversion ) Interview Questions and Answers
Interview Questions and Answers on JSON (JavaScript Object Notation)
REST Web Services - Interview Questions and Answers
Java - SWT ( Standard Widget Toolkit ) / JFACE - Interview Questions and Answers
JavaScript interview questions and answers
Interview Questions and Answers on Markup Languages - XML , JSON
Interview Questions and Answers
Online Practice Tests - Java , Spring , Struts , Unix , Design Pattern , Websphere Commerce
Sunday, 3 January 2016
HOW ONE CAN START WITH COMPETITIVE PROGRAMMING.
Here are some steps to get started and be good at it.
- Get comfortable writing code in either of one of these languages C, C++ or Java. Why only C, C++ or Java? Because these are the standard languages allowed in any programming competition.
- If you are already good at C, it is suggested to learn C++. It is the most popular language among competitive programmers because of its speed and an excellent library in the form of STL (Standard Template Library).
- Pick an online judge. Recommended ones are Topcoder and Codeforces.
These sites have high quality of problems and also allow you to see
other’s code post contest completion. These also categorize problems
based on the topic. Some other popular judges include SPOJ, CodeChef (powered by SPOJ) andHackerEarth.
- To begin with, start with simple problems that typically require transformingEnglish to code and does not require any knowledge on algorithms. Solving Div 2 250 (Division 2, 250 points) in Topcoder or Div 2 Problem A in Codeforces is a good start.
- At the early stages of programming one tends to write long pieces of code, which is actually not required. Try to keep codes short and simple.
- Practice these problems until you become comfortable that you can submit it for 240 odd points on any day.
- Start implementing basic(or standard) algorithms. It is suggested to read them from Topcoder tutorials or Introduction to algorithms.
1)
Graph algorithms: Breadth first search(BFS), Depth first search(DFS),
Strongly connected components(SCC), Dijkstra, Floyd-Warshall, Minimum
spanning tree(MST), Topological sort.
2) Dynamic programming: Standard dynamic programming problems such as Rod Cutting, Knapsack, Matrix chain multiplication etc.
3) Number theory: Modular arithmetic, Fermat’s theorem, Chinese remainder theorem(CRT), Euclidian method for GCD, Logarithmic
Exponentiation, Sieve of Eratosthenes, Euler’s totient function.
3) Greedy: Standard problems such as Activity selection.
4) Search techniques: Binary search, Ternary search and Meet in the middle.
5) Data structures (Basic): Stacks, Queues, Trees and Heaps.
6) Data structures (Advanced): Trie, Segment trees, Fenwick tree or Binary indexed tree(BIT), Disjoint data structures.
7) Strings: Knuth Morris Pratt(KMP), Z algorithm, Suffix arrays/Suffix trees. These are bit advanced algorithms.
8) Computational geometry: Graham-Scan for convex hull, Line sweep.
9) Game theory: Basic principles of Nim game, Grundy numbers, Sprague-Grundy theorem.
The
list is not complete but these are the ones that you encounter very
frequently in the contests. There are other algorithms but are required
very rarely in the contests.
- You can find description and implementation of standard algorithms here
- Once
you have sufficient knowledge of popular algorithms, you can start
solving the medium level problems. That is Div 2 all problems in
Topcoder and Codeforces. It is advisable not to go for Div 1 500 at this
point.
- Learning to code is all about practicing. Participate regularly
in the programming contests. Solve the ones that you cannot solve in
the contest, after the contest. Apart from Topcoder and Codeforces you
can also look at HackerEarth Challengesor Codechef contests.
- Read the codes
of high rated programmers. Compare your solution with them. You can
observe that it is simple and shorter than your solution. Analyse how
they have approached and improve your implementation skills.
- Read the editorials
after the contest. You can learn how to solve the problems that you
were not able to solve in the contest and learn alternative ways to
solve the problems which you could solve.
- Always practice the problems that you could solve in the contest.
Suppose if you are able to solve Div 2 250 and 500 in the contest but
not Div 2 1000 then practice as many Div 2 1000 problems as as you can.
- Do not spend too much time if you are not getting the solution or are stuck somewhere.
- After
you feel that you have spent enough time, look at the editorials.
Understand the algorithm and code it. Do not look at the actual solution
before you have attempted to write the code on your own.
- Programming
is a very practical and hands on skill. You have to continuously do it
to be good at it. It’s not enough to solve the problem theoretically, you have to code it and get the solution accepted. Knowing which algorithm/logic to use and implementing it are two different things. It takes both to be good at programming.
- Programming learning phase is going to take a lot of time and the key is practicing regularly.
It takes some time before you can attempt Div 1 500 and other tough
problems. Do not give up on reading the editorials and implementing
them, even if it takes many hours/days. Remember everything requires
practice to master it.
It takes considerable
amount of time before you get good at it. You have to keep yourself
motivated throughout. Forming a team and practicing is a good choice. Not giving up is the key here.
- Get comfortable writing code in either of one of these languages C, C++ or Java. Why only C, C++ or Java? Because these are the standard languages allowed in any programming competition.
- If you are already good at C, it is suggested to learn C++. It is the most popular language among competitive programmers because of its speed and an excellent library in the form of STL (Standard Template Library).
- Pick an online judge. Recommended ones are Topcoder and Codeforces.
These sites have high quality of problems and also allow you to see
other’s code post contest completion. These also categorize problems
based on the topic. Some other popular judges include SPOJ, CodeChef (powered by SPOJ) andHackerEarth.
- To begin with, start with simple problems that typically require transformingEnglish to code and does not require any knowledge on algorithms. Solving Div 2 250 (Division 2, 250 points) in Topcoder or Div 2 Problem A in Codeforces is a good start.
- At the early stages of programming one tends to write long pieces of code, which is actually not required. Try to keep codes short and simple.
- Practice these problems until you become comfortable that you can submit it for 240 odd points on any day.
- Start implementing basic(or standard) algorithms. It is suggested to read them from Topcoder tutorials or Introduction to algorithms.
1) Graph algorithms: Breadth first search(BFS), Depth first search(DFS), Strongly connected components(SCC), Dijkstra, Floyd-Warshall, Minimum spanning tree(MST), Topological sort.
2) Dynamic programming: Standard dynamic programming problems such as Rod Cutting, Knapsack, Matrix chain multiplication etc.
3) Number theory: Modular arithmetic, Fermat’s theorem, Chinese remainder theorem(CRT), Euclidian method for GCD, Logarithmic
Exponentiation, Sieve of Eratosthenes, Euler’s totient function.
3) Greedy: Standard problems such as Activity selection.
4) Search techniques: Binary search, Ternary search and Meet in the middle.
5) Data structures (Basic): Stacks, Queues, Trees and Heaps.
6) Data structures (Advanced): Trie, Segment trees, Fenwick tree or Binary indexed tree(BIT), Disjoint data structures.
7) Strings: Knuth Morris Pratt(KMP), Z algorithm, Suffix arrays/Suffix trees. These are bit advanced algorithms.
8) Computational geometry: Graham-Scan for convex hull, Line sweep.
9) Game theory: Basic principles of Nim game, Grundy numbers, Sprague-Grundy theorem.
The list is not complete but these are the ones that you encounter very frequently in the contests. There are other algorithms but are required very rarely in the contests. - You can find description and implementation of standard algorithms here
- Once
you have sufficient knowledge of popular algorithms, you can start
solving the medium level problems. That is Div 2 all problems in
Topcoder and Codeforces. It is advisable not to go for Div 1 500 at this
point.
- Learning to code is all about practicing. Participate regularly
in the programming contests. Solve the ones that you cannot solve in
the contest, after the contest. Apart from Topcoder and Codeforces you
can also look at HackerEarth Challengesor Codechef contests.
- Read the codes
of high rated programmers. Compare your solution with them. You can
observe that it is simple and shorter than your solution. Analyse how
they have approached and improve your implementation skills.
- Read the editorials
after the contest. You can learn how to solve the problems that you
were not able to solve in the contest and learn alternative ways to
solve the problems which you could solve.
- Always practice the problems that you could solve in the contest.
Suppose if you are able to solve Div 2 250 and 500 in the contest but
not Div 2 1000 then practice as many Div 2 1000 problems as as you can.
- Do not spend too much time if you are not getting the solution or are stuck somewhere.
- After
you feel that you have spent enough time, look at the editorials.
Understand the algorithm and code it. Do not look at the actual solution
before you have attempted to write the code on your own.
- Programming
is a very practical and hands on skill. You have to continuously do it
to be good at it. It’s not enough to solve the problem theoretically, you have to code it and get the solution accepted. Knowing which algorithm/logic to use and implementing it are two different things. It takes both to be good at programming.
- Programming learning phase is going to take a lot of time and the key is practicing regularly.
It takes some time before you can attempt Div 1 500 and other tough
problems. Do not give up on reading the editorials and implementing
them, even if it takes many hours/days. Remember everything requires
practice to master it.
Friday, 1 January 2016
Some things that matters now,when we are 20.
- DON'T procrastinate. If
you postpone the things that you should be doing on early 20's to late
30's then you can't possibly bring back the wasted time. Do the right
things at the right time, and the situation will rightly favour you.
- If you have to force it then maybe you need to let it go. Relationship, friendship and love. Never chase after love, affection or attention. If its meant to happen, then it will come across your path.
- Learn to groom yourself and dress up well. Once you hit your 30's and 40's your entire outlook will vary greatly. Knowing how to handle ageing is a great plus point.
- Don't waste your time. On
social networks, clicking selfies and uploading it on Instagram, or
downloading cute cat videos. Just don't waste your precious time by
doing something so petty and useless.
- Chase your dreams and ambitions. Whatever
that might be, achieve before them you hit the threshold and give up
for nothing. Chase it on your 20's if possible. At that age, your
willpower, mental capacity, drive to succeed will be strong.
- Never gossip or badmouth anyone. Again,
another way to invest time into nothingness. What will you gain by
bringing down someone's image? Learn not to degrade anyone even if you
are at the receiving end of it.
- Explore opportunities. Grab the untaken chances. Be a risk taker. You might not know what life throws us at unexpected moment. Why not make full use of it?
- Realize that money is not everything. Set
the mentality first. Stop chasing after money and start chasing behind
success instead. The rest will follow suit. Money is important but your
self worth is more important than that.
- Discover your identity. Who
are you? What do you want to do in your life for the next 50 years?
What's the purpose of your existence? Answer all these questions and
follow the path it leads you to.
- Never take up any career choice to satisfy your parents or by following your peers. Trust
me, that's the worst kind of screw up that you could do in your life.
Take up the course because you have an interest in it. Period.
- It is not possible to rewind back time and undo your mistakes. Learn from the mistakes of others, for you cannot afford to make them all on your own in a single life time.
- Don't be a socially awkward, xenophobiac, introverted person. Kill
that shyness, man. Come on now, do you think that locking yourself up
in your room or refusing to mingle around with new people is going to
help you develop better social skills? No way.
- Don't do late night partying and excessive visiting to the clubs/pubs. Once
in a while is fine. But if you do it nearly daily, then you heading
towards the wrong path. You might end up being broke by 30. Just saying.
- Spend some quality time with your family and friends. Especially your parents. Reason being, one day you might look up from your phone and realize that they are no more with you. No point regretting then.
- If he/she is an asshole then break up with them. End the relationship instead of prolonging it futher. Don't be a stupid, honestly speaking. Wake up now instead of twenty years later with a more fucked up life.
- Take up a hobby that syncs up with your passion. My
engineer uncle took up photography and six months later he resigned his
steady job to become a full time wildlife photographer. He had no
regrets so far. So, diversify your options.
- Work on your communicating and interpersonal skills. Skills
that you can't learn from books alone. Interact with your neighbours
and join a support group to meet new people. Expand your social circle
from time to time.
- Avoid junk food, smoking, alcohol and drugs. This
takes up a great toll upon your health when your age catches up. At
least, limit the intake if its impossobile for you to live without all
these.
- Travel as much as you can. Get a passport, and
plan for a budget trip along with your friends. Visit new places and
experience variety of culture. This broadens up your view about life.
- Fall in love. Fall out of love. Experience both world. You'll understand what love is. Heartbreak matures you, and love brings out the best in you.
- Don't get piled up in student debt. If
possible, that is. Once you start earning, most of your income goes in
to pay off your debt and you will be left with zero or little savings.
Don't be a penniless graduate.
- Remember birthdays and anniversaries. Surprise
someone! Even if you are not the type which gets extravaganza about
celebrations, try to make someone happy during their special day.
- Focus on your career and studies. This should be one of the top priorities in your life.
- Don't hurt anyone with your words or actions. Try to be kind and think before you speak. Hurtful words could never be taken back.
- Go on a date. Blind date, double date, friendly date. Anything. Meet up with your crush, invite the person you like for a cup of coffee. That's how you learn about the opposite gender.
- Start investing on your finance and savings. You could invest your time in a new start up or find any decent paying part time job while studying.
- Get adequate rest and plenty of sleep. Your brain ages proportionally with your age. Take good care of your mental health from the young age itself.
- Take friendships seriously. Be a good friend for someone. Make
sacrifices; help them out when they are in need. Trust them and be with
them during their bad phase. Build a strong base of friendship at this
age.
- Don't spend too much time clinging onto your phone. This does not only harm your mental health in the long run; but also progressively makes you lose count of time.
- Take it easy. Humans are not programmed to avoid making errors. It is okay to mess up once a while, don't be too garsh on yourself. Okay?
- Learn from past mistakes. There is no harm in screwing up once a while but try to learn from it. A man who forgets his past are condemned to repeat it. ~George Santayana
- Watch your weight and keep it on track. Develop
healthy lifestyle during an early age so that your body doesn't
deteriorate before you hit up your 40's. This is crucial.
- Unfinished tasks are one of the biggest life baggages. Clear them up before proceeding to a new goal or target. The best that you could do is finish the unfinished.
- Pay attention to your siblings. Sadly, some of us only notice them when we go through a bad phase. Talk to them, bring them out and share your feelings with them.
- In
the end, we regret most about the chances we didn't take, the
relationship we were afraid to have and the decisions we waited too long
to take. ~Lewis Carroll
Have no regrets, plis. Life is short.
Have no regrets, plis. Life is short.
Tuesday, 29 December 2015
Friday, 25 December 2015
74 things to do when you’re bored and alone
1.Go out for coffee2.Cut a stencil and put a design on an old t-shirt
3.Learn a new recipe
4.Properly fold all of your cloths
5.Find a marker with a blue or green lid and run around pretending it’s a sonic screwdriver
6.Walk to McDonalds and get a McFlurry
7.Organize your iTunes library and make sure everything has album art
8.Start a blog
9.Read through old posts on your favourite blog
10.Have a movie marathon
11.Ride the transit all the way around, until you’re back to where you started
12.Make a friendship bracelet for yourself
13.Shave off all your body hair
14.Go shopping with only $5
15.Try to invent a new way to play solitaire
16.Take a really long bath
17.Sleep
18.Pretend you’re on a cooking show and talk out loud while cooking
19.Catalogue your home library
20.Go to the library
21.Count all the blue things in your house
22.Build a fort!
23.Read a book
24.Reread a favourite
25.Watch your favourite movie in a different language or on mute with subtitles
26.Go to the dollar store and get all the materials for a craft project
27.Plant a garden
28.Make a YouTube video
29.Teach yourself something really difficult
30.Write a letter, and mail it
31.Write a really nice positive note and put it in a strangers mailbox
32.Take a beer and a bowl of chips and just watch the clouds
33.Do laundry, at a laundromat
34.Make a fake Facebook account
35.Bake something from scratch
36.Take photos of interesting sign around your neighbourhood
37.Do you taxes
38Go through your closet and donate all the cloths you don’t wear anymore to a good cause
39.Take apart your alarm clock
40.Shine you shoes/boots
41.Get a tattoo
42.Buy a new cd
43.Go to a restaurant with a pad and paper and pretend to be a food critic
44.Dust
45.Draw something
46.Dye your hair
47.Learn to swear in a different language
48.See how many pushups/sit-ups you can do
49.Commit yourself to go jogging every day
50.Go out for a drink
51.Learn to make coffee, it takes practice
52.Reorganize you furniture
53.Paint your bed room
54.Look up really ridiculously complex Starbucks orders and memorize them. Then go to Starbucks and try to order them without laughing
55.make crepes
56.Shop online
57.Properly name and organize all the photos on your computer
58.Write a short story
59.Loiter
60.Make up a new identity for yourself
61.Start a collection
62.Pretend to be a tourist and go and do something really touristy
63.Draw on your drive way with chalk
64.Hang out with your mom
65.Go to a movie
66.Join an online community
67.Learn how to make a frappuccino at home
68.Make peach and lime daiquiris
69.Make pressed flowers
70.Learn a new way to lace up your shoes
71.Listen to the radio
72.Get all dressed up to do something really normal, like grocery shopping
73.Try and do everything really quiet, like a ninja
74.Write your autobiography
Subscribe to:
Posts (Atom)