Securing the application’s environment is one of the primary concerns every software engineer should have in mind when building professional IT products. Depending on the business requirements, certain security precautions should be taken into consideration to protect against various attacks like SQL Injection, Cross-Site Scripting (XSS) and Cross-Site Request Forgery (CSRF) being the absolute minimum.
There are different ways to address these security vectors like taking care of the user’s input and introducing additional business and database layers. The first step, however, would be to introduce a secure way of device-level identification which should provide protection against Man-in-the-middle (MIDM) attacks.
In this article, I’m going to show you one of these methods – how SSL/TLS works - why to use it and when to use it. Read more…
Activating System Restore
Surprisingly, configuring System Restore to run on daily basis in Windows 7 is not easy as it sounds. The reason for that is the feature will simply not work by default, even if you configure it manually from the Task Scheduler.
To activate System Restore per partition, go to System Properties and turn the protection On. Read more…
As you might have noticed, the site was down for a few days due to some maintenance efforts from my side. I’d just like to give you more info on few areas of improvement, mainly related to the social interactions in the site. The following upgrades have been made: Read more…
I’ve already written a post about Dijkstra, one of the algorithms I used in my Bachelor’s work. I can’t go on without mentioning the other one.
Bellman Ford is another algorithm created with the purpose of finding the shortest path between two vertices in a graph. It is a non-greedy algorithm very similar to Dijkstra, with one notable difference – it is capable of detecting negative edges in a graph. It is also slower compared to Dijkstra.
In practice, Bellman-Ford’s algorithm is used in some distance-vector routing protocols like the Routing Information Protocol which is one of the oldest and is typically no longer used (mainly due its limited hop count).
Finding the shortest path in a graph is a task seldom required by most of the programmers nowadays, because the exact implementation details are usually well hidden behind ready to use libraries and frameworks. Nonetheless, knowing your options when you are in front of such a problem is always a good thing, along with having a bit of a low level implementation at your disposal.
In the following paragraphs, I will make a brief overview of one of the most famous algorithms for finding the shortest path – Dijkstra's algorithm. I will also provide an example implementation for a board game.
Why C# vs Java ?
Back in the days before my first job, I’d had one basic decision to make. I needed to choose a programming language to start with and, honestly, it sounded like a really important one. When you are young and without any experience, it’s very easy to get confused with all these strange acronyms, all the programming languages, platforms, technologies. Which is better, which is faster, easier or harder to learn.
Well, for my first job I chose to learn Java. Maybe partly due to the fact that I was big fan of Linux and the open-source community at that time, and Java seemed like a nice non-commercial alternative to any Microsoft technology.
Right now, 8 years later, I strongly recommend using C# instead of Java. Let me tell you why.
What are the forward declarations in C++ ?
Simply said, the forward declaration in C++ allows us to declare methods and classes without specifying their actual implementation at a given point of time, leaving that for later if necessary. This can improve the maintainability of the code and help us solve problems related to cyclic dependencies and performance, in certain situations.
C, C++ and C# are all languages from the same family. They have a lot of similarities, the basic syntax is the same, a lot of their features and terminology are interchangeable. Yet there are also a lot of differences in these seemingly similar terms.
One of these terms is the structure. There are structs in all three languages, but they have entirely different functionality and behavior. Keep reading to find out more about them.
The localization is one of the most important aspects of every software product. It doesn’t matter if it’ll be used in different languages, it will quite certainly be used in different timezones. The risk of shipping a product with no (or limited) i18n support is neglectful only in case your targeted customer base is located in a specific geographical location and you are absolutely certain it will not pose a problem. Nonetheless, if you decide to expand your business in the future, be 100% sure that at some point you’ll need to take care of this.
Unfortunately, the bigger part of the developers, technical leads and managers are simply not aware of the specific problems. As a consequence of that, 2/3 of the software products worldwide will not provide the correct time under certain circumstances.
Let’s define the problems, both general and concrete, and think of appropriate resolutions.
Nowadays, the majority of organizations use Relational Database Management Systems (RDBMS) to organize and store their data. Oracle, MS SQL Server, Postgree or MySQL – it doesn’t really matter when it comes to the main principles and rules used to express what we want and how we want it from a relational point of view. The Structured Query Language (SQL) is the common standard domain specific language used to establish this communication, and the SQL joins are the primary means to combine the data.
Most of us know the basic types of joins – Inner and Outer joins – since they’re the usual suspects in our day-to-day tasks. But there are a few more joins that are worth mentioning, at least from a theoretical point of view. Do you know what's a Theta join ? The difference between Inner, Equi and Non-Equi join, what is a Cartesian product, what is a Natural join, what are the different types of Outer joins, what’s the connection between all of them ?
Keep reading to find out.
Locate the server.xml file in your %CATALINE_HOME%
Most of the time we don't write code. We configure environments and all kind of tools as a prerequisite. Checking the port used by the Oracle installation or by the Tomcat server in order to setup your Java EE environment is an easy task that can be achieved in a few ways.
The process of compilation in an unmanaged environment (C, C++)
Pure C and C++ programs usually run in an unmanaged environment. Classes (if present at all) are separated into headers (files with *.h extension, the declaration of the class) and implementations (files with .cpp extension, the definition of the class). Every class forms a separate compilation unit. When you build your project, there are few base components that translate your source into binary code. Let's see the following diagram (taken from ntu.edu.sg)
Why might your boot drive not work with Windows XP
Few days ago I needed to setup a brand new Windows XP installation. I burned it on a flash and booted from it successfully, the format and files copy processes also went OK. But when the machine rebooted, I found myself in a little surprise. The following error occured :
XML and JSON are both designed to form a simple and standartized way of describing different kinds of hierarchical data structures and to facilitate their transportation and consumption in a standartized way. Nonetheless, there are few substantial differences that deserve attention. Read more…
In this second part of the article, I’m going to show you what the anonymous functions are and what is their role in the Integrated Query Language. If you want to know more about the difference between anonymous functions and lambda expressions, keep reading. ;) Read more…