Tuesday, September 21, 2010

List of useful addons for FireFox (with links) Part 1

 Addons for firefox (3.6.10)

+ Pixlr Grabber
Description: Making screen grabs and pulling down images from the web just got a bit more easy. With the Pixlr grabber add-on you can choose to Edit, Share, Save or Copy your final grabs. You also get the possibility to right-click any image or background to edit
Download: Add to Firefox
+ ClickCutter AutoCopy
Description:
Highlight a text and automatically Copy it to the clipboard.
Based on unique Smart Autocopy technology!
You have full control of what to copy and what not to copy when you highlight text.
Middle button Paste option.
Super-easy.
Download: Add to Firefox

+ ClickCutter AutoSearch
Description:
Highlight text and AUTOMATICALLY SEARCH it in your favorite search site.
Includes:
- Automatic Copy of highlighted text (AUTOCOPY)
- Automatic websearch for highlighted text (AUTOSEARCH).
- Middle button Paste
NO annoying context menus !
Download: Add to Firefox

+ Lizardtech DjVu (Many rare ebooks are available in this format)
Description:
DjVu is a web-centric format and software platform for distributing documents and images. DjVu can advantageously replace PDF, PS, TIFF, JPEG, and GIF for distributing scanned documents, digital documents, or high-resolution pictures. DjVu content downloads faster, displays and renders faster, looks nicer on a screen, and consume less client resources than competing formats. DjVu images display instantly and can be smoothly zoomed and panned with no lengthy re-rendering. DjVu is used by hundreds of academic, commercial, governmental, and non-commercial web sites around the world.
DjView4 is a new portable DjVu viewer and browser plugin.
Download:
http://djvu.sourceforge.net/

+ All In One Gestures
Description:
This extension allows you to execute common commands using mouse gestures, rocker navigation, scroll wheel navigation and page..
Download: Add to Firefox


+ All In One Sidebar
Description:
AiOS lets you open various windows as sidebar panels, and quickly switch between them. So it put an end to the window chaos! In addition to bookmarks and history it opens dialogues such as downloads, add-ons and more in the sidebar.
Download: Add to Firefox

+Wikipedia Lookup Add-on

Description:
Looks up up the selected word in the Wikipedia encyclopedia in the language specified in your user preferences.
Download: Add to Firefox

+ CHMReader
Description:
An extension to make firefox support Compiled HTML(.chm) file.
Download: Add to Firefox

+ ClipMarks
Description:
Clipmarks lets you clip and share specific parts of articles, blog posts or anything else you read on the web. With our newly integrated Amplify service, you can post clips directly to Twitter or Facebook - or share them on clipmarks.com and more.
Download: Add to Firefox

+ ColorfulTabs
Description:
The most beautiful yet the simplest add-on that makes a strong colorful appeal. Colors every tab in a different color and makes them easy to distinguish while beautifying the overall appearance of the interface. For Seamonkey & Flock. An essential.
Download: Add to Firefox

List of useful packages for C/C++ development on Ubuntu Linux Part 1

Linux in a Nutshell: A superb bible for looking up Linux commands and options. http://oreilly.com/catalog/9780596154493


Installing Development related packages on Ubuntu:
http://software.jessies.org/salma-hayek/ubuntu-setup.html

You can add repositories to download packages by editing this file:
vim /etc/apt/sources.list

For Eclipse C++ CDT installation please refer to this blog post.

Script:
A very useful command to record your command-line session actions for later use and replay later:
        script -a -f -t  2> timingfile  mydemo.log     #append, flush-writes, timestamp)

       scriptreplay timingfile mydemo.log    #replays with timing as per timestamps captured above
For further info see:

     man script
     man scriptreplay

Links:  
http://www-users.cs.umn.edu/~skim/cs1901/script.html
http://devdaily.com/blog/post/linux-unix/use-unix-linux-script-command-record-your-command-line-i-o

Killing Processes on Ubuntu with 3 Finger salute(How-to-Geek)

gpm: A command-line text mode clipboard manager with mouse integration.
Use left mouse button to select and copy text and paste with middle mouse button.
Super useful installation/usage howto from Gentoo: http://www.gentoo.org/doc/en/gpm.xml#doc_chap4

gpm options: http://www.oreillynet.com/linux/cmd/cmd.csp?path=g/gpm


