Saturday, August 18, 2012

Web Performance Pixie Dust

This is one nice article I read about Web Performance. Summery of the article is as below. 

Web Performance must become a priority from Top to Bottom, and vice versa. Performance monitoring is a journey, not a destination, similar to continuous build and agile dev! Yes it’s about great user experience, but ultimately it’s about the bottom line! (Slow Performance is the Silent Killer, the New Downtime - 2010!)
Items which can impact performance:
  • Datacenter(s): Location, Location Location!
  • Network(s), Latency & Geography
  • Hardware (servers, load balancers, network…)
  • DNS
  • CDN & CDN Configuration (just caught 2 cdns one using http 1.0 Close Connection and the other not compressing)
  • Proper Capacity Planning
  • Application (web, databases, frameworks…)
  • Code
  • 3rd Parties
  • Smart and efficient use of Hardware
  • Engineers + Ops working in sync
  • Web Performance Team (EVEN if it’s one person)
  • NOC or Site Reliability guys, the Watchdogs
  • Finally, the “Executive Team” that's making sure all of the above elements are receiving the proper resources and support, with the ultimate goal of getting your company headed towards a great user experience and level of performance
Read the whole article:



Sunday, May 20, 2012

Sharepoint Alfresco and Liferay

Liferay, Sharepoint and Alfresco are considered as Enterprise Content Management Systems or ECMs which in essence support Document Management, Web Content Management, Workflow, Enterprise Collaboration, Advanced Search and Administration. However Liferay is in contrast more powerful on its Extensibility and Integration points while others are more forcused towards content collaboration. By integrating Liferay with Sharepoint or Alfresco an enterprise can create a mature editorial process management solution with advance visual content presentation capabilities. Liferay from version 6.1 support this idea by introducing the Content Management Interoperability Services or CMIS interface and OAuth and Open Social Portlet.

For example the enterprise product catalogs, Articles, Newsletters and Video etc. content authoring and collaboration can be done through Sharepoint/Alfresco while web presentation is done through Liferay.

Hippo CMS and Nuxeo ECM are the other content management systems which can be integrated with Liferay. Hippo uses JSR-286  Web Services Remort Portlet WSRP feature to integrate with Liferay while Nuxeo uses CMIS and OpenSocial for the integration. The reference section has links for Liferay Blog posts which explains on how to integrate Twitter Gadjet to a users private page using OAuth and Open Social and how to integrate Alfresco in Liferay using CMIS.

References:
Liferay's Enterprise Portal 6.1 Supports CMIS, Integrates Enterprise CMS Document Repositories
Open Source Alternatives To Microsoft SharePoint
Liferay + CMIS: do not expect too much
Content Management Interoperability Services
Liferay CMIS Repository - Wiki
Liferay Sharepoint - User Guide
Integrating Twitter Gadget in Liferay
Integrating Alfresco 3.4 in Liferay 6.1 via CMIS 1.0

Tuesday, July 26, 2011

Tibbr and the other dimentions of social networking

Tibber is a commercial social networking and collaboration product which according to the Head of Enginnering and Product Management division Shriram Chakraborthi its a ground breaking technology that unifies social and communication in real time where everything is available as a wall post. Some of the existing feature of Tibbr are.




Tibbr allows people to follow not only people but also Subjects, Systems, Processes, Governance. This means people can watch activity streams of systems. System can be a Point of Sales POS Terminal or an assembly line. Just imagine how important this would be for a line manager to have this information cumming onto his wall. Not only that Tibbr can be inegrated with lagacy systems like Oracle ERP products. For example it can be integrated with Oracle Expenses which shows different expenses the subordinates has done and expects the approval from the Manager. Once this kind of wall post is clicked Tibbr will bring up the necessary interface of the legacy system which is the Oracle Expece Approval form in this case so that the  manager can do the approval staying inside Tibbr.


Tibcast of Tibbr allow a person to initiate a conference call or a presentation session. The initiator can select the presenter and once done Tibcast will show the webcam outputs of each memeber plus the desktop of the presenter which is screen shared. The edge of this feature is if the iniitator selected a person who is offline at
the time of the conference he will get a recorded version of the conference as a screecast which will be poped on his wall.

The voice memmo feature of Tibbr allows people to record somthing using the Tibbr smart phone app and post it to the Tibbr wall.

Tibbr also has widgets created to show activity streams which can be hooked into a CMS. These widgets are context aware which is it will filter out activities and show activities related to the page which the widget is sitting on.

It also has got this feature called  Tibbr communities. Just like Google+ Circles it allows to broadcast messages only to the interested community. This is like managing multiple social networks from a single location which manages Access, Policies and Authentications all at once.







 

Monday, May 2, 2011

Extending javascript functions

Method 1/

