Thursday, July 23, 2009

programming languages



I will give some language reviews for some popular languages out there. It should be noted that these are not actually programming languages. Some are scripting and some are called Markup languages. Also to be noted this is not a full review of these languages. You should do more research on a language that might interest you in order to find out more.

This is not a full list of languages! I tried to include many of the major languages but there are just so many that the list would just become to large and start to confuse beginners. For a larger list of languages check out the following links.

http://www.scriptol.com/programming/choose.php
or as much as I hate wikipedia
http://en.wikipedia.org/wiki/Alphabetical_list_of_programming_languages



* HTML
Type: Markup Language
Geared for: web development
Difficulty: Very Easy
Compatibility: Works with any browser, and OS compatibility is not a worry when doing web design
Documentation: Lots of great on-line tutorials. I see no need to buy a book when there are so many free on-line tutorials.
Links: www.w3schools.com
Side notes: All you need is notepad and a web browser.

* CSS
Type: Cascading Style Sheets
Geared for: Web Development
Difficulty: Easy
Compatibility: Works with most modern browsers
Documentation: Lots of great on-line tutorials. You might find buying a book helpful.
Links: www.w3schools.com
Side notes: All you need is notepad and a web browser.

JavaScript
Type: Interpreted / Scripting
Geared for: Web Development
Difficulty: Easy - Mild
Compatibility: Works with most modern browsers
Documentation: Great on-line tutorials, but you may find a book helpful.
Links: www.w3schools.com
Side notes: This gives web designers a scripting language to use with in there web pages. Can create pop up boxes and validate html forms.

PHP
Type: Scripting
Geared for: Web Development
Difficulty: Mild
Compatibility: Code is ran on server so browsers have nothing to do with this language.
Documentation: Good on-line tutorials, may want a book for more complete learning process.
Links: www.w3schools.com
Side notes: Great for accessing databases. Because code is executed on the server the user can not view the source code, this adds a level of protection and security.

ASP
Type: Scripting
Geared for: Web Development
Difficulty: Mild
Compatibility: Code is ran on server so browsers have nothing to do with this language.
Documentation: Good on-line tutorials, may want a book for more complete learning process.
Links: www.w3schools.com
Side notes: Microsoft technology. A powerful tool for creating dynamic and interactive web pages. Code is executed on the server, so the user can not view the source code, this adds a level of protection and security.


Computer Applications

* Python
Type: Interpreted - Scripting
level: Very High
Geared for: Everything
Difficulty: Easy
Compatibility: Cross-platform
Documentation: Great Documentation, many books, and on-line tutorials.
Links: www.python.org
Side notes: easy to learn, and very powerful. You can do just about anything with this language. Great for beginners.

Perl
Type: Interpreted
level: High
Geared for: General Purpose, Text Processing, CGI scripts, Automating Tasks
Difficulty: Mild
Compatibility: Cross-platform
Documentation: Many books, and on-line tutorials.
Links: http://www.perl.com/

Ruby
Type: Interpreted
level: High
Geared for: General Purpose, Web Scripting
Difficulty: Mild
Compatibility: Cross-platform
Documentation: Normal
Links: http://www.ruby-lang.org/en/

Side notes: The goal was to program in human style rather than adapting its mind to the computer structure.
VB / VB.net
Type: Compiled
level: High
Geared for: Windows applications
Difficulty: Easy
Compatibility: Windows
Documentation: Well supported by Microsoft and many books.
Links: http://msdn.microsoft.com/en-us/vbasic/default.aspx
Side notes: Not a great language, but easy to use and whip up a quick app. Not well respected by other programmers. Dot net is compiled differently. Research the dot net platform for more information.

* C / C++
Type: Compiled
level: Middle
Geared for: Everything
Difficulty: Mild - Hard
Compatibility: Cross Platform
Documentation: Tons!! Books, on-line, people, just tons!
Links: http://www.cplusplus.com/doc/tutorial/
http://www.cprogramming.com/
Side notes: Well respected language. Take the time to understand this language, it will pay off. There is a reason it is the industry standard.

* C#
Type: Compiled
level: High
Geared for: General, The Dot Net Platform
Difficulty: Mild
Compatibility: Native to Windows, Cross Platform
Documentation: No lack of books or developers to speak with.
Links: http://msdn.microsoft.com/en-us/vcsharp/aa336809.aspx
http://www.microsoft.com/express/vcsharp/
http://mono-project.com/Main_Page
Side notes: Not directly compiled to machine code. The mono project is working on making the language cross platform but does not have all features of the Microsoft dot net platform.

Java
Type: Compiled
level: High
Geared for: Everything and portability
Difficulty: Mild - Hard
Compatibility: Cross platform
Documentation: Well documented
Links: http://java.sun.com/docs/books/tutorial/
Side notes: I have heard good and bad things about this language. Not a choice I would pick for a beginner.

