Saturday, December 5, 2015

ejs

"E" is for "effective." EJS is a simple templating language that lets you generate HTML markup with plain JavaScript. 

Git

Git is a widely used version control system for software development. It is a distributed revision control system with an emphasis on speed, data integrity, and support for distributed, non-linear workflows.

git clone https://github.com/libgit2/libgit2





Monday, November 16, 2015

Node.js async in practice

Error-first callback:
  • The first argument of the callback is reserved for an error object. If an error occurred, it will be returned by the first err argument.
  • The second argument of the callback is reserved for any successful response data. If no error occurred, err will be set to null and any successful data will be returned in the second argument.
Common node.js pattern suggests that the first argument of the callback function is an error.

Module

Node.js has a simple module loading system. In Node.js, files and modules are in one-to-one correspondence.

Variables local to the module will be private.

A required module prefixed with '/' is an absolute path to the file. For example, require('/home/marco/foo.js') will load the file at /home/marco/foo.js.

A required module prefixed with './' is relative to the file calling require(). That is, circle.js must be in the same directory as foo.js for require('./circle') to find it.

Without a leading '/', './', or '../' to indicate a file, the module must either be a core module or is loaded from a node_modules folder.

module.exports is the object that's actually returned as the result of a require call.

JS Library

Underscore.js is a utility-belt library for JavaScript that provides support for the usual functional suspects (each, map, reduce, filter...) without extending any core JavaScript objects.



Ref:
http://www.sebastianseilund.com/nodejs-async-in-practice
http://amirrajan.net/nodejs-by-example/

Wednesday, April 15, 2015

AngularJS

AngularJS is built around the belief that declarative programming should be used for building user interfaces and connecting software components, while imperative programming is better suited to defining an application's business logic.

Directives 

AngularJS directives are extended HTML attributes with the prefix ng-.

The ng-app directive initializes an AngularJS application.
The ng-init directive initializes application data.
The ng-model directive binds the value of HTML controls (input, select, textarea) to application data.

Data Binding

Data-binding: This is one of the core features in Angular. When the page loads, Angular binds the name of the input box to a variable of the same name in the data model and keeps the two in sync.

The {{ firstName }} expression, in the example above, is an AngularJS data binding expression.
Data binding in AngularJS, synchronizes AngularJS expressions with AngularJS data.
{{ firstName }} is synchronized with ng-model="firstName".

Filters

A filter can be added to an expression with a pipe character (|) and a filter.

Tuesday, April 14, 2015

Javascript

1. where to put the javascript in the HTML, head or body?


A common advise for HTML applications, is to place scripts at the very bottom of the element.

Sunday, April 5, 2015

PhoneGap

http://cleancodedevelopment-qualityseal.blogspot.nl/2012/11/how-to-install-phonegap-for-android.html

Getting Cordova/Phonegap to emulate on Genymotion virtual device
It seems that adb sees genymotion virtual device as a real device and not as an emulated one, try cordova run android instead of cordova emulate android.

Thursday, March 19, 2015

Margin and Padding

Padding is the space inside the border, between the border and the actual view's content. Note that padding goes completely around the content: there is padding on the top, bottom, right and left sides (which can be independent).
Margins are the spaces outside the border, between the border and the other elements next to this view. In the image, the margin is the grey area outside the entire object. Note that, like the padding, the margin goes completely around the content: there are margins on the top, bottom, right, and left sides.
alt text

Android padding vs margin

Ref: http://stackoverflow.com/questions/4619899/difference-between-a-views-padding-and-margin?lq=1

Monday, March 9, 2015

Script

wget -r -nH --cut-dirs=5 -nc ftp://user:pass@server//absolute/path/to/directory

Note the double slash after the server name. If I don't put an extra slash the path is relative to the home directory of user.

  • -nH avoids the creation of a directory named after the server name 
  • -nc avoids creating a new file if it already exists on the destination (it is just skipped) 
  • --cut-dirs=5 allows me to take the content of /absolute/path/to/directory and to put it in the directory where I launch wget. The number 5 is used to filter out the 5 components of the path. The double slash means an extra component.
echo %date:~6,4%-%date:~3,2%-%date:~0,2%
2015-03-12



Ref: http://stackoverflow.com/questions/113886/how-do-you-recursively-ftp-a-folder-in-linux

Saturday, January 3, 2015

Install HMailServer + RoundCube

Install HMailServer
1. copy libmysql.dll from mysql bin folder to HMailServer bin folder.

Install RoundCube


Active password plugin
1. Open php.ini add the followings, add
extension=php_com_dotnet.dll
2. Open roundcube/plugins/password/config.inc.php, update
$config['password_driver'] = 'hMail';
3. Open roundcube/config/config.inc.php, add
$config['plugins'] = array('password');

//Query the MX Record using -query=mx

nslookup -query=mx redhat.com