function Animal(name){
    this.name = name;
}
Animal.prototype.talk = function(){
    console.log("My name is "+this.name);
}
var a = new Animal("Brendan Eich");
a.talk();
var json = '{name: "Tim Berners-Lee"}'
var b = eval(b);
$.extend(b, Animal.prototype);
b.talk();

Method 2/

// declare function foo
var foo = function (a) { alert(a); };
// modify function foo
foo = new Function (
  "a",
  foo.toSource()
    .replace("alert(a)", "alert('function modified - ' + a)")
    .replace(/^function[^{]+{/i,"")  // remove everything up to and including the first curly bracket
    .replace(/}[^}]*$/i, "")  // remove last curly bracket and everything after
);
 
Method 3/
function m1(){
  alert('Initial function')
} 
webBrowse1.Navigate(@"javascript:m1=new function(alert('Replace after.'))");
 

Wednesday, March 9, 2011

Useful Linux commands

Descriptive processes list:
ps -aef -o pcpu= -o pid= -o time= -o vsz= -o user= -o args=

Ping broadcast:

ping -b [a].[b].[c].255

nmap -sP 192.168.0.0/24 or nmap -sP 198.162.0.*

arp list
arp -a

tcp dump:
sudo tcpdump -i en0

Linux version:
uname -a or cat /proc/version

Software RAID:
cat /proc/mdstat

CPU Information:
less /proc/cpuinfo

copy file without rsync scp or ftp
netcat listen on port 1212 (> 1024 if not root) waiting for files
nc -l 1212 | gunzip -c | tar xvfp -
send files from source
tar cfp - /home/myuser/mydir | gzip -c | nc -w 10 destination_ip 1212

Linux Performance Monitoring: htop, dstat, bmon, iftop, ifstat, sysstat
http://server.dzone.com/articles/6-command-line-tools-linux

List open files and associated by process IDs
lsof -p 6714 | grep REG

Thursday, December 23, 2010

Accents becoming garbage on form submits and Character Encoding

How non-ASCII data like Accents and Apostrophes gets displayed in HTML, retrieving such data through form fields and how data gets stored in the database with correct format is handled in few place. The trick is, in all these places the encoding format should be the same, which is typically UTF-8.

Following are the locations where encoding format is defined and how its done.

Page content format:
Set the HTML file's character encoding format through HTTP headers or meta tags.
Eg: < meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />  
If this is not set browsers assume  ISO-8859-1 to be the default character encoding format.

Form submits:
GET and POST request parameter are also encoded according to the page encoding format.
This can be overridden by using the accept-charset="UTF-8" attribute in the form tag. 


Server Request Parameters:
In Servelts, JSPs and Portlets, request paramter encoding format can be set by the following statement.
request.setCharacterEncoding("UTF-8");
If this is not set the web servers assumes the default format as ISO-8859-1.
To make the things more generic, the encoding format can be set
in doFilter method of a Servlet Filter.

public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain chain)
   throws IOException, ServletException {
        if (request.getCharacterEncoding() == null) {
            String encoding = "UTF-8";
            if (encoding != null)
                request.setCharacterEncoding(encoding);
        }

chain.doFilter(request, response);       

//do it again, since JSPs will set it to the default       
     if (encoding != null)
        request.setCharacterEncoding(encoding);

}

One tricky point is if the form encryption type is "multipart/form-data" then each value should be
read by specifying the encoding type like below.

FileItem item = (FileItem) iter.next();
if (item.isFormField())
value = item.getString("UTF-8").trim();

The final point the data encoding format should be handled is the Database it self. This should be
set at the time the database is created. If this format is changed after creating the database, existing
data will be corrupted.


Reference : http://java.sun.com/developer/technicalArticles/Intl/HTTPCharset/

Friday, December 10, 2010

Oracle License

Oracle’s technology products are licensed using two metrics: Named User Plus (NUP) or Processor.

Named User Plus Metric:
This metric is used in environments where users can be identified and counted. Named User Plus includes both humans and non-human operated devices. A licensed Named User Plus may access the program on any instances where it is deployed, provided that the minimum on each server is met.
Named User Plus minimum is 25 Named Users Plus per Processor. Total number of Named User Plus Licenses required are  either Named User Plus for total processors or Total number of Named Users which ever is greater.

Processor Metric:
This metric is mostly used in environments where the software users cannot be easily identified or counted, such as internet-based applications.
Total Number of Licensable Processors = (number of processors) *(number of cores)*(multi-core factor)

Multi-core factor is:
0.25 for SUN's UltraSparc T1 processors
0.50 for Intel and AMD processors
0.75 for all other multi-core processors
1.00 for single-core processors

Useful commands to check the server configurations:
Number of CPUs and Cores => grep -i core /proc/cpuinfo
processor model and all other info => cat /proc/cpuinfo
Linux Version => cat /proc/version

Subscribe