** Assembly
Type: Compiled
level: Low
Geared for: Special niches when needed
Difficulty: Very Hard
Compatibility: Each processor architecture has Its own version.
Documentation: Normal
Links: http://webster.cs.ucr.edu/
Side notes: Has a big purpose in the programming of embedded systems (you name it, anything from washing machines to tv's). If you learn assembly for one architecture, than it isn't too difficult to code on different ones. You just have to learn a new instruction set.

Remember to have fun and learn all you can!

My experience with Router..



My recent expereince with DSL router is worth describing. My campus have a wi-fi network. The signals at my home are not so strong so it gets disconnected very often. So a way which I use to check that I am connected to the net or not is by using the ICMP protocal . I use to ping google.com
ping -t google.com

(Some might think that by seeing the icon below is enough but it is not the thing to be relied upon)
Now the problem with speed. Many freinds of mine are very creuel in a way they always used to download something thus heavily affecting the speed.

So now I decided to somehow gain access to the DSL router to change the setting thus denying them the net connection.

But there was a problem i didn't had the access to that router. That what I thought. But neglecting this fact I opened 192.168.1.1 and it asked me the authentication which i had not. (you can also have access to the router through global ip). On the same day I was reading an article on wireless security. There i came to know that 80% router have default username and password both as admin and admin. I tried it and bingo!! i have access to that router. Now I can do that whatever I wanted.

The WEP key to the wireless was also visible and and i can change it!!. But in doing all this I enabled the MAC filter and i had to wait for 3 days to fix t out. But at last it was a good experience....

Wednesday, July 22, 2009

Linux file system explained for beginers

For those of you coming from windows backgrounds, the way the linux filesystem is laid out may seem confusing at first glance…. but that is where this article comes in !

The first thing you should know when working with linux, is that everything is treated as either a file or directory. Yeap thats right, even hardware is considered a file by linux, and, speaking of hardware… all your hardware devices are located in the /dev directory, but more on that later.

Another thing that confuses windows users, is the fact that linux dosen’t use drive letters to distinguish between different partitions and devices. that is to say in linux, the “root” of your filesystem is / whereas in windows it would most probably be C:\ . Drives in linux are “mounted” to directories where their data can then be accessed, so for instance, if you needed to use your thumbdrive, you would plug it into your computer, and then mount it using the “mount” command, which specifies the path to the device ( something like /dev/sdb or /dev/sdc ) and the directory to mount it to (usually /mnt or /media), then you can happily access your drive from the /mnt or /media folder.

Sounds strange right? well yes it does if you come from a windows environment, where the entire operating system is consolidated onto a single drive. However, with linux and the ability to mount devices as directories, it gives the end user much greater flexibility in splitting up their operating system over several drives or partitions.

to understand what I mean when I say that this approach in mounting drives grants flexibility, I must first explain the different folders in linux and what they store


/ this is the root folder, all other folders come under root.. think of it as C:\ in a Windows context.

/bin this folder contains all the user-essential binaries (programs) that are needed to administer and run your linux system… delete this folder and your system is broken.

/boot as the name suggests, this folder contains configuration files and other necessary files that are needed by the bootloader

/dev this folder contains device files (remember, these files represent physical devices, so be careful when working with them)

/etc this folder contains all the configuration files used by the system, you can also start and stop services (daemons ) from here

/home this folder contains the home folders of all the normal (non – root ) users on the system .. think of it as my documents in windows

/lib this folder contains software libraries

/media this is a mount point for removable devices… this is where you would usually mount your thumbdrives … etc

/mnt this is a temporary mount point

/opt this folder contains add on software (extra software)

/sbin this folder contains binaries that can only be run as the root user (”superuser”)

/tmp this folder contains temporary files that are erased upon reboot

/usr this folder and its subfolders contains user installed programs and utilities and libraries

/var this folder contains files that change alot (”Variable files”)

/root this folder contians the root user’s files

/proc this is a psuedo folder, that contains information about the linux kernel and hardware that is updated in realtime.

Now back to how mounting grants flexibility…

you see how the different folders all contain parts of the operating system? well we can actually mount a seperate hard drive for each of this folders. for example, your /home folder can be put on another harddrive than your / which means that you can easily recover your personal files if the harddrive on / fails because the harddrive mounted to your /home folder is seperate from the one that is mounted to your /

So there you have it, you now know a lttle bit more about the nuts and bolts of linux based operating systems.

Friday, July 17, 2009

Watch live CCTV Cams : Google Hack


What would you think if I say you that you can view the unsecured CCTV Cams from around the world.

This is just simple if you use the Best Tool.Yes, you’re right if you thought it is Google.

  1. Open Google.com and type the following code: inurl:indexFrame.shtml”Axis Video Server”
  2. Search it and you get the results of the unsecured CCTV Cams which you can view.
  3. There are some multiple Cams also. And remember, that some Cams can be Zoomed, Rotated or even Turned Off by You! Don’t try it as this can lead you in trouble, penalties and even imprisonment. I’m not actually sure whether its Legal or Illegal.
  4. The CCTV I got was of a Hospital and one of a National Building of USA and of a Beach at Hawaii.
Actually, the indexFrame.shtml is the Main Page of the Axis Video Server. And this works with most of the Axis Video Servers. So this hack can be called as a Server crack as the servers are foolish enough to index their whole site including that Page.
Enjoy Live Viewing.
Visit places which you never visited.