Category Archives: General

Version Control : Code Development : Migration : Learnings

Versioning of Code is an extremely important process in Code Development. Hence, a version control system which complements development and supports versioning, code merging and collaboration in an effective manner facilitate seamless code sharing and speeds up the entire process without the worry of even a single bit of code getting lost. There are various versioning system(s) in the market. However, I would be sharing my experiences and learning while migrating from subversion to Git and how the one inspite of serving us for years and its wide spread adoption had some shortcoming(s) and... Read More

Continuous Integration for Android apps

By : Minni Arora Three years ago, Naukri launched a campaign titled 'Naukri on Mobile'. In order to establish mobile presence and for broader accessibility to the target audience, free job search apps on mobile for smartphones were introduced. Ever since then, the traffic from mobile applications is just rising.   With more and more features getting built into the app and the team expanding, both unit and integration testing came to the force. Unit testing is well established as a good practice for Web development, but is usually left behind when developing mobile apps. It is in... Read More

Choosing an SSO Protocol: SAML over OAuth2

Creating a new login for each system is not such a good user experience. As we know it is hard to remember more login credentials as we use more applications, this came as a problem which made us to thing about Single Sign On Service. If you have logged into an application (mobile app or web app) by clicking on a 'Login/Signup with Facebook' button you would know what we are talking about.   As a user you really doesn't want to know how SSO works, you just really want to need is a smoother user experience and a fewer logins and passwords to remember. So to provide this functionality we... Read More

Transferring Binary data through HTTP

Problem Statement: We have a http service (written in PHP) which is used for storing and fetching attachment/media files with more then 15 millions of request daily. As it is used to handle files instead of raw data, so the data transfer is always expected to be high and will always be a concern/challenge.Client needs both the meta-data plus the content from the service. Means an array of data has to be returned from the server end with below format:    Array ( "name" => "name", "filename" => "filename",  "extension" => "doc",  "content" => "BINARY... Read More

Static Consolidation v2

At naukri.com change is good especially when it brings scalability and transparency to the system.Here at FED (Front end development) team we follows a pre-defined folder structure for our UI projects. Previously the following folder structure was used:/c - css files/i - images/j - js filesIssue with it was except the above three type of resources one cannot keep other resources in here as deployment tags which only includes c, j, i were to be made from the same directory.The new structureIt has two major folders: /src & /gen. /src - This is the working directory/c - css files/i -... Read More

Q-Unit : Test your private code

A tested and well-documented code is what we all strive for.At naukri.com Q-Unit (JavaScript testing framework) has been the integral part of the Front End Development (FED) team since last one year. Qunit is cool but when it comes “Testing JavaScript’s private functions without modifying the code”  it gets rigid.Let us see step-by-step how we solved the above problem:Design plugins in object literal formatIn object literal format every function is global. Though it makes testing easy but it exposes all our functions which is a paltry way of coding.Example.API  = { private :... Read More

Grunt : Automate your UI processes

In today’s world Front-end Engineering is moving in an entirely new generation of web applications. Apps are becoming complex with richer UI and better interactions. But with it comes the ever increasing size of UI resources and their management.Managing UI resources effectively is posing as a major challenge to the Front-end world.Grunt is our preferred tool  for UI task automation. It’s a task runner, offering a lot of bundled plugins for common tasks.The best comes when you can combine various tasks together to create your own more powerful bundle.Following are some usual tasks we... Read More

Multi-threaded text extraction with UIMA

       This is about using a great tool in a better way. UIMA is a framework and world wide standard for text analytics applications. UIMA is being used for text extraction / annotation in a number of  applications. We built an information extraction service using UIMA framework .It's an online service, expected to be efficiently functional, scalable and consistent in a multi-threaded high concurrency environment. Unfortunately it wasn’t.UIMA : Extraction FrameworkUIMA, an apache technology, is a framework and standard for text analytics... Read More

Sikuli – Adding power to Selenium

Selenium WebDriver is a tool for writing automated tests of websites. It aims to mimic the behavior of a real user, and as such interacts with the HTML of the application. (source: code.google.com [https://code.google.com/p/selenium/wiki/FrequentlyAskedQuestions#Q:_What_is_WebDriver_?]).However in test cases where we need to interact with elements outside of the webpage WebDriver becomes powerless. One such test we encountered was:Clicking on a button in the browser window sidebar1)   Start FireFox2)   Navigate to an URL3)   Start SQL inject-me... Read More

User Behavior on forms

It all started with a debate on adding more fields on couple of our forms.The users always find it painful to fill forms.So our intent was to measure and reduce bounce-offs from a form of our jobs website for the gulf - http://www.naukrigulf.com/ The idea was as simple as that : to track the user behaviour on the form. Whatever the user does on the form will be logged and analyzed. We gave ourselves an additional objective of making sure that the page load time graph doesn't go north-wards after this tracking is added.After researching on some existing open-source options, we decided to write... Read More