/*views/shared/root.jade*/
doctype html
html(lang="en")
head
block head
block title
title Default Title
meta(name="viewport", content="width=device-width, initial-scale=1.0")
link(href='/#{loader.theme_favicon("default")}', rel='icon', type='image/png')
link(href='/#{loader.theme_static("css/styles.css")}', rel='stylesheet', type='text/css')
script(src='/#{loader.theme_static("js/scripts.js")}')
body
#body-wrapper
block body
/*views/shared/site.jade*/
extends root
block body
block variables
div okey=#{body_class}
#content-wrapper
block content
#footer-wrapper
block footer
- var imageName = new Date().getFullYear();
span Copyright #{imageName} <br>
/*views/home/index.jade*/
extends ../shared/site
block variables
-var body_class = 'i-am-the-home-page'
block append head
script(src='/#{loader.theme_static("js/scripts123.js")}')
block title
title #{model.title}
block content
h1 Post's Header
p Here's a list of all blog posts
mixin list-item
block footer
//block comment
h1 hello world
//-invisible block comment
h2 how are you?
mixin header(title)
div.container&attributes(attributes)
h3.sectionHeader #{title}
div.content(style="display: block")
block
+header('footer')(style="text-align:center; display: block; width: 500px;")
p this is a footers paragraph
-var jade_obj = require('jade');
-var list_view = loader.view_filename('login/partial/list.jade', router.langdir);
-if (loader.file_exists(list_view)) {
-var html_str = jade_obj.renderFile(list_view, {list: model.list});
div !{html_str}
-} else {
include ./partial/list
-}
/*views/home/partial/list.jade*/
-var items = (list !== undefined ? list : model.list);
ul
mixin htmlli(liitem)
li(id="#{liitem}")= '!' + liitem
-each item, i in items
-if (items.length > 0)
+htmlli(i + '. ' + item)
-else
include ./item
/*views/home/partial/item.jade*/
li= item
Tuesday, February 21, 2017
Friday, February 17, 2017
Node.js - use of module.exports as a constructor, Essential Node.js patterns and snippets
/***************************/ constructor version first
this._base = base;
this._req = req;
this._res = res;
this.title = 'Login_title';
this.description = 'Login_description';
}
Login.prototype = {
constructor: Login,
description: 'default_description',
auth: function (args) {
this._res.send(this.title + " => " + args + " , " + this.description);
}
};
module.exports = Login;
/**************************/ constructor version second
constructor(base, req, res) {
this.base = base;
this.req = req;
this.res = res;
this.foo = 10;
}
auth(args) {
this.res.json(this.foo + ';;;' + args);
}
}
module.exports = Login;
****************************************************
var _constructor = require('./login');
var _object = new _constructor(base, req, res);
this.function = "auth";
if (typeof _object[this.function] === 'function') {
_object[this.function]("passed args");
}
***********************************************************
1.
function Login(base, req, res) {this._base = base;
this._req = req;
this._res = res;
this.title = 'Login_title';
this.description = 'Login_description';
}
Login.prototype = {
constructor: Login,
description: 'default_description',
auth: function (args) {
this._res.send(this.title + " => " + args + " , " + this.description);
}
};
module.exports = Login;
/**************************/ constructor version second
2.
class Login {constructor(base, req, res) {
this.base = base;
this.req = req;
this.res = res;
this.foo = 10;
}
auth(args) {
this.res.json(this.foo + ';;;' + args);
}
}
module.exports = Login;
****************************************************
var _constructor = require('./login');
var _object = new _constructor(base, req, res);
this.function = "auth";
if (typeof _object[this.function] === 'function') {
_object[this.function]("passed args");
}
***********************************************************
1.2 Accessing global values from objects
// constructor
var Class = function(global, value2) {
this.global = global;
}
// access using this.global in class methods
1.3 Factory pattern
// Constructor
var Class = function(value1, value2) { ... }
// Factory
Class.factory(value1) { return new Class(value1, "aaa"); }
// properties and methods
Class.prototype = { ... };
1.4 Sharing state between modules
var Common = {
util: require('util'),
fs: require('fs'),
path: require('path')
};
module.exports = Common;
// in other modules
var Common = require('./common.js');
1.5 Singleton class (added Feb 2011)
var Singleton = (function() {
var private_variable = 'value';
function private_function() {
...
}
function public_function() {
...
}
return {
public_function: public_function
};
})();
Saturday, February 11, 2017
node.js clustered express app with socket.io chat with redis-server boost
var express = require('express'),
cluster = require('cluster'),
net = require('net'),
socketio = require('socket.io'),
socket_redis = require('socket.io-redis');
var port = 80, num_processes = require('os').cpus().length;
if (cluster.isMaster) {
// This stores our workers. We need to keep them to be able to reference
// them based on source IP address. It's also useful for auto-restart,
// for example.
var workers = [];
// Helper function for spawning worker at index 'i'.
var spawn = function (i) {
workers[i] = cluster.fork();
// Optional: Restart worker on exit
workers[i].on('exit', function (code, signal) {
console.log('respawning worker', i);
spawn(i);
});
};
// Spawn workers.
for (var i = 0; i < num_processes; i++) {
spawn(i);
}
// Helper function for getting a worker index based on IP address.
// This is a hot path so it should be really fast. The way it works
// is by converting the IP address to a number by removing non numeric
// characters, then compressing it to the number of slots we have.
//
// Compared against "real" hashing (from the sticky-session code) and
// "real" IP number conversion, this function is on par in terms of
// worker index distribution only much faster.
var worker_index = function (ip, len) {
var s = '';
for (var i = 0, _len = ip.length; i < _len; i++) {
if (!isNaN(ip[i])) {
s += ip[i];
}
}
return Number(s) % len;
};
// Create the outside facing server listening on our port.
var server = net.createServer({pauseOnConnect: true}, function (connection) {
// We received a connection and need to pass it to the appropriate
// worker. Get the worker for this connection's source IP and pass
// it the connection.
var worker = workers[worker_index(connection.remoteAddress, num_processes)];
worker.send('sticky-session:connection', connection);
}).listen(port);
} else {
/* don't use yet
* var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var redis = require('socket.io-redis');
var http = app.listen(80, function () {
console.log('ProcId : ' + process.pid + ' is listening to all incoming requests...');
});*/
// Note we don't use a port here because the master listens on it for us.
var app = new express();
// Here you might use middleware, attach routes, etc.
app.use('/assets', express.static(__dirname + '/public'));
app.get('/', function (req, res) {
res.sendFile(__dirname + '/index.html');
});
// Don't expose our internal server to the outside.
var server = app.listen(),
io = socketio(server);
// Tell Socket.IO to use the redis adapter. By default, the redis
// server is assumed to be on localhost:6379. You don't have to
// specify them explicitly unless you want to change them.
io.adapter(socket_redis({host: 'localhost', port: 6379}));
var online_members = 0;
var chat_socket = io.of('/chat')
.on('connection', function (client_socket) {
var log = process.pid + ', ' + client_socket.id + ' : Connected';
console.log(log);
client_socket.on('login', function (data) {
online_members = online_members + 1;
client_socket.emit('ilogged', {id: client_socket.id, pid: process.pid, online_members: online_members});
client_socket.broadcast.emit('ulogged', {id: client_socket.id, pid: process.pid, online_members: online_members});
log = process.pid + ', ' + client_socket.id + ' : Logged';
console.log(log);
});
client_socket.on('message', function (data) {
var msg = process.pid + " : " + data;
client_socket.broadcast.emit('message', msg);
log = process.pid + ' : ' + data;
console.log(log);
});
client_socket.on('disconnect', function () {
online_members = online_members - 1;
client_socket.broadcast.emit('uclosed', {id: client_socket.id, pid: process.pid, online_members: online_members});
log = process.pid + ', ' + client_socket.id + ' : Disconnected';
console.log(log);
});
});
console.log('ProcId : ' + process.pid + ' is listening to all incoming requests...');
// Listen to messages sent from the master. Ignore everything else.
process.on('message', function (message, connection) {
if (message !== 'sticky-session:connection') {
return;
}
// Emulate a connection event on the server by emitting the
// event with the connection the master sent us.
server.emit('connection', connection);
connection.resume();
});
}
scripts
var chat_client_start = function () { var logged = null; var chat_client = io.connect('http://BOR-PC/chat'); chat_client.on('connect', function () { $('#messages').append($('
').text('Logging...'));
if (logged === null) {
chat_client.emit("login", "I am logging...");
}
});
chat_client.on('ilogged', function (data) {
logged = data;
var txt = "I am Logged: " + data.pid + ', ' + data.id + ', c:' + data.online_members;
$('#messages').append($('
').text(txt));
});
chat_client.on('ulogged', function (data) {
var txt = "User Logged: " + data.pid + ', ' + data.id + ', c:' + data.online_members;
$('#messages').append($('
').text(txt));
});
chat_client.on('uclosed', function (data) {
var txt = "User Closed: " + data.pid + ', ' + data.id + ', c:' + data.online_members;
$('#messages').append($('
').text(txt));
});
chat_client.on('message', function (msg) {
$('#messages').append($('
').text(msg));
});
chat_client.on('disconnect', function () {
logged = null;
// chat_client.disconnect();
// chat_client.removeAllListeners('connect');
$('#messages').append($('
').text('Server disconnected.'));
$('#messages').append($('
').text('Reconnecting...'));
setTimeout(function () {
chat_client_start();
}, 5000);
});
$('form').submit(function () {
var msg_txt = $('#msg_txt').val();
$('#messages').append($('
').text(msg_txt));
chat_client.emit('message', msg_txt);
$('#msg_txt').val('');
return false;
});
};
chat_client_start();
cluster = require('cluster'),
net = require('net'),
socketio = require('socket.io'),
socket_redis = require('socket.io-redis');
var port = 80, num_processes = require('os').cpus().length;
if (cluster.isMaster) {
// This stores our workers. We need to keep them to be able to reference
// them based on source IP address. It's also useful for auto-restart,
// for example.
var workers = [];
// Helper function for spawning worker at index 'i'.
var spawn = function (i) {
workers[i] = cluster.fork();
// Optional: Restart worker on exit
workers[i].on('exit', function (code, signal) {
console.log('respawning worker', i);
spawn(i);
});
};
// Spawn workers.
for (var i = 0; i < num_processes; i++) {
spawn(i);
}
// Helper function for getting a worker index based on IP address.
// This is a hot path so it should be really fast. The way it works
// is by converting the IP address to a number by removing non numeric
// characters, then compressing it to the number of slots we have.
//
// Compared against "real" hashing (from the sticky-session code) and
// "real" IP number conversion, this function is on par in terms of
// worker index distribution only much faster.
var worker_index = function (ip, len) {
var s = '';
for (var i = 0, _len = ip.length; i < _len; i++) {
if (!isNaN(ip[i])) {
s += ip[i];
}
}
return Number(s) % len;
};
// Create the outside facing server listening on our port.
var server = net.createServer({pauseOnConnect: true}, function (connection) {
// We received a connection and need to pass it to the appropriate
// worker. Get the worker for this connection's source IP and pass
// it the connection.
var worker = workers[worker_index(connection.remoteAddress, num_processes)];
worker.send('sticky-session:connection', connection);
}).listen(port);
} else {
/* don't use yet
* var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var redis = require('socket.io-redis');
var http = app.listen(80, function () {
console.log('ProcId : ' + process.pid + ' is listening to all incoming requests...');
});*/
// Note we don't use a port here because the master listens on it for us.
var app = new express();
// Here you might use middleware, attach routes, etc.
app.use('/assets', express.static(__dirname + '/public'));
app.get('/', function (req, res) {
res.sendFile(__dirname + '/index.html');
});
// Don't expose our internal server to the outside.
var server = app.listen(),
io = socketio(server);
// Tell Socket.IO to use the redis adapter. By default, the redis
// server is assumed to be on localhost:6379. You don't have to
// specify them explicitly unless you want to change them.
io.adapter(socket_redis({host: 'localhost', port: 6379}));
var online_members = 0;
var chat_socket = io.of('/chat')
.on('connection', function (client_socket) {
var log = process.pid + ', ' + client_socket.id + ' : Connected';
console.log(log);
client_socket.on('login', function (data) {
online_members = online_members + 1;
client_socket.emit('ilogged', {id: client_socket.id, pid: process.pid, online_members: online_members});
client_socket.broadcast.emit('ulogged', {id: client_socket.id, pid: process.pid, online_members: online_members});
log = process.pid + ', ' + client_socket.id + ' : Logged';
console.log(log);
});
client_socket.on('message', function (data) {
var msg = process.pid + " : " + data;
client_socket.broadcast.emit('message', msg);
log = process.pid + ' : ' + data;
console.log(log);
});
client_socket.on('disconnect', function () {
online_members = online_members - 1;
client_socket.broadcast.emit('uclosed', {id: client_socket.id, pid: process.pid, online_members: online_members});
log = process.pid + ', ' + client_socket.id + ' : Disconnected';
console.log(log);
});
});
console.log('ProcId : ' + process.pid + ' is listening to all incoming requests...');
// Listen to messages sent from the master. Ignore everything else.
process.on('message', function (message, connection) {
if (message !== 'sticky-session:connection') {
return;
}
// Emulate a connection event on the server by emitting the
// event with the connection the master sent us.
server.emit('connection', connection);
connection.resume();
});
}
scripts
var chat_client_start = function () { var logged = null; var chat_client = io.connect('http://BOR-PC/chat'); chat_client.on('connect', function () { $('#messages').append($('
Wednesday, February 8, 2017
how to create a user in oracle 11g and grant permissions, account unlock
CREATE USER username IDENTIFIED BY password;
GRANT CONNECT TO username;
GRANT SELECT,INSERT,UPDATE,DELETE on schema.table TO username;
esvel
GRANT EXECUTE on schema.procedure TO username;
esvel
GRANT ALL privileges TO username;
http://stackoverflow.com/questions/9447492/how-to-create-a-user-in-oracle-11g-and-grant-permissions
From your command prompt, type
sqlplus "/ as sysdba"
Once logged in as SYSDBA, you need to unlock the SCOTT [or maybe SYSTEM] account
SQL> alter user scott account unlock;
SQL> grant connect, resource to scott;
example in my PC:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\BOR>sqlplus "/ as sysdba"
SQL*Plus: Release 11.2.0.1.0 Production on Tue Feb 14 08:56:49 2017
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> alter user SYSTEM unlock;
alter user SYSTEM unlock
*
ERROR at line 1:
ORA-00922: missing or invalid option
SQL> ALTER USER SYSTEM ACCOUNT UNLOCK;
User altered.
SQL> ALTER USER SYSTEM IDENTIFIED BY password;
User altered.
SQL>
GRANT CONNECT TO username;
GRANT SELECT,INSERT,UPDATE,DELETE on schema.table TO username;
esvel
GRANT EXECUTE on schema.procedure TO username;
esvel
GRANT ALL privileges TO username;
CREATE USER <<username>> IDENTIFIED BY <<password>>; -- create user with password
GRANT CONNECT,RESOURCE,DBA TO <<username>>; -- grant DBA,Connect and
Resource permission to this user(not sure this is necessary
if you give admin option)
GRANT CREATE SESSION TO <<username>> WITH ADMIN OPTION; --Give admin option to user
GRANT UNLIMITED TABLESPACE TO <<username>>; -- give unlimited tablespace grant
http://stackoverflow.com/questions/9447492/how-to-create-a-user-in-oracle-11g-and-grant-permissions
Resolving ORACLE ERROR:ORA-28000: the account is locked
By thekkadath on Mar 20, 2006
After installation of Oracle10g, there was a problem ..couldnt login using SQL+. None of the accounts(scott/tiger) worked . At last a quick web search gave the solution . Here is what it is:From your command prompt, type
sqlplus "/ as sysdba"
Once logged in as SYSDBA, you need to unlock the SCOTT [or maybe SYSTEM] account
SQL> alter user scott account unlock;
SQL> grant connect, resource to scott;
example in my PC:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\BOR>sqlplus "/ as sysdba"
SQL*Plus: Release 11.2.0.1.0 Production on Tue Feb 14 08:56:49 2017
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> alter user SYSTEM unlock;
alter user SYSTEM unlock
*
ERROR at line 1:
ORA-00922: missing or invalid option
SQL> ALTER USER SYSTEM ACCOUNT UNLOCK;
User altered.
SQL> ALTER USER SYSTEM IDENTIFIED BY password;
User altered.
SQL>
Subscribe to:
Posts (Atom)