Pages

Friday, June 20, 2014

Streamlining the mobile-app development process in the large team scenario

Every time a file gets added to the project, it adds-up an extra latency in the file loading. So minimizing the number of files in the release-build would definitely enhance the performance of the app. Considering this fact, we should have only one stylesheet containing all the styles related to the app.

Though putting everything (style class) in single file would definitely have the following effects
  • Pros: It would make it 
    • compact, 
    • easy to load, 
    • one-time loading 
  • Cons: It would make it 
    • lengthy for manual readability;

Thus we need to make it modular, that means, a separate stylesheet need to be made for each module; which is easy to modify & debug for developers. Each stylesheet should follow the standard guidelines like
  • adding a module-name prior to the style class name, 
  • avoiding id based style class, etc.

To enforce the developers to follow the standard guidelines, we can also use a css generator system. Where developers have to fill up the cells in the sheet/form after which the standard css file gets generated out of it. In our system it would be the css for particular module.

Prior publishing the release-build,
  • we can run a script that can concatenate all the stylesheets into single stylesheet; 
  • this script can compress the file as well if required;
  • the index.html file will be having the link of this single stylesheet only.

Similarly, since we have a definite set of unique screens, so there should be only one html file in the project (aka single-page app). Thus, we can have following benefits:
  • It would reduce the transition time to zero during html page change. 
  • Developers can work on this html file along with that single css file on their desktop browsers like chrome. 
  • Since the Chrome browser comes up with advance debugging tools for developers, so the design and alignment related issues can be resolved in very less time in comparison to using Android IDE. 
  • We can further reduce the JavaScript’s part of html code creation/rendering by adding the html templates in the index.html page only. 
  • The JavaScript only have to deal with logic, control and flow.

This would separate the markup, style and script into separate files without hindering in each other’s zone. So by this we have separated the layout, design and logic into separate divisions. Though the script (logic division) can be further handled with standard MVC frameworks. That would make the project much more simplified and manageable.

Wednesday, June 18, 2014

JS: Minimalist Templator

This is an evolved version of the previous CTemplator classes that you can refer at Templator, Advanced Templator.

Basically in this, the rarely used methods have been chopped-off and the tagging method with '@' has been deprecated because it is limited to only 10 items array. You can say, it's a loop hole earlier due to which if array items exceeds this limit then while replacing the tag initial tags overwrites the exceeded tags. So this new version came into picture; that have only 2 methods where 'fitIn' uses serial-number or index value while the other one 'fixIn' uses key value of the hash-map array.
/* 
@file CTemplator.js
@author Abhishek Kumar
@email akbittu@gmail.com
*/
window.CTemplator = {
    fitIn: function (template, arglist) {
        var tag, output = template;
        for (var i = 0, len = arglist.length; i < len; i++) {
            tag = new RegExp("\\[" + i + "\\]", 'g')
            output = output.replace(tag, arglist[i]);
        }
        return output;
    },
    fixIn: function (template, hashtable) {
        var tag, output = template;
        for (var key in hashtable) {
            tag = new RegExp("\\[" + key + "\\]", 'g')
            output = output.replace(tag, hashtable[key]);
        }
        return output;
    }
};
/*
// Usage
CTemplator.fixIn('<a href="#[Link]" title="[Content]">[Content]</a>', {
    Link: 'test1.html',
    Content: 'Test1'
});
CTemplator.fitIn('<a href="#[0]" title="[1]">[1]</a>', ['test1.html', 'Test1']);
*/

Wednesday, June 4, 2014

How to configure Android Developer Tools for Cordova/Phonegap use?

If you are reading this blog then you might be be searching for an IDE (Integrated Development Environment) to develop Cordova or Phonegap applications on Android platform. So you have come at the right place.

So, how do we acheive that? Well, you need to follow these steps:
  1. Download latest ADT from this link: Get the Android SDK
  2. Install it of your development machine
  3. Open it up
  4. In menu bar go to the Help Install New Software...
  5. A popup window appears, in which you need to click the Add... button
  6. A small sub-popup form appears, that you need to fill as:
    • Name: WTP 
    • Location: http://download.eclipse.org/webtools/repository/juno/
  7. Click on the Ok button after filling up the form
  8. After closing the sub-popup form, a list appears in the table, where user is suppose to check the items that they need to install. To configure it for Cordova you would require editor for HTML, JS, CSS, XML, so first select the Web Tools Plaform (WTP) 3.4.2 
  9. Now check these items:
    • Eclipse Web Developer Tools
    • Eclipse XML Editors and Tools
    • Exlipse XSL Developer Tools
    • JavaScript Development Tools
    • Web Page Editor
  10. Since the Next button would have been enabled until now, so click on the Next button to proceed
  11. After it would download the selected items, you need to click on the Next button on Install Details screen
  12. Then on Review Licenses screen, you need to select the 'I accept the terms of the license agreement' radio button
  13. Click on the Finish button to complete the process
  14. A small Installing Software popup window appears to show you the progress of installation.
Now, try to open any web based file with extension as .html, .htm, .js, .css, .xml to verify if the WTP installed successfully or not. You might have to select a proper editor from the right-click context menu of the selected file.