apt-get install -y gpm #General Purpose Mouse server (clipboard manager for command line
NOTE: You can set the system default packages on Ubuntu using debconf-set-selections and debconf-get-selections

Glipper: Clipboard manager for Gnome. It retains all your text copies.
#a) Installs Glipper the multiple copies clipboard manager into Ubuntu Gnome Desktop
apt-get install glipper
#b) Right click on the "Windows Quicklaunch Bar" and Add to Panel->Clipboard manager
#c) Click on any of the previous copies to get the copy-paste you need.
I went through the entire list of packages available and selected a few below from the Development (meta-package?) of Ubuntu (10.04.1 ubuntu desktop 32 bit)

[COMMON-DEV]
apt-get update #updates your packages

apt-get install -y gcc #GNU C compiler

apt-get install -y gcc-mingw32 #Cross Compilation
apt-get install -y g++


apt-get install -y make
apt-get install -y linux-headers-`uname -r` build-essential  #C/C++ header files for building C/C++ programs 
apt-get update eclipse eclipse-pde #Update Eclipse and plugin-dev-env for connect to p2 repository of CDT for installing the CDT

apt-get install -y vim-gtk

apt-get install -y c++-annotations
apt-get install -y c-cpp-reference #Reference for C/C++
apt-get install -y cpp-doc #C++ documentation
apt-get install -y manpages-dev glibc-doc


[PACKAGE-MGMT]
apt-get install -y apt-build #GUI for apt-get
apt-get install -y ceve #Parse linux package dependencies

[PYTHON]
apt-get install -y python-dev
apt-get install -y idle2.6
apt-get install -y cableswig #Python/Tcl wrappers for C++ code
apt-get install -y boa-constructor #RAD tool for python/wxwidgets

[PROFILERS]
apt-get install -y gprof
apt-get install -y kprof #KDE util for gprof analysis/viewing
apt-get install -y valgrind
apt-get install -y cachegrind
apt-get install -y alleyoop #Valgrind related
apt-get install -y valkyrie #GUI for valgrind
apt-get install -y kcachegrind #KDE Gui for valgrind
apt-get install -y sysprof #System-wide CPU profiling
apt-get install -y systemtap systemtap-client systemtap-grapher #Collect data on a live running linux box
apt-get install -y syslog syslog-ng #Interprocess application logging facility


[TESTING]
apt-get install -y libcppunit-doc libcppunit-dev  #C++ unit-testing lib

apt-get install -y subunit #Run and Save remote test results for later use
apt-get install -y stress #Stress test your computer with heavy load
apt-get install -y httest #Simulate client/server actions with pattern-matching for test validation
apt-get install -y fuzz #Stress test s/w with random inputs

[DEBUG]
apt-get install -y gdb gdb-doc #Debug programs
apt-get install -y gdbserver #Remotely debug from another system where GDB is installed.
apt-get install -y ddd #GUI for gdb
apt-get install -y bashdb #Bash debugger
apt-get install -y zshdb zsh-dbg #debugger and debug symbols for ZSH
apt-get install -y gcov #Source code coverage analyzer
apt-get install -y ggcov #GUI for gcov Source code coverage analyzer
apt-get install -y lcov #HTML and directory-wise view of gcov output

apt-get install -y collectd-dbg #statistics collection and monitoring daemon
apt-get install -y wireshark wireshark-dev #Network debugging
apt-get install tack-dbg #Diagnostic tool for correctness of terminfos.
apt-get install -y tau tau-racy tau-examples #Multithread/multiproc tuning and analysis with GUI
apt-get install -y leaktracer #Simple C++ leak tracer
apt-get install -y electric-fence #malloc debugger
apt-get install -y duma #Fork of electric-fence library with added features
apt-get install -y winpdb #GUI debugger for Python
apt-get install -y gtkparasite #Python interactive debugger for running GTK+ code.
apt-get install -y happycoders-libdbg-dev #allows modern debugging paradigms for Large codebase
apt-get install -y happycoders-libsocket-dev #
apt-get install -y bless-hex-editor #Hex Editor
apt-get install -y hexdiff #Visual hex difference analyzer
apt-get install kompare #diff and merge util for files and dirs.
apt-get install -y tkdiff #diff/merge util in TK
apt-get install -y ht #Viewer/Editor/Analyser for all kinds of executables.
apt-get install -y abi-compliance-checker #C++ sharedlib binary compatibility checker
apt-get install -y tesq #Decoding of terminal escape sequences used by Unix Terminals

