Wednesday, June 11, 2008
காருக்கு கவர் போட்ட கதை
இன்று, உதவுவதற்கு எவருமில்லை; காற்று கூட அமைதியாகவே இருந்தது. பல முயற்சி செய்தும் ஒரு பலனும் இல்லை. எனக்கே காமெடியாக இருந்தது. கவரை போடுவதும், அது விலகி கிழே விழுவதுமாக இருந்தது. யாரவது பார்த்திருந்தால் என்னை ஒரு கிறுக்கன் என்றே நினைத்திருப்பார்கள்.
நான் செய்த தவறு கடைசியாகத்தான் எனக்கு புரிந்தது. நான் கவரை காரின் முன் பக்கத்திலிருந்து போட முயற்சித்தேன். முன் பக்கம் தாழ்வாக இருப்பதால் கவரானது வழுக்கி விலகியது. சரி, ஒரு முறை பின்பக்கத்திலிருந்து முயற்சிப்போம் என்று போட்டு பார்க்க; அட இவ்வளவு எளிதாக கச்சிதமாக பொருந்துமா என்று ஆச்சரியப்பட்டேன்.
இக்கதையிலிருந்து கற்றுக்கொள்ளவேண்டியது காருக்கு கவர் போடும் போது பின் பக்கத்திலிருந்து தொடாங்க வேண்டும். முன் பக்கத்திலிருந்து தொடங்க வேண்டுமானால் யாராவது துணைக்கு வேண்டும்.
Tuesday, May 27, 2008
The system cannot execute the specified program.
To my surprise, the dependency walker was showing a conflict with MPR.dll file for a missing symbol (WNetRestoreConnectionA). Since this dll is delayed loadable, the missing symbol should not be the reason for the application not starting.
Then I tried installing .NET 2.0 redistributable package in the deployment machine hoping to see the problem solved. As guessed right, the problem still persists. Dependency walker was still showing the following error message "Application failed to start because side-by-side configuration is incorrect".
Later, luckily I found a clue to a similar problem at CodeGuru.com where it was adviced to install the redistributable VC++ 2005 package to get rid of the problem. I got the package from Microsoft Download Centre and installed it on my deployment machine. Now, my application is running happily. Thanks to people who write at CodeGuru.com.
Wednesday, April 9, 2008
compiling with std::min, std::max in Visual Studio 2008
I had a program which was working well in Visual Studio 6.0. I wanted to upgrade my compiler to VS9.0. When I compiled the code (snippet listed below), I got the following error message.
void
SVD::Rank( int inRank )
{
mRank = inRank;
int max_rank = std::min( mS.size(), mU.size() ); <-- Line 329
if( mRank < 0 || mRank > max_rank )
{
mRank = max_rank;
}
} // SVD::Rank
1>------ Build started: Project: sci, Configuration: Debug Win32 ------
1>Compiling...
1>SVD.cpp
1>d:\projects\dev\libs\sci\svd.cpp(329) : error C2589: '(' : illegal token on right side of '::'
1>d:\projects\dev\libs\sci\svd.cpp(329) : error C2059: syntax error : '::'
1>Build log was saved at "file://d:\projects\dev\libs\sci\Debug\BuildLog.htm"
1>sci - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 1 up-to-date, 0 skipped ==========
When I googled for this error, I found the following article from DevX.com (http://www.devx.com/tips/Tip/14540).
The Standard Library defines the two template functions std::min() and std::max() in the <algorithm> header. In general, you should use these template functions for calculating the min and max values of a pair. Unfortunately, Visual C++ does not define these function templates. This is because the names min and max clash with the traditional min and max macros defined in <windows.h>. As a workaround, Visual C++ defines two alternative templates with identical functionality called _cpp_min() and _cpp_max(). You can use them instead of std::min() and std::max().To disable the generation of the min and max macros in Visual C++, #define NOMINMAX before #including <windows.h>.
Interesting, this solution was not really doable for me as I was compiling with ACE libraries (TAO 1.5a) with STLport (STL 5.1.5). With ACE, I would be including <ace/OS.h> instead of <windows.h> and inserting #define NOMINMAX before #include <ace/OS.h> is not a good solution for me. So I did the following. Wherever, I use std::min, std::max, I had included <algorithm> header, but before that inclusion of <algorithm> I had forcible undefined min and max symbols like the following
#undef min
#undef max
#include <algorithm> // for std::sort, std::min, std::max
I got my source compiled without errors now.
Tuesday, April 8, 2008
Compile STLport 5.1.5 with Visual Studio 2008
As of today, the lastest version of STLPort is 5.1.5 and Visual Studio is 9.0 (2008).
STLport 5.1.5 does not directly support VS9 environment. It contains solution files for VS8 (2005). So, you need to make some tweaks make compile STL 5.1.5 with VS9.
I extracted the package at d:\projects in my WinXP machine. Since, there is no option for MSVC 9, I used MSVC 8.
D:\projects\STLport-5.1.5>cd build\lib
D:\projects\STLport-5.1.5\build\lib>dir
Volume in drive D is BUILD
Volume Serial Number is E451-615BDirectory of D:\projects\STLport-5.1.5\build\lib
04/08/2008 02:18 PM <DIR> .
04/08/2008 02:18 PM <DIR> ..
04/19/2005 02:55 AM 9 .cvsignore
11/01/2005 01:55 PM 393 aCC.mak
03/25/2006 01:27 AM 638 bcc.mak
11/18/2005 04:00 PM 422 CC.mak
07/08/2006 01:15 AM 4,049 configure
03/31/2007 02:41 AM 15,847 configure.bat
11/27/2005 02:25 AM 442 dmc.mak
05/31/2006 06:38 PM 1,156 evc.mak
12/27/2005 01:48 PM 383 gcc.mak
04/19/2005 02:55 AM 470 icc.mak
11/27/2005 02:50 AM 39 icl.mak
10/08/2007 12:49 AM 1,226 Makefile.inc
07/12/2006 01:43 AM 1,049 msvc.mak
11/01/2005 01:55 PM 401 mwccnlm.mak
02/08/2006 02:04 AM 1,881 nmake-src-prefix.mak
11/20/2005 09:16 PM 2,107 README
16 File(s) 30,512 bytes
2 Dir(s) 151,138,304 bytes freeD:\projects\STLport-5.1.5\build\lib>configure -c msvc8
STLport Configuration Tool for WindowsSetting compiler: Microsoft Visual C++ 2005
Done configuring STLport.
Please type "nmake /fmsvc.mak" to build STLport.
Type "nmake /fmsvc.mak install" to install STLport to the "lib"
and "bin" folder when done.D:\projects\STLport-5.1.5\build\lib>
When I ran nmake /fmsvc.mak, I got the following error:
D:\projects\STLport-5.1.5\build\lib>nmake /fmsvc.mak
Microsoft (R) Program Maintenance Utility Version 9.00.21022.08
Copyright (C) Microsoft Corporation. All rights reserved.cl /nologo /W4 /Wp64 /GR /EHsc /Zm800 /GL /MD /Zi /O2 /DWIN32 /D_WINDOWS /DNDEBUG /I../../stlport /c /Foobj\
vc8\shared\dll_main.o /Fdobj\vc8\shared\stlport.5.1.pdb ../../src\dll_main.cpp
cl : Command line warning D9035 : option 'Wp64' has been deprecated and will be removed in a future release
dll_main.cpp
D:\projects\STLport-5.1.5\stlport\stl/_locale.h(108) : error C2487: 'collate' : member of dll interface class may not be
declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_locale.h(109) : error C2487: 'ctype' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_locale.h(110) : error C2487: 'monetary' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_locale.h(111) : error C2487: 'numeric' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_locale.h(112) : error C2487: 'time' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_locale.h(113) : error C2487: 'messages' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_locale.h(118) : error C2487: 'all' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(74) : error C2487: 'right' : member of dll interface class may not bedeclared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(75) : error C2487: 'internal' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(76) : error C2487: 'dec' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(77) : error C2487: 'hex' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(78) : error C2487: 'oct' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(79) : error C2487: 'fixed' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(80) : error C2487: 'scientific' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(81) : error C2487: 'boolalpha' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(82) : error C2487: 'showbase' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(83) : error C2487: 'showpoint' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(84) : error C2487: 'showpos' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(85) : error C2487: 'skipws' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(86) : error C2487: 'unitbuf' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(87) : error C2487: 'uppercase' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(88) : error C2487: 'adjustfield' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(89) : error C2487: 'basefield' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(90) : error C2487: 'floatfield' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(93) : error C2487: 'goodbit' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(94) : error C2487: 'badbit' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(95) : error C2487: 'eofbit' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(96) : error C2487: 'failbit' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(99) : error C2487: '__default_mode' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(100) : error C2487: 'app' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(101) : error C2487: 'ate' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(102) : error C2487: 'binary' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(103) : error C2487: 'in' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(104) : error C2487: 'out' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(105) : error C2487: 'trunc' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(109) : error C2487: 'beg' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(110) : error C2487: 'cur' : member of dll interface class may not be declared with dll interface
D:\projects\STLport-5.1.5\stlport\stl/_ios_base.h(115) : error C2487: 'end' : member of dll interface class may not be declared with dll interface
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.EXE"' : return code '0x2'
Stop.D:\projects\STLport-5.1.5\build\lib>
When I checked what could be potentially wrong at _locale.h, I found the following code:
typedef int category;
#if defined (_STLP_STATIC_CONST_INIT_BUG)
enum _Category {
#else
static const category
#endif
none = 0x000,
collate = 0x010,
ctype = 0x020,
monetary = 0x040,
numeric = 0x100,
time = 0x200,
messages = 0x400,
all = collate | ctype | monetary | numeric | time | messages
#if defined (_STLP_STATIC_CONST_INIT_BUG)
}
#endif
;
Looks like, when multiple static variable are declared in one line, the compiler would report the above error message. This is actually attributed as a compiler bug. To get around with this compiler bug, STL has provided a macro namely _STLP_STATIC_CONST_INIT_BUG.
I added the following line to stlport/stl/config/user_config.h to activate the bug work around during the compilation process.
#define _STLP_STATIC_CONST_INIT_BUG 1
Then, I ran the following commands to get the source compiled and installed at lib and bin folders.
nmake /fmsvc.mak ( compilation )
nmake /fmsvc.mak install ( install lib, dll to lib and bin folders )
Great, got STLport compiled perfectly!
Friday, March 14, 2008
Netgear DG834G Wireless Security Setting
The wireless network thus setup using DG834G after connecting to BSNL broadband is not security enabled by default. If you don't enable encryption for the wireless media, anyone can connect to the internet using your gateway. Let's see how we setup the encryption for our wireless media from the router.
- Login to your router ( 192.168.0.1 ) using "admin"/"password"
- Click on Wireless settings
- Under Wireless Network
- Set the Network (SSID) to a name which is not specific to your identity. Using a generic name is generally advised. In my case, I used "NETGEAR" as the SSID.
- Select "Asia" for Region
- Select "11" for channel ( find out the channel number from your WLAN interface on your laptop or desktop )
- Select "g&b" for Mode
- Under Wireless Access Point
- Check Enable Wireless Access Point
- Check Allow Broadcast of Name (SSID)
- Uncheck Wireless Isolation
- Don't disturb Wireless Station Access List
- Under Security Options
- Select WPA-PSK
- Under WPA-PSK Security Encryption
- Choose an appropriate password
- Click Apply
Under Vista, do the following to pair your laptop with the Gateway
- Open Network Property
- Click Wireless Properties
- Click Security tab
- Select WPA-Personal for Security type
- Select TKIP for Encryption type
- Type the same password that you'd set in the router for Network security key
- Close the Security tab
- Click Details to check whether you have paired with the gateway
Happy Wireless networking..
Wednesday, February 27, 2008
Configuring Wireless LAN of Dell XPS 1530 in Fedora 8
In fedora 8, by default the device is detected and an appropriate driver (iwl3945) is loaded as well. If the wireless network is not secured, the interface works without any modification.
I had configured by ADSL router to have WPA-PSK encryption based security. To make my laptop work with this secured network, the default network configuration dialog does not suffice. But still, we need to setup something in that dialog as well.
- Open system-config-network dialog, choose to edit the wlan0 interface.
- Select the "Wireless Settings" tab.
- Set Mode as "Managed"
- Set Network name (SSID) as "XYZ", where "XYZ" is the SSID you had configured in the router. You may also leave it in "Auto" as well.
- Leave the other inputs as it is.
wlan0 IEEE 802.11g ESSID:"NETGEAR"
Mode:Managed Frequency:2.462 GHz Access Point: Not-Associated
Tx-Power=27 dBm
Retry min limit:7 RTS thr:off Fragment thr=2352 B
Encryption key:off
Link Quality=0 Signal level=0 Noise level=0
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
Note, I have configured my SSID to be "NETGEAR".
Since we have not enabled the security "thing", we are not able to reach the Wireless Access Point. To enable that we need to have the "wpa_supplicant" tool. Using wpa_supplicant, we can bridge the connectivity and security.
First create the wpa configuration file using "wpa_passphrase" command.
wpa_passphrase
Ex: wpa_passphrase NETGEAR alphabeta
This command would generate a file like the following:
network={
ssid="NETGEAR"
#psk="alphabeta"
psk=d0392dff9de884a7163058cebb41592bf7872decda1c8b79b072359bc5e93cac
}
Dump this output to /etc/wpa.conf
Now, you have to run wpa_supplicant as:
bash# /usr/sbin/wpa_supplicant -Dwext -iwlan0 -c/etc/wpa.conf &
Note, I have used the "wireless generic extension (wext)" for the driver configuration. You may get some log message like the following:
Trying to associate with 00:1b:2f:a3:54:f8 (SSID='NETGEAR' freq=2462 MHz)
Associated with 00:1b:2f:a3:54:f8
WPA: Key negotiation completed with 00:1b:2f:a3:54:f8 [PTK=TKIP GTK=TKIP]
CTRL-EVENT-CONNECTED - Connection to 00:1b:2f:a3:54:f8 completed (auth) [id=0 id_str=]
At this point you are probably connected to the Wireless Access Point. Try running "iwconfig" command. The correct output should be like:
wlan0 IEEE 802.11g ESSID:"NETGEAR"
Mode:Managed Frequency:2.462 GHz Access Point: 00:1B:2F:A3:54:F8
Bit Rate=54 Mb/s Tx-Power=27 dBm
Retry min limit:7 RTS thr:off Fragment thr=2352 B
Encryption key:5A83-9BBE-BA9F-5C2B-46D1-0FEC-CE66-475F-A44A-DD05-4B16-63F3-3474-0C46-464A-6CF0 [3]
Link Quality=97/100 Signal level=-29 dBm Noise level=-64 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
try running "/sbin/ifconfig" to see whether you have the device up with an IP address. If IP address is not assigned, run
/sbin/service network restart
or
/sbin/dhclient wlan0
or
/sbin/ifup wlan0
You may probably see a "wmaster0" interface as well, which may be ignored.
Most likely you are done by now.
Happy wireless networking.
Monday, February 25, 2008
DG834G and BSNL Broadband
I have a super-fast (by today's standards) broadband connection provided by BSNL. But BSNL had provided me a wired ADSL router, which has only one RJ45 Ethernet port. I have two desktops and one laptop with me which needs to be connected to the Internet through the broadband connection. BSNL also provides a wireless type 2 ADSL modem, but the general review about that is not so appreciable. Lately, I was told about Netgear DG834G which could be used for my rescue.
I bought Netgear DG834G from Ritchie street, Chennai for Rs 2900. This is a type 2 modem that comes with IEEE 802.11b/g hardware that can support upto 54Mbps data transfer speed and four 10/100Mbps Ethernet ports. The configuration of the modem is pretty straight forward. I had chosen the manual ADSL configuration method in setting up. I had all the details borrowed from the UTStarCom modem given by BSNL. A quick summary of the modem setting is as follows:
ADSL Setting
VPI: 0
VCI: 35
Multiplexing Mode: LLC BASED
DSL Mode: ADSL 2+
Basic Settings
Does your Internet connection require a login? YES
Encapsulation: PPPoE
Login:<BSNL username>
Password:<BSNL password>
Service Name: dataone
Idle timeout: 5
Internet IP Address: Get Dynamically from ISP
Domain Name Server: Get Automatically from ISP
Network Address Translation: Enable
There was a catch here. I did not know the BSNL password. From the ADSL modem, I could get only the username. So I tried using "password revealer" to get the password configured in the BSNL modem (I got the modem pre-configured while BSNL installed it in my home). None of the password revealers work on XP and Vista.
Linux Fedora came for the rescue. Fedora comes with Ethernet promiscuous mode intercepting tools like "tcpdump", "iptraf" etc. I decided to intercept the ADSL modem configuration page for capturing the password which "could" be sent as plain text in the URL. TCPDUMP becomes an ideal tool for this requirement. I summoned "tcpdump" to capture all the packets destined to 192.168.0.1 (ADSL router IP). The command is the following:
tcpdump -A dst host 192.168.0.1 -s 5000 > dump.file
I had asked the command to redirect the outputs to "dump.file", so that I can check the content offline. Once the command started, I opened the ADSL page in my browser (on a machine connected to ADSL via ethernet; also to remind, "tcpdump" runs on this machine!). While browsing through the authentication page and the following pages, "tcpdump" started capturing all the html text transferred between my machine and the ADSL router.
Bingo, the URLs are dumped in the file. To my surprise, the password assigned for my BSNL account was "password". Later, I figured out that "password" is the default password assigned to all pre-configured ADSNL modems. Anyways, even if the password is different, my technique would have fetched the password for me.
This technique will not work for sites like yahoo, etc. Because they don't send the password as plain text, rather they send the MD5 hash equivalent of the password. This technique will not work for any site that is running on HTTPS, as everything sent across or received is encrypted using 128bit SSL encryption.
Netgear DG834G promises reasonable signal strength for 35M (~100feet). It works even if I keep the router is one corner of the house and try to access it from any other place out of which some areas are reachable only after multiple left and right turns.
DG834G is awesome. I recommend this router for domestic BSNL broadband use.
Saturday, February 23, 2008
Mr Jayachandran, JE/Avadi BSNL Exchange
I solemnly agree that there are few passionate people in public service departments. I reside at Thirumullaivoyil which comes under the control of Avadi Township. I had recently applied for BSNL broadband connection, which took little more than a month to really materialize. The broadband department of Avadi Exchange was quick, but the Linemen and the Broadband servicemen were poor. The guy who had come for installation knew nothing about broadband connection. But he was boasting that he is the incharge of all broadband activities. Poor we!
Though, it had taken little extra time, it was really worth waiting for. The speed of BSNL broadband is awesome. While checking the download speed, the ticker showed more than 1.6Mbps. Hmm, all these excitements shattered on day 3. The telephone line went dead. I had made complaints through all possible channels viz. BSNL portal, via 198 AVR, and also through the customer care centre of Avadi Exchange. It is more than a week now, and there is no improvement to this.
But like a ray of hope, I got hold of the BSNL JE's office number. The JE is Mr. Jayachandran. This man is very different from another government employees. I was told that the JE would respond to customer problems ASAP. I had to try several times to get the number connected. At around 11 AM, I got lucky to get the JE on phone. To my surprise, this man is really different. He heard my problem patiently and instantly gave orders to the field people (I was able to hear him calling the Linemen by name to fix the problem immediately). It was like breeze to see a public service person in action. I thanked him several times to have responded very fast.
But, when I came back home, to my surprise the phone line is still dead. Most likely it should be the mistake of the Lineman again. Even though the service call is not completed, I am not getting frustrated. It is just because the way Mr. Jayachandran acted so responsibly.
Mr. Jayachandran, JE BSNL Avadi Exchange, may be contacted at 044-20029423. He comes to office only at 10.30AM Monday-Saturday.
Tuesday, February 12, 2008
Backdoor Entry in IT companies
Recently I had visited a self-financing engineering college for an Invited Talk. I had an opportunity to talk to the placement officer of that college. He said, there has been a radical change in the process of inviting recruiters to the colleges. All bigger IT companies have a much a bigger HR department with a lot of HR executives. Amongst HR heads, there are people who can do "special service" for a premium price. The "backdoor entry" in the former paragraph is a manifestation of this kind of "special service".
The "modified" invitation process is; the placement officer/management strike a deal with possible HR heads on a per-head basis. The placement office pays the HR head lump sum of money (black, ofcourse!). In return the HR head ensures the agreed number of recruitment from the college to their company. There are no stakes for the HR head, because most big IT companies have 100-200% human-resource buffer for their projects. Most likely, the backdoor recruits are for the reserves only. Moreover, the volume of employees in a big IT company is so much that people don't really know the team members by name. An interesting example is; one cannot find the exact number of employees in TCS at any minute (people come in and leave out so much in TCS).
All these should come to an end soon. Recession in IT industry is coming back. Only professionals with quality are going to survive. Let's see what happens...
Sweet Summation Vector
There are two ways to identify the keywords from the Document Text:
- Use all the words in the document text and depending upon their frequency promote them as keywords or drop them as noise ( words with higher frequency are generally noise words )
- In general, scientists maintain a keyword collection with which they do the lookup to identify the set of keywords that generated the document.
Both the methods have upsides and downsides. The trick here is to have a method by which we select only the contextually meaningful keywords from the document text.
- Here is one of the method to enrich the document vector, assuming that the document content is homogenous ( few similar semantic contexts )
- Generate the summation vector ( resultant vector ) using all the chosen keywords
Correlate all the chosen keywords individually against the resultant vector ( look out for keywords that show negative correlation or very low correlation ) - Place a cutoff of correlation score to be 0.2 ( when cosine similarity is 0.2, the angle between the word and resultant vector is around 75 degrees! )
- Remove the words that do not fit the cutoff (threshold) from our selection set of keywords
- Generate the Resultant vector again based on the chosen keywords ( after the above filtering )
- Iterate steps 2,3,4,5 to get the rejected words ( iteration rejections are to be appended to the master rejection set ) and accepted keywords.
- Stop iteration when there are no more keywords to be rejected.
- The final summation vector is the enriched resultant vector, which would model the document much closely than the first one we started with.
- We may correlate again the accepted and rejected keywords against the enriched resultant vector to witness the boost in maxima of correlation score for the accepted items and minima of correlation score for rejected items. ( the positive correlations become more positive and negative correlations become more negative in the due course of iterations ).
- The final set of the accepted items could be assumed as the actual set of keywords that generate the document.
Happy Vectorization...
Greeter Application appears to be crashing. Attempting to use a different one
Friday, February 8, 2008
Weathering Course
There can be several problems with the weathering course laid on top in the terrace. I am facing a very peculiar problem with it. In my apartment, we are seeing water dripping out the roof via the parapet-roof joints several days after rain. Water oozes out via a crack that has formed at the joint of the parapet wall and the roof RCC. Also, the dripping is happening near the roof drain vents, which happens to the lowest area of the roof-top.
Generally while constructing roof and weathering course, masons leave an inclination of level towards a corner of the roof for the rain water to drain comfortably. In our case, we are seeing water draining through a crack between the parapet wall and the roof in the vicinity of the drain vent. Since it is near the drain vent, we were suspecting the thickness of the weathering course. As there is a forced inclination in the weathering course layer, the thickness of the course near the vent should be lesser than the other areas of the roof.
When we consulted with a civil engineer, he was giving a completely different explanation for the problem. He was suspecting the iron-oxide coated shells layered on top the weathering course. He was saying rain water might have gotten into the core of the weathering course through the gaps between the iron-oxide shells. The water thus gotten inside keeps the weathering course in soaked condition for a long time. Here the core of the weathering course behaves like a sponge to absorb all the water that seeps inside. Later, the water thus absorbed percolate to the lowest side of the roof slowly, which may take weeks time (like our case). Once the amount of water reach a significant quantity at the lowest side, it tries to escape somehow. In our case, the escape vent is a crack that had formed between the roof RCC and parapet wall construction.
So what is the solution to this problem? Should we take out the weathering course completely and redo from scratch? Should we be finding the source of the problem, the places were rain water seeps inside the core of the weathering course? Should we increase the thickness of the lowest side of the roof ? All these cannot be permanent solutions or they may not be easily doable. The solution that I have is the following. Since the water collected is trying to escape, let's give it an easy way to escape. Finally, we don't want the core to be soaked. So we should be placing vent pipes just above the RCC roof level and be placed amidst the core of the weathering course at the lowest side of the roof. We know that water from all the areas are reaching here percolating for weeks. If there is an easy vent out like the vent pipe, the accumulated water can escape easily instead of dripping out of a crack. If we can find potential spots in the roof for more vent holes, we may very well preserve the consistency of the core of the weathering course for a long time. But that's going to be pretty tricky!!