Shuva's blog
The Computer Security Radar Page link 
Thursday, April 9, 2009, 04:06 PM - Links and Bookmarks
I liked this live page

Computer Network Defence Operational Picture

Hope you like(bookmark) it too.

Happy Scanning.//
add comment ( 71 views )   |  0 trackbacks   |  permalink   |   ( 3 / 88 )
C++ : A lock with a timeout : Example code 
Thursday, April 9, 2009, 11:18 AM - Programming
When we use a mutex and wait on it, we basically ASSUME that somebody else is going to release the lock. Most of the time this assumption works. But there can be a situation when you dont want to wait forever on the lock. In such cases we want to have a GetLock() function that has a time out.

One such lock exists in Boost and they are:
boost::timed_mutex and
boost::recursive_timed_mutex

Unfortunately there are too many good resources that explain boost locks with examples. Here is one crude example that I had to write for my own practice.


#include <iostream>
#include <boost/thread/thread.hpp>
#include <boost/thread/locks.hpp>
#include <sys/types.h>
#include <linux/unistd.h>

_syscall0(pid_t,gettid)

boost::timed_mutex m_mutex;

void Thread1_CreateObjectAndWait() {
//Get the lock
boost::timed_mutex::scoped_lock guard(m_mutex);
std::cout << gettid() << ": Thread got the lock" << std::endl;

boost::system_time timeout = boost::get_system_time() +
boost::posix_time::milliseconds(10000);

std::cout << gettid()
<< ": Waiting for thread 2 to unlock or else timeout"
<< std::endl;
bool ret = m_mutex.timed_lock(timeout);

if (ret == true) {
std::cout << gettid() << ": Got the lock before timeout"
<< std::endl;
} else {
std::cout << gettid() << ": Got the lock after timeout"
<< std::endl;
}

}

void Thread2_Unlock() {
std::cout << gettid() << " : Unlocking the mutex " << std::endl;
m_mutex.unlock() ;
}


int main() {

//Create thread 1, which will lock itself and wait for thread 2
//to unlock or timeout.
boost::thread thread1(&Thread1_CreateObjectAndWait);

//sleep some time to give time for thread 1 to start.
sleep(2);

//create thread 2 which will unlock before thread 1 gets a timeout.
boost::thread thread2(&Thread2_Unlock);

//Create thread 3, which will lock itself and wait for thread 2
//to unlock or timeout.
boost::thread thread3(&Thread1_CreateObjectAndWait);

thread1.join();
thread2.join();
thread3.join();
return 0;
}


The above code compiled with g++ with the following command:

g++ example.cpp -I<path to boost include dir>  <path to boost lib dir>/libboost_thread-gcc34-mt.a  -lpthread


The o/p should look something like:
28061: Thread  got the lock
28061: Waiting for thread 2 to unlock or else timeout
28062 : Unlocking the mutex
28061: Got the lock before timeout
28063: Thread got the lock
28063: Waiting for thread 2 to unlock or else timeout
28063: Got the lock after timeout



PS: To compile on Windows, replace gettid() with GetCurrentThreadId() and remove the linux specific header file.

Happy Boosting.//

add comment ( 1042 views )   |  0 trackbacks   |  permalink   |   ( 3 / 84 )
Bash Arithmetic : Leading 0 (zero) errors : value too great for base 
Sunday, March 22, 2009, 02:35 PM - Tips and Tricks
It can be quite frustrating at time when you cannot get a simple thing as doing a arithmetic expression where the number has a leading zero. I am talking of Bash arithmetic.

Example:
let x=7*5 is OK.


let x=07*5 is also OK

But
let x=08*5 gives the following error:
bash: let: x=081: value too great for base (error token is "081")

The reason is that numbers with leading 0 is treated as octal in Bash. So 01, 02, 03 ...07 would not have any problem. 08, 09 are not valid octal numbers and hence treated so.

OK, OK. How to get rid of a leading zero. Unfortunately in Bash its not so straight forward. Here are some useful hints:

1. Use a loop like this to get rid of leading zeros from the variable x
while [[ $a = 0* ]]
do
a=${a#0}
done


2. The second solution is to explicity mention that it is a base 10 number, which can be quite cumbersome.

y=081
let x=10#$y*7; #Treat 08 as a base 10 digit.



Happy Bashing.//

add comment ( 420 views )   |  0 trackbacks   |  permalink   |   ( 2.9 / 31 )
Online Grevience forum in India. 
Wednesday, February 11, 2009, 04:49 AM - General
India as a country does not stand very well in the list of corrupt countries in the world. One of the most important things that happened in the last few years is the Right to Information Act.

I received this email from my colleague this morning and its one of the few emails that is actually worth forwarding and spreading the word. So here it is:


Hi all

for your information

Government of India has an on-line Grievance forum at http://pgportal.gov.in/ Can you imagine this is happening in INDIA?

The govt. wants people to use this tool to highlight the problems they faced while dealing with Government officials or departments like Passport Office, Electricity board, BSNL/MTNL, Railways etc.
So use this grievance forum and educate others who don't know about this facility. This way we can at least raise our concerns instead of just talking about the ' System ' in India.

Invite your friends to contribute for many such happenings.

PLEASE SPREAD THIS MESSAGE IF U WANTS OUR INDIA TO HAVE A BETTER TOMORROW & FORWARD THIS MAIL TO AS MANY AS POSSIBLE.

Thanks

Taheer Mohd


Happy Grievancing.//
add comment ( 486 views )   |  0 trackbacks   |  permalink   |   ( 2.7 / 35 )
Free email server setup for your domain or small business through Google Apps 
Tuesday, January 20, 2009, 12:08 PM - Analysis and Reviews
If you have a small business, running a non-profit org, or a school, you probably have a website with your own registered domain name. You might also have the requirement of setting up email accounts for your domain, like owner@your-domain.com, etc. Normally, you would be looking for a service provider which supports email along with hosting your site. I would strongly recommend that you switch over to Google Apps to support your Email requirements. All you need is ability to update DNS settings for your domain which your service provider generally provides. Your existing website and other stuff just remains the way it is.

Last week, I switched over the Email system of a website to Google Apps and it took just 20 minutes to do everything. The migration was a cake-walk. Once you register your domain with Google Apps, you would get detail instructions on how to do that, but in a nut shell, you just have to update your domains DNS settings. Technically you would be updating your DNS's CNAME and MX records. Click here to know more about configuring MX records.

The main reasons why we switched over were:
1. Our main server was handling around 1000 emails per day and the usage was continuously growing. Moving to Google Apps meant less usage of resources on the server.

2. Google was much better in handling spam than we could do with open-source anti spam engines. Anti-spam engines take a lot of server resources too.

3. You could login into either http://mail.mydomain.com to check emails or even pull it into your personal gmail address through POP access.

4. You can create groups and specially a catchall@mydomain.com email address that will catch emails addressed to users that you havent created manually.

5. Sites like hotmail uses SPF technology and tend to flag emails coming from several servers as either SPAM or they just reject it. With Google Apps, you have a better chance that they will reach hotmail users. It can be quite embrassing for your business to send an email to a hotmail user which never reaches them or lands in their SPAM folder. You can read more about Hotmail and SPF nightmare here.

There are basically two packages in Google Apps. A free Standard package which gives you only 7GB storage space and a $50/user Premium package.

Check them out at Google Apps comparison page.

The best thing about Google Apps email is the hassle free migration process and their system simply works. Their self-help documentation is also properly laid out to answer all your questions.

Google Apps is not just about Email, but a complete solution for small office setup. I am writing about Email only because I am a very satisfied user of the email system.

Helpful links:
Google Apps getting started guide.
Google Apps Email FAQ page

Happy Google Appsing.//
add comment ( 91 views )   |  0 trackbacks   |  permalink   |   ( 3 / 50 )

<<First <Back | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | Next> Last>>