Monday, September 20, 2010

Installing Eclipse C++ CDT with Linux Tools for debugging and profiling applications on Linux

The Eclipse incubation project Linux Tools integrates C/C++ Development tools.
It's a GUI plugin to integrate tools like Valgrind, GProf, GCov, SystemTap etc into the Eclipse C++ CDT IDE.

[Articles on Linux Tools]
Download page of Eclipse Helios gives 2 good alternatives for C++ developers on Linux:
  • Java6 JRE update :apt-get install sun-java6-jre
  • Unzip the Eclipse tarball and run the eclipse binary from inside the tarball: 
          tar -zxf eclipse-cpp-helios-linux-gtk.tar.gz && ./eclipse

[Website]
[Usage]
[Docs]
[Whitepapers]

[Interview]



[Cpp Check tool integration with Eclipse]
  • cppcheclipse integration of with Eclipse CDT from (google code):
  • About: http://code.google.com/a/eclipselabs.org/p/cppcheclipse/
  • Wiki: http://code.google.com/a/eclipselabs.org/p/cppcheclipse/wiki/Installation
  • Download: http://code.google.com/a/eclipselabs.org/p/cppcheclipse/downloads/list

Thursday, August 19, 2010

Under The Hood Look At Operating Systems Internals with Windows and Linux

[08-Sep-2010]

Extremely Recommended reading:
  • This blog has some simply delicious diagrams with 1-2 page explanations of Paging, Virtual Memory, Caching, Physical level RAM, Snapshot of a Process in Memory.
  • This is a simply superb blog. "A picture is worth a thousand words!!". The articles have some high quality illustrations which esp. for visual learners is a delight. Just working through the flow in the diagrams makes the text just an add-on (to explicitly elaborate on any point you might have missed).
  • This helps you get an "all-at-once" picture of the entire flow and inter-relationships between different parts (esp. if you're a visual/top-down learner).
  • I learned more in 30 minutes of analyzing these lovely diagrams than boring holes in all the below books for days on end.
Once you've gone through this blog the below books become so much more intelligible:
Good article on RSS and VSZ reporting by ps aux and pmap to determine memory footprint of your proces. 
See the comments for some good discussion of internals

Wednesday, December 16, 2009

Why we need Pointers - An Everyday Analogy using Trains/Telephone Number

Everyday Analogy

1) We regularly use pointers in everyday life when we use telephone numbers.
2) Another notable use is in chains and trains (concrete examples of linked lists). A chain is a group of things linked together by malleable joints. These joints are easily changeable when adding/removing new links/compartments to the chain.

Note : 
 a)Telephone no.s give 2-way access whereas a pointer gives only 1-way access.
 b)Usually the no. of links is 1 to 3 in an access path. 

Tom ---> Jerry
Tom ---> 1 ---> Jerry
Tom ---> 1 ---> 2 ---> .... ---> N ---> Jerry
Here Tom calls Jerry by
a)Getting the contact no. directly or indirectly from 'a friend-of-a-friend-of-a-friend'.
b)Dialling the number.
Here the intermediate links of the chain can change the destination similar to an operator diverting your call to the concerned person in an organisation. Say Tom wants some info (from Jerry), but N on the path knows that Mortimer is a better source of info and gives Mortimer's no. instead.
a)Original path:
Tom ---> 1 ---> 2 --->...N --->Jerry
b)Redirection:
Tom ---> 1 ---> 2 --->...N ---> Mortimer
This is similar to shifting tracks for a train, we can easily divert the train to whatever track by using the shunting mechanism.
----
Note:
I'd contributed this article as a section on the wikipedia page for C/C++ pointers, but some time later it disappeared in the rather over zealous editing by the page maintainers who totally mangled it into bits and threw the ashes to the winds. I had to rescue it from the edit history spending a few hours to track down my original post and now it has a permanent home here. I was really gratified to get one comment from one of the reviewers there (talk section). Really made my day that I'd managed to simply convey the heart of pointers to a non-programmer in terms they could easily identify with, understand and even explain to some one else. Why we need pointers at all in the first place.
Good Pointer Fun with Binky Video from Stanford University.