By default R version 2.14.1 available on my Ubuntu 12.04 LTS system. I decide to generate some interactive graphs in R but I was not able to generate them because 2.14.1 is very old version of R. So, I decided to upgrade my R from 2.14.1 to 3.2.2 version. So, added an entry into sources.list as shown in following picture.
List of R mirrors can be found at https://cran.r-project.org/mirrors.html.
After made an entry into sources.list and update the system by running following command.
sudo apt-get update
This update command some times throws an error like "GPG error NO_PUBKEY". We can fix this error using y-ppa-manager. To install y-ppa-manager run the following list of commands.
sudo add-apt-repository ppa:webupd8team/y-ppa-manager // adding repository for y-ppa-manager
sudo apt-get update // updating repository
sudo apt-get install y-ppa-manager // Installing y-ppa-manager
After installing y-ppa-manager, start y-ppa-manager by typing the same in the terminal and it will display GUI as shown below.
Click on Advanced Option and then Select "try to import all missing GPG keys" and click on OK as shown in following figure. It will fix the error "GPG error NO_PUBKEY". Run sudo apt-get update again to see error is fixed or not.
Tuesday, September 8, 2015
Wednesday, August 26, 2015
R and JRI Integration with Java for Analytics
Posted by
umencs
Different ways(rJava with JRI, RServ, RCaller, Renjin) are there to integrate R with Java to perform some analytic work inside the Java (Servlet / controller). In this post I would like to show, how you can integrate rJava and JRI with java to run R code inside Java.
JRI Integration with Java: JRI stands for Java-R Interface and It is a part of rJava. Using rJava we can manipulate Java objects inside R using JNI (Java Native Interface) which is the natural way of calling compiled binary code in Java but JRI is reverse of it. In JRI we can call R inside Java. This library has some merit among others, in means of full interoperability between R and Java using callbacks. It is robust for large scale projects, however, it is painless at start-up process for relatively small projects.
To Install R on debian based systems run the following command
sudo apt-get install r-base-dev
Now to install rJava package in R run the following command
sudo apt-get install r-cran-rjava
Other wise you can run following command in R to install rJava
install.packages("rJava")
Once you install the R and rJava, to find the location of JRI inside rJava run the following command in R.
system.file("jri",package="rJava")
Now export R_HOME=/usr/lib/R, LD_LIBRARY_PATH=/usr/lib/R/site-library/rJava/jri into environment and add both of them in the Java library path also.
Now open your eclipse create a simple Java project "JRITest" with the below mentioned code. Before running the code in eclipse set R_HOME and LD_LIBRARY_PATH environment variables in eclipse. For setting up environment variables in eclipse
Right Click on Project -> Run As -> Run Configurations -> Environments then add environment variables with their values as shown below.
Sample Code To Test JRI In Java:
Sample Input Output:
JRI Integration with Java: JRI stands for Java-R Interface and It is a part of rJava. Using rJava we can manipulate Java objects inside R using JNI (Java Native Interface) which is the natural way of calling compiled binary code in Java but JRI is reverse of it. In JRI we can call R inside Java. This library has some merit among others, in means of full interoperability between R and Java using callbacks. It is robust for large scale projects, however, it is painless at start-up process for relatively small projects.
To Install R on debian based systems run the following command
sudo apt-get install r-base-dev
Now to install rJava package in R run the following command
sudo apt-get install r-cran-rjava
Other wise you can run following command in R to install rJava
install.packages("rJava")
Once you install the R and rJava, to find the location of JRI inside rJava run the following command in R.
system.file("jri",package="rJava")
Now export R_HOME=/usr/lib/R, LD_LIBRARY_PATH=/usr/lib/R/site-library/rJava/jri into environment and add both of them in the Java library path also.
Now open your eclipse create a simple Java project "JRITest" with the below mentioned code. Before running the code in eclipse set R_HOME and LD_LIBRARY_PATH environment variables in eclipse. For setting up environment variables in eclipse
Right Click on Project -> Run As -> Run Configurations -> Environments then add environment variables with their values as shown below.
Sample Code To Test JRI In Java:
Tuesday, June 23, 2015
Problems Faced By Motor Disability Persons In HCI
Posted by
umencs
Computer
trainers often comment on the fact that conventional devices are hard
to use whose fingers might not be as steady or mobile anymore.
Moreover Limited muscular control can cause lack of coordination or
involuntary movement or impede movement altogether. Wide range of
problems are faced by physical / motor disability persons in
accessing computers, Some of them are as follows.
- Pressing key board keys continuously- A physically challenged user can find pressing key board keys continuously for typing to be laborious due to limitations in motor control.
- Additional key press problem- During typing, A key adjacent to the intended key may be activate accidentally.
- Key bounce problem- The end user may unintentionally presses the intended key more than once.
- Difficulty in using hot keys- Some times it is not even easy for normal users to use hot keys. So, obviously motor disabilities find it more difficult to use SHIFT, CTRL and ALT keys with the combination of any other Keys.
- Keys transposition error- When two keys are typed in the wrong order, a transposition error has occurred. Motor disabilities usually face this problem.
- Mouse pointing problem- Mouse pointing is there in almost every operation of mouse like selecting one icon, among so many icons and closing an active window with mouse etc. So, pointing is the most fundamental mouse operation and also one of the most difficult for motor disabilities because Mouse pointing involves moving pointer in a desired direction and positioning at required place.
- Selection of text- involves to hold down mouse button and drag or hold down Shift key and press right arrow continuously. So, physically challenged people face problem in selection of text.
- Hand-eye coordination problem- Hand-eye coordination is the ability of the vision system to coordinate the information received through the eyes to control, guide, and direct the hands in the accomplishment of a given task. Some kind of motor disabilities suffer from this problem because their hands doesn't give them enough support to process information received by eyes.
- Drag and drop problem- Once a drag had been started, the most common difficulty is in raising the mouse button in the correct position at the end of the drag. Another common problem is in holding down the mouse button while moving the mouse to the target.
Sunday, June 14, 2015
C and C++ Code Counter - A Software Metric Tool
Posted by
umencs
CCCC ( C and C++ Code Counter) a software metrics tool. CCCC analyses and reports measurements of source code in C, C++, and Java. It was developed to augment programmers' instinctive application of numeric rules of thumb about what constitutes high or low quality products with an automated analysis tool. CCCC processes the files listed on its command line. If the file names include ‘-’, read a list of files from standard input.
CCCC will provide the following details/information of the code modules.
- sudo apt-get install cccc
If the tools not available in your linux system repository you can download it from http://sourceforge.net/projects/cccc/ .
Usage: To know the usage of CCCC type the command man cccc in your terminal. A typical command of cccc usage is as follows.
- cccc your_sourcefile_name.cpp
The above command will generate a html page with name cccc.html in your present working directory, which provides the above mentioned information of your modules in the your_sourcefile_name.cpp. A sample cccc.html screen shot is as follows.
CCCC will provide the following details/information of the code modules.
- MVG = McCabe's Cyclomatic Complexity
A measure of the decision complexity of the functions which make up the program.The strict definition of this measure is that it is the number of linearly independent routes through a directed acyclic graph which maps the flow of control of a sub-program. The analyser counts this by recording the number of distinct decision outcomes contained within each function, which yields a good approximation to the formally defined version of the measure. - NOM = Number of modules
Number of non-trivial modules identified by the analyser. Non-trivial modules include all classes, and any other module for which member functions are identified. - LOC = Lines of Code
Number of non-blank, non-comment lines of source code counted by the analyser. - COM = Lines of Comments
Number of lines of comment identified by the analyser - L_C = Lines of code per line of comment
Indicates density of comments with respect to textual size of program - M_C = Cyclomatic Complexity per line of comment
Indicates density of comments with respect to logical complexity of program - IF4 = Information Flow measure
Measure of information flow between modules suggested by Henry and Kafura. The analyser makes an approximate count of this by counting inter-module couplings identified in the module interfaces.
Installation: CCCC is included in most of the linux operating systems repositories. You just need to type the following command to install CCCC on debian based systems.
- sudo apt-get install cccc
If the tools not available in your linux system repository you can download it from http://sourceforge.net/projects/cccc/ .
Usage: To know the usage of CCCC type the command man cccc in your terminal. A typical command of cccc usage is as follows.
- cccc your_sourcefile_name.cpp
The above command will generate a html page with name cccc.html in your present working directory, which provides the above mentioned information of your modules in the your_sourcefile_name.cpp. A sample cccc.html screen shot is as follows.
Wednesday, May 20, 2015
Workshop on Oracle 11g
Posted by
umencs
Workshop on Oracle 11g - Database Design using Object Oriented Features: If you are a database enthusiast, then get the maximum benefit from this one day workshop on Oracle 11g by Mr. Sameer Dehadrai. More details can be found in the following picture / brochure and the Registration can be done at: http://tinyurl.com/lolyj7h
Monday, May 18, 2015
Dooms Day Algorithm to Find Week Day of Given Date
Posted by
umencs
Using Dooms Day Algorithm / Rule any one can find the week day of given date between 1800 - 2199 years. So, The dooms day rule / formula is as follows
Dooms day = Anchor Day + [Year/12] + Remainder[Year/12] + [Remainder[Year/12]]/4
If the given date's year falls,
between 1800-1899, The Anchor Day is Friday
between 1900-1999, The Anchor Day is Wednesday
between 2000-2099, The Anchor Day is Tuesday
between 2100-2199, The Anchor Day is Sunday
In the Above formula Year is last 2 digits of given date's year and in above equation solving wherever we get decimal values we have to take integer values only.
Once we get the dooms day for the given date's year using above formula, that dooms day will fall on last day of February (if given year is normal year on Feb 28, otherwise Feb 29), April 4 (4/4), June 6 (6/6), August 8 (8/8), October 10 (10/10) and December 12 (12/12).
Example: Lets find the week day of August 15, 1947.
The given date's year 1947 falls between 1900-1999 so the Anchor day is Wednesday.
Dooms day = Wednesday + [47/12] + Remainder[47/12] + [Remainder[47/12]]/4
Dooms day = Wednesday + 3 + 11 + 2
Dooms day = Wednesday + 16 (Divide this number by 7 and take remainder to find number of odd days)
Dooms day = Wednesday + 2 = Friday.
So the Dooms day for year 1947 is Friday and It will fall on August 8 as I said earlier. So, If August 8 is Friday after one week i.e., on August 15 is also going to be Friday.
So finally August 15, 1947 is Friday :-).
Dooms day = Anchor Day + [Year/12] + Remainder[Year/12] + [Remainder[Year/12]]/4
If the given date's year falls,
between 1800-1899, The Anchor Day is Friday
between 1900-1999, The Anchor Day is Wednesday
between 2000-2099, The Anchor Day is Tuesday
between 2100-2199, The Anchor Day is Sunday
In the Above formula Year is last 2 digits of given date's year and in above equation solving wherever we get decimal values we have to take integer values only.
Once we get the dooms day for the given date's year using above formula, that dooms day will fall on last day of February (if given year is normal year on Feb 28, otherwise Feb 29), April 4 (4/4), June 6 (6/6), August 8 (8/8), October 10 (10/10) and December 12 (12/12).
Example: Lets find the week day of August 15, 1947.
The given date's year 1947 falls between 1900-1999 so the Anchor day is Wednesday.
Dooms day = Wednesday + [47/12] + Remainder[47/12] + [Remainder[47/12]]/4
Dooms day = Wednesday + 3 + 11 + 2
Dooms day = Wednesday + 16 (Divide this number by 7 and take remainder to find number of odd days)
Dooms day = Wednesday + 2 = Friday.
So the Dooms day for year 1947 is Friday and It will fall on August 8 as I said earlier. So, If August 8 is Friday after one week i.e., on August 15 is also going to be Friday.
So finally August 15, 1947 is Friday :-).
Thursday, January 8, 2015
Recursive Makefile for Sub-Directories
Posted by
umencs
As we know, compiling is very tedious work, specially when we want to include several source files and have to type the compiling command every time we want to do compiling. It is even more difficult when our source files are in nested sub- directories. To escape from these tedious work most of the people create Makefile. Makefile is a special format file that together with the make utility will help to automatically compile our several source files. The advantage of using Makefile is that it performs incremental compilation.
Here, I would like to share a Makefile which is capable of compiling source files presented in nested sub-directories, creating objects of each source file in its directory and creating a binary from all object files presented in nested sub-directories. (NOTE: if you are using following Makefile, make sure to use tab at required places)
Makefile
***********
PREFIX = /usr/local
INCLUDE = /usr/include/X11/
PWDDIR = $(shell pwd)
CXX = g++
RM = rm -vf
CONSTANTS = -D__GXX_EXPERIMENTAL_CXX0X__
CPPFLAGS = -O0 -g3 -Wall -c -fmessage-length=0 -fpermissive -std=c++0x
LDFLAGS = -lX11 -lXi -lXtst -lm
BINARY = gframework_demo
DEPS = $(shell find . -name '*.hpp')
SRCFILES = $(shell find . -name '*.cpp')
OBJFILES = $(SRCFILES:%.cpp=%.o)
all: $(BINARY)
$(BINARY): $(OBJFILES)
$(CXX) -I$(INCLUDE) -o "$(BINARY)" $(OBJFILES) $(LDFLAGS)
%.o: %.cpp $(DEPS)
$(CXX) $(CONSTANTS) -I$(INCLUDE) -I"$(PWDDIR)" $(CPPFLAGS) -c $< -o $@
clean:
$(RM) $(shell find . -name '*.o') *~
$(RM) $(BINARY)
install: $(BINARY)
install -m 0755 $(BINARY) $(PREFIX)/bin
.PHONY: install
Here, I would like to share a Makefile which is capable of compiling source files presented in nested sub-directories, creating objects of each source file in its directory and creating a binary from all object files presented in nested sub-directories. (NOTE: if you are using following Makefile, make sure to use tab at required places)
Makefile
***********
PREFIX = /usr/local
INCLUDE = /usr/include/X11/
PWDDIR = $(shell pwd)
CXX = g++
RM = rm -vf
CONSTANTS = -D__GXX_EXPERIMENTAL_CXX0X__
CPPFLAGS = -O0 -g3 -Wall -c -fmessage-length=0 -fpermissive -std=c++0x
LDFLAGS = -lX11 -lXi -lXtst -lm
BINARY = gframework_demo
DEPS = $(shell find . -name '*.hpp')
SRCFILES = $(shell find . -name '*.cpp')
OBJFILES = $(SRCFILES:%.cpp=%.o)
all: $(BINARY)
$(BINARY): $(OBJFILES)
$(CXX) -I$(INCLUDE) -o "$(BINARY)" $(OBJFILES) $(LDFLAGS)
%.o: %.cpp $(DEPS)
$(CXX) $(CONSTANTS) -I$(INCLUDE) -I"$(PWDDIR)" $(CPPFLAGS) -c $< -o $@
clean:
$(RM) $(shell find . -name '*.o') *~
$(RM) $(BINARY)
install: $(BINARY)
install -m 0755 $(BINARY) $(PREFIX)/bin
.PHONY: install
Subscribe to:
Posts (Atom)











