text:
LPI Linux Certification/LPIC2 Exam 202/System Security

Section Overview

 * Configuring a router
 * Securing FTP servers
 * Secure shell (OpenSSH)
 * TCP_wrappers
 * Security tasks

Overview
Description: ''The candidate should be able to configure ipchains and iptables to perform IP masquerading, and state the significance of Network Address Translation and Private Network Addresses in protecting a network. This objective includes configuring port redirection, listing filtering rules, and writing rules that accept or block datagrams based upon source or destination protocol, port and address. Also included is saving and reloading filtering configurations, using settings in /proc/sys/net/ipv4 to respond to DOS attacks, using /proc/sys/net/ipv4/ip_forward to turn IP forwarding on and off, and usingtools such as PortSentry to block port scans and vulnerability probes.''

Key files, terms, and utilities include:

/proc/sys/net/ipv4 /etc/services ipchains iptables routed

Configuring a router
There are numerous steps you should take to configure a router connected to insecure networks like the Internet First of all, identify what services you need, and have a policy of blocking everything else ! This minimize your exposure to security breaches.

Common steps for routers are :

Log all dropped/rejected packets (and limit the rate at which you log, to avoid logfiles size explosion) Use NAT whenever you can – unroutable addresses are more difficult to hack Define a default policy for TCP/UDP block ports answers: drop/reject/reset ?

Dropping isn't really helpful, scanners nowadays detect it easily. Rejecting may still show that a firewall is blocking access, resetting acts as if nothing is listening (i.e the « normal » way)

Unless you know you need it, drop (and log + limit) all ICMP packets except the most useful : dest-unreachable, time-exceeded and echo-reply

Protect against known attacks, i.e : anti-spoofing of IP addresses, disable source_route packets, disable icmp_redirect, log « martians » IP addresses (i.e addresses which appear on an interface they don't belong to), disable syn_cookies, disable ECN (Explicit Congestion Notification), disable TCP timestamps, ICMP broadcasts and ICMP bogus errors

Exercises
.

Overview
Description: ''The candidate should be able to configure an anonymous download FTP server. This objective includes configuring an FTP server to allow anonymous uploads, listing additional precautions to be taken if anonymous uploads are permitted, configuring guest users and groups with chroot jail, and configuring ftpaccess to deny access to named users or groups.''

Key files, terms, and utilities include:

ftpaccess, ftpusers, ftpgroups /etc/passwd chroot

Securing an FTP server will include :

 * FTP Warning Banner customization
 * FTP Greeting Banner customization
 * Securing, denying and restricting User Accounts
 * Securing Anonymous Access
 * Securing Anonymous Upload

FTP protocol
The File Transport Protocol (FTP) is an older TCP protocol designed to transfer files over a network. Because all transactions with the server, including user authentication, are unencrypted, it is considered an insecure protocol and should be carefully configured.

wu-ftpd FTP server
We will focus on the wu-ftpd FTP server from Washington University

Wu-ftpd's main configuration files are in /etc : ftpusers,ftpaccess and ftpconversions the ftpusers file contains a list of all those users who are not allowed to log into your FTP server. As you can imagine, user root should be listed here. You should also make sure that other special user accounts such as lp, shutdown, mail, etc. are included here.

the ftpaccess file is used to configure issues such as security, user definitions, etc. It's actually the general configuration file. Some interesting settings that you can establish here are: loginfails [number]

where number is a number that stands for the amount of times that a user is allowed to fail to authenticate before being totally disabled. shutdown [filename]

where filename is the name of a file that, if it exists, automatically shuts down the FTP server without a need to actually close the port in the /etc/inetd.conf file and then restarting inetd. Finally, the ftpconversions file is used to allow the clients special "on-the-fly" conversions of files, i.e automatic decompression of files on download

FTP Warning Banner
Returning a customized banner to FTP clients when they connect is a good idea, as it helps disguise what system the FTP server is running on. ou can send banners to incoming connections either using TCP wrappers, or as described below.

Add the following line to its configuration file, /etc/ftpaccess : banner /etc/banners/warning.msg

The contents of the banner file should look something like this : Hello, all activity on ftp.example.com is logged.

FTP Greeting Banner
After login, all users are presented with a greeting banner. By default, this banner includes version information useful to crackers trying to identify weaknesses in a system.. To change the greeting banner for wu-ftpd, add the following directive to /etc/ftpusers: greeting text  Securing FTP servers

Because FTP passes unencrypted usernames and passwords over insecure networks for authentication, it is a good idea to deny system users access to the server from their user accounts. To disable user accounts in wu-ftpd, add the following directive to /etc/ftpusers: deny-uid * To disable specific user accounts in wu-ftpd, add the username to /etc/ftpusers

Anonymous Access
The best way to setup anonymous FTP is by configuring a chroot jail : instead of allowing total access to the system, this will limit access to a given directory. In other words, after an anonymous user logs into the system she will only have access to the user ftp's home directory and nothing else. If she enters cd /, which in most other cases should take her to the system's root directory, it will only take her to /home/ftp most likely (it's the default home directory for the user ftp).

Most distributions like RedHat provide an anonymous ftp package, to help prepare the chroot jail It's important to give to your strictly FTP users no real shell account on the Linux system. In this manner, if for any reasons someone could successfully get out of the FTP chrooted environment (see below for definition), it would not have the possibility of executing any user tasks since it doesn't have a bash shell. First, create new users for this purpose. This has to be separate from a regular user account with unlimited access because of how the chroot environment works. Chroot makes it appear from the user's perspective as if the level of the file system you've placed them in is the top level of the file system.

Setup these new users with a shell as /dev/null, and add /dev/null in the list of allowed shells, /etc/shells. Make sure also that in /etc/passwd, their home dir is listed as /home/./ftp (for user ftp), even though the real dir is /home/ftp

Setup a chroot user environment : what you're essentially doing is creating a skeleton root file system with enough components necessary, binaries, password files, etc. to allow Unix to do a chroot when the user logs in. Note that wu-ftpd may be compiled with the --enable-ls option, in which case the /home/ftp/bin, and /home/ftp/lib directories are not required since this new option allows Wu-ftpd to use its own ls function. We still continue to demonstrate the old method for people that prefer to copy /bin/ls to the chroot'd FTP directory, /home/ftp/bin and create the appropriated library related tools. The following are the necessary steps to run Wu-ftpd software in a chroot jail: first create all the necessary chrooted environment directories:

[root@deep ] /# mkdir /home/ftp/dev [root@deep ] /# mkdir /home/ftp/etc [root@deep ] /# mkdir /home/ftp/bin [root@deep ] /# mkdir /home/ftp/lib

Change the new directories permission to 0511 for security reasons: The chmod command will make our chrooted dev, etc, bin, and lib directories readable and executable by the super-user root and executable by the user-group and all users :

[root@deep ] /# chmod 0511 /home/ftp/dev/ [root@deep ] /# chmod 0511 /home/ftp/etc/ [root@deep ] /# chmod 0511 /home/ftp/bin [root@deep ] /# chmod 0511 /home/ftp/lib

Copy the /bin/ls binary to /home/ftp/bin directory and change the permission of the ls program to 0111. You don't want users to be able to modify the binaries:

[root@deep ] /# cp /bin/ls /home/ftp/bin [root@deep ] /# chmod 0111 /bin/ls /home/ftp/bin/ls

Find the shared library dependencies of the ls Linux binary program: :

[root@deep ] /# ldd /bin/ls libc.so.6 => /lib/libc.so.6 (0x00125000) /lib/ld-linux.so.2 =7gt; /lib/ld-linux.so.2 (0x00110000) Copy the shared libraries identified above to your new lib directory under /home/ftp directory:

[root@deep ] /# cp /lib/libc.so.6 /home/ftp/lib/ [root@deep ] /# cp /lib/ld-linux.so.2 /home/ftp/lib/

Create your /home/ftp/dev/null file:

[root@deep ] /# mknod /home/ftp/dev/null c 1 3 [root@deep ] /# chmod 666 /home/ftp/dev/null

Copy the group and passwd files in /home/ftp/etc directory. This should not be the same as your real ones. For this reason, we'll remove all non FTP users except for the super-user root in both of these files, passwd and group.

Edit the passwd file, vi /home/ftp/etc/passwd and delete all entries except for the super-user root and your allowed FTP users. It is very important that the passwd file in the chroot environment has entries like:

root:x:0:0:root:/:/dev/null ftpadmin:x:502:502::/ftpadmin/:/dev/null

(notice two things here: first, the home directory for all users inside this modified passwd file are now changed to reflect the new chrooted FTP directory i.e. /home/ftp/./ftpadmin/ begins /ftpadmin/, and also, the name of the user's login shell for the root account has been changed to /dev/null) Edit the group file, vi /home/ftp/etc/group and delete all entries except for the super-user root and all your allowed FTP users. The group file should correspond to your normal group file:

root:x:0:root ftpadmin:x:502:

Now we must set passwd, and group files in the chroot jail directory immutable for better security.

[root@deep ] /# cd /home/ftp/etc/ [root@deep ] /# chattr +i passwd

Set the immutable bit on group file:

[root@deep ] /# cd /home/ftp/etc/ [root@deep ] /# chattr +i group

Configure your /etc/pam.d/ftp file to use pam authentication by creating the /etc/pam.d/ftp file and add the following lines:

auth   required /lib/security/pam_listfile.so item=user sense=deny \ file=/etc/ftpusers onerr=succeed auth   required /lib/security/pam_pwdb.so shadow nullok auth   required /lib/security/pam_shells.so account required /lib/security/pam_pwdb.so session required /lib/security/pam_pwdb.so
 * 1) %PAM-1.0

Anonymous Upload
If you want to allow anonymous users to upload, it is recommended you create a write-only directory within /var/ftp/pub/. To do this type:

mkdir /var/ftp/pub/upload

Next change the permissions so that anonymous users cannot see what is within the directory by typing:

chmod 744 /var/ftp/pub/upload

A long format listing of the directory should look like this:

drwxr--r--   2 root     ftp          4096 Aug 20 18:26 upload

Exercises
.

Overview
Description: ''The candidate should be able to configure sshd to allow or deny root logins, enable or disable X forwarding. This objective includes generating server keys, generating a user's public/private key pair, adding a public key to a user's authorized_keys file, and configuring ssh-agent for all users. Candidates should also be able to configure port forwarding to tunnel an application protocol over ssh, configure ssh to support the ssh protocol versions 1 and 2, disable non-root logins during system maintenance, configure trusted clients for ssh logins without a password, and make multiple connections from multiple hosts to guard against loss of connection to remote host following configuration changes.''

Key files, terms, and utilities include:

ssh, sshd /etc/ssh/sshd_config ~/.ssh/identity.pub, ~/.ssh/identity ~/.ssh/authorized_keys .shosts, .rhosts

OpenSSH
OpenSSH is a free, open source implementation of the SSH (Secure SHell) protocols. It replaces telnet, ftp, rlogin, rsh, and rcp with secure, encrypted network connectivity tools. OpenSSH supports versions 1.3, 1.5, and 2.0 of the SSH protocol.

If you use OpenSSH tools, you are enhancing the security of your machine. All communications using OpenSSH tools, including passwords, are encrypted. Telnet and ftp use plaintext passwords and send all information unencrypted. The information can be intercepted, the passwords can be retrieved, and then your system can be compromised by an unauthorized person logging in to your system using one of the intercepted passwords. The OpenSSH set of utilities should be used whenever possible to avoid these security problems. Another reason to use OpenSSH is that it automatically forwards the DISPLAY variable to the client machine. In other words, if you are running the X Window System on your local machine, and you log in to a remote machine using the ssh command, when you execute a program on the remote machine that requires X, it will be displayed on your local machine. This is convenient if you prefer graphical system administration tools but do not always have physical access to your server.

The ssh command is a secure replacement for the rlogin, rsh, and telnet commands. It allows you to log in to and execute commands on a remote machine.

Logging in to a remote machine with ssh is similar to using telnet. To log in to a remote machine named penguin.example.net, type the following command at a shell prompt: ssh penguin.example.net

The first time you ssh to a remote machine, you will see a message similar to the following: The authenticity of host 'penguin.example.net' can't be established.

DSA key fingerprint is 94:68:3a:3a:bc:f3:9a:9b:01:5d:b3:07:38:e2:11:0c. Are you sure you want to continue connecting (yes/no)? Type yes to continue. This will add the server to your list of known hosts as seen in the following message: Warning: Permanently added 'penguin.example.net' (DSA) to the list of known hosts.

Next, you'll see a prompt asking for your password for the remote machine. After entering your password, you will be at a shell prompt for the remote machine. If you use ssh without any command line options, the username that you are logged in as on the local client machine is passed to the remote machine. If you want to specify a different username, use the following command:

ssh -l username penguin.example.net

You can also use the syntax ssh username@penguin.example.net. The ssh command can be used to execute a command on the remote machine without logging in to a shell prompt. The syntax is ssh hostname command. For example, if you want to execute the command ls /usr/share/doc on the remote machine penguin.example.net, type the following command at a shell prompt:

ssh penguin.example.net ls /usr/share/doc

After you enter the correct password, the contents of /usr/share/doc will be displayed, and you will return to your shell prompt.

The scp command can be used to transfer files between machines over a secure, encrypted connection. It is similar to rcp.

The general syntax to transfer a local file to a remote system is scp localfile user@hostname:/newfilename. The localfile specifies the source, and the group of user@hostname:/newfilename specifies the destination. To transfer the local file shadowman to your account on penguin.example.net, type the following at a shell prompt (replace user with your username):

scp shadowman user@penguin.example.net:/home/user

This will transfer the local file shadowman to /home/user/shadowman on penguin.example.net. The general syntax to transfer a remote file to the local system is scp user@hostname:/remotefile /newlocalfile. The remotefile specifies the source, and newlocalfile specifies the destination.

Multiple files can be specified as the source files. For example, to transfer the contents of the directory /downloads to an existing directory called uploads on the remote machine penguin.example.net, type the following at a shell prompt:

scp /downloads/* username@penguin.example.net:/uploads/

The sftp utility can be used to open a secure, interactive FTP session. It is similar to ftp except that it uses a secure, encrypted connection. The general syntax is sftp username@hostname.com. Once authenticated, you can use a set of commands similar to using FTP. Refer to the sftp manual page for a list of these commands. To read the manual page, execute the command man sftp at a shell prompt. The sftp utility is only available in OpenSSH version 2.5.0p1 and higher.

Generating Key Pairs
If you do not want to enter your password every time you ssh, scp, or sftp to a remote machine, you can generate an authorization key pair.

Note: Separate Authorization Key Pairs You must have separate authorization key pairs for SSH Protocol 1 (RSA) and SSH Protocol 2 (DSA).

Warning : Each User Needs Their Own Key Pair ! Keys must be generated for each user. To generate keys for a user, follow the following steps as the user who wants to connect to remote machines. If you complete the following steps as root, only root will be able to use the keys.

Use the following steps to generate a DSA key pair. DSA is used by SSH Protocol 2 and is the default for Red Hat. 1. To generate a DSA key pair to work with version 2.0 of the protocol, type the following command at a shell prompt:

ssh-keygen -t dsa

Accept the default file location of ~/.ssh/id_dsa. Enter a passphrase different from your account password and confirm it by entering it again.

(A passphrase is a string of words and characters used to authenticate a user. Passphrases differ from passwords in that you can use spaces or tabs in the passphrase. Passphrases are generally longer than passwords because they are usually phrases instead of just a word.)

2. Change the permissions of your .ssh directory using the command chmod 755 ~/.ssh.

3. Copy the contents of ~/.ssh/id_dsa.pub to ~/.ssh/authorized_keys2 on the machine to which you want to connect. If the file ~/.ssh/authorized_keys2 doesn't exist, you can copy the file ~/.ssh/id_dsa.pub to the file ~/.ssh/authorized_keys2 on the other machine.

Use the following steps to generate a RSA key pair for version 2.0 of the SSH protocol.

1. To generate a RSA key pair to work with version 2.0 of the protocol, type the following command at a shell prompt:

ssh-keygen -t rsa

Accept the default file location of ~/.ssh/id_rsa. Enter a passphrase different from your account password and confirm it by entering it again. [1]

2. Change the permissions of your .ssh directory using the command chmod 755 ~/.ssh.

3. Copy the contents of ~/.ssh/id_rsa.pub to ~/.ssh/authorized_keys2 on the machine to which you want to connect. If the file ~/.ssh/authorized_keys2 doesn't exist, you can copy the file ~/.ssh/id_rsa.pub to the file ~/.ssh/authorized_keys2 on the other machine.

Use the following steps to generate an RSA key pair, which is used by version 1 of the SSH Protocol.

1. To generate an RSA (for version 1.3 and 1.5 protocol) key pair, type the following command at a shell prompt:

ssh-keygen

Accept the default file location (~/.ssh/identity). Enter a passphrase different from your account password. Confirm the passphrase by entering it again.

2. Change the permissions of your .ssh directory and your keys with the commands chmod 755 ~/.ssh and chmod 644 ~/.ssh/identity.pub.

3. Copy the contents of ~/.ssh/identity.pub to the file ~/.ssh/authorized_keys on the machine to which you wish to connect. If the file ~/.ssh/authorized_keys doesn't exist, you can copy the file ~/.ssh/identity.pub to the file ~/.ssh/authorized_keys on the remote machine.

Exercises
.

Overview
Description: The candidate should be able to configure tcpwrappers to allow connections to specified servers from only certain hosts or subnets.

Key files, terms, and utilities include:

inetd.conf, tcpd hosts.allow, hosts.deny xinetd

TCP_wrappers
The TCP wrapper is a system to control access to network services For each service protected by TCP wrappers, the tcpd program is used and consults 2 files where access rights are defined, in search order :

/etc/hosts.deny: if a rule here is met, access is denied /etc/hosts.allow: if a rule here is met, access is allowed

Rules are constructed to match all services or specific services. If no match occurs in the two files, access is granted.

It is common to set specific rules in /etc/hosts.allow, and provide a blanket denial in /etc/hosts.deny (i.e deny everything except when specifically allowed) Rules format are :

[list of services] : [list of hosts]

i.e : deny all incoming requests except FTP from the local domain

/etc/hosts.allow : ftp : LOCAL

/etc/hosts.deny : ALL : ALL

Exercises
.

Overview
Description: ''The candidate should be able to install and configure kerberos and perform basic security auditing of source code. This objective includes arranging to receive security alerts from Bugtraq, CERT, CIAC or other sources, being able to test for open mail relays and anonymous FTP servers, installing and configuring an intrusion detection system such as snort or Tripwire. Candidates should also be able to update the IDS configuration as new vulnerabilities are discovered and apply security patches and bugfixes.''

Key files, terms, and utilities include:

Tripwire nessus netsaint snort telnet nmap

Security tasks
Task: Install and Configure Kerberos

Installing:

Configuration files:

Kerberos Reference:

Use atelnet client to test/debug your servers This implies you know a little about the protocol used : read the corresponding RFCs Check security mailing lists such as Bugtraq, CERT, et al. regularly Patch your systems ASAP !

Run a security scanner on your system regularly Network security scanners Nessus and Netsaint are widely used, highly considered and open-source Bastille Linux is a great host-based security scanner Use some Intrusion Detection Systems (IDS), both network- and hosts-based Tripwire Snort

Don't forget : security is a never-ending process, not a state or a product !


text:
LPI Linux Certification/LPIC2 Exam 202/Network Troubleshooting

Section Overview

 * Troubleshooting network issues

Overview
Description: The candidate should be able to identify and correct common network setup issues to include knowledge of locations for basic configuration files and commands.

Key files, terms, and utilities include:

/sbin/ifconfig /sbin/route /bin/netstat /etc/network /etc/sysconfig/network-scripts System log files /usr/sbin/traceroute /sbin/hostname /usr/bin/nslookup /usr/bin/dig /bin/dmesg

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
User:Zhixiongkang~enwikibooks

Welcome to my homepage:网站推广网站推广 机械

title: User:Zhixiongkang~enwikibooks


text:
User:Conan

Workspace
 * https://en.wikibooks.org/wiki/The_Linux_Kernel
 * https://en.wikibooks.org/wiki/Basic_Computer_Security/Further_Reading
 * https://en.wikibooks.org/wiki/Embedded_Systems/Linux
 * https://en.wikibooks.org/wiki/Basic_Computer_Security/Map

Costa (Constantine Shulyupin)

http://www.makelinux.net/

https://github.com/makelinux/

Template:Wc

https://en.wikibooks.org/wiki/Category:Merge_templates

⌨ ⌨⌨

wget -q -O- https://www.kernel.org/doc/html/latest/core-api/index.html | sed 's@\([^<]\+\).*headerlink.*href="\(#[^"]\+\).*@* @p;d'

wget -q -O- https://www.kernel.org/doc/html/latest/core-api/kernel-api.html | sed 's@<\(h.\)>\([^<]\+\).*headerlink.*href="\(#[^"]\+\).*@*\1 @p;d'

Category:Book:The_Linux_Kernel

Category:Book:The_Linux_Kernel/Templates

colors
Templates:

at

https://www.google.com/search?q=socket&sitesearch=lxr.free-electrons.com%2Fsource

http://www.makelinux.net/

wikipedia:User:Conan

title: User:Conan


text:
Template:The Linux Kernel/id

id Usage:

Result:

title: Template:The Linux Kernel/id


text:
Template:The Linux Kernel/file

src Usage:

title: Template:The Linux Kernel/file


text:
English as an Additional Language/Rail Travel

RAIL TRAVEL Buying a train ticket

A young traveller goes up to the ticket office in a Railway Station in England:

 * Traveller: "A ticket to Coventry, please."
 * Clerk:       "Is that a single or a return?"
 * Traveller: "A return, please. "
 * Clerk:      "That's five pounds seventy then."
 * (The traveller hands over a ten-pound note.)
 * The Ticket Clerk takes the money and gives out a two part ticket along with some coins.
 * Clerk:      "Four pounds thirty is your change. Platform 3, you'd better hurry."
 * Traveller: "Thanks"

The young traveller checks his change and hurries off as the Ticket Clerk serves the next passenger.

(Note that the exchange tends to be hurried and clipped. Flowery, extended sentences aren't needed, just the required information, a little courtesy, and a check of the coins and the tickets. Mistakes do happen, especially if you are in a hurry.)

A quick check now can save problems later:

The traveller rushes back to the ticket office, and tries to speak to the same Ticket Clerk:

 * Traveller: "Sorry, these tickets say Daventry not Coventry"
 * Clerk: "You said Daventry, sir."
 * Traveller: "I'm sure I did not. I wanted a ticket to Coventry."
 * Clerk: "Let's have a look then."
 * (The Clerk takes the tickets back and examines the two pieces of the ticket.)
 * Clerk: "OK. Return to Coventry, same fare."
 * (The Clerk prints out two new parts to the ticket.)
 * Clerk: "Here you go. Coventry, return."
 * (The Clerk passes the new ticket back to the Traveller.)
 * Traveller: "Thank you very much."

The traveller hurries off again with the correct tickets, just in time to board the train to Coventry.

There are many ways to ask the same question (or be asked):
 * "Is this the train to Liverpool?"
 * "Is this the train for Liverpool?"
 * "Does this train go to Liverpool?"
 * "This the Liverpool train?" (notice that the "is" can be left out in general speech)
 * "Going to Liverpool?"
 * "Liverpool train?"
 * "Liverpool?" (although this can be confusing, meaning many things in just one word.)

(Note that some of these sentences are technically incorrect, but are acceptable in general speech. When writing English, outside of character dialogue or quotation, be specific and grammatically correct.)

 * Glossary
 * Luggage - Bags carried by a passenger. Can be suitcases, backpacks, boxes or any bag.
 * Lost Luggage - An office where items that passengers have forgotten are taken.
 * Fare - The cost of the ticket.
 * Ticket - The token given to a passenger to allow them to travel, showing the cost and destination etc.
 * Guard - on British trains, a train company worker checking tickets and keeping passengers safe.
 * Change - The money returned to somebody who paid with more than the cost of the transaction.
 * Train -  A group of carriages rolling along rails, carrying passengers or freight.
 * Passenger -  A person, usually not counting the driver, riding in a vehicle.
 * Return - A type of ticket allowing there and back travel.
 * Single - A type of ticket allowing one way travel, that is just to there.
 * Destination - another word for the place the train passenger is going to.


text:
Talk:C++ Programming/Idioms

I'd initially thought this page will have short examples for quick reference of syntax as this page was supposed to be a continuation of Programming:C plus plus Reference Tables which is already a bit large. Specific examples like the Temperature class should probably go into the main text (i.e. the portion of the textbook not including appendices like reference tables, glossary, FAQ). But until we get chapters on constructors, it could be retained here. With this hindsight, probably even the long explanation on why prevention of copying might be necessary, and other such things that I wrote should also go to the main text.

BTW We could have separate pages for each section in the reference tables page, and probably have a page transcluding all those pages. Also some of the bloat in those tables could also be transferred to the main text.

Note that I am still under the assumption that we'd have a textbook spanning multiple modules. -- Paddu 12:47, 16 Nov 2004 (UTC)

About pImpl example
Somehow I think using templates it would be more efficient to implement the pImpl example, although you wouldn't be able to use different implementations at run-time, you'd still get the same result with no need for memory management (new & delete). Changed to something like this...

template  class Book { public: void print; private: l_BookImpl m_p; } void Book::print {  m_p.print; }

The only difference here is the  instead of   (and the lack of new in ctor and the implied delete in dtor), the latter of which also would require something to pass another implementation in order to actually benefit from the pointer usage, which the example lacks completely.

--Acolyte of Discord 00:05, 25 April 2007 (UTC)

A discussion of almost exactly this idea appeared in . 105.227.117.134 (discuss) 20:05, 19 February 2015 (UTC)

pImpl section introduction
"In C++ you have to declare member variables within the class definition which is then public and that this is necessary so that an appropriate memory space is allocated means that abstraction of implementation is not possible in "all" classes."

This paragraph is really awkward and should be re-written. Unfortunately I am not knowledgeable enough to do that myself. --Aptd (discuss • contribs) 18:24, 3 August 2016 (UTC)

title: Talk:C++ Programming/Idioms


text:
Category:Lemon recipes

Recipes involving lemon.

title: Category:Lemon recipes


text:
Talk:Computer Hacking

This is all stupid.
Yep. --Cyberman 11:19, 13 Jun 2005 (UTC)

BTW i'm in an arguing mood.

"For all those who're confused with the fact that a hacker merely enjoys exploiting the weakeness of any security system.." Really?! I'll be damned.. so white hats aren't excited they can keep their job by finding a weakness and improving on it? MAYBE... you should work on your English? OMG I found a security flaw in your writing. Pwned.

Vandalism / cleaned up
I reverted the talk page due to vandalism, and cleaned it up a bit. Remember to sign your comments. RoceKiller 21:52, 28 May 2005 (UTC)

Why "Koibhi"?
Why is this wikibook called Koibhi?--Hyperlink 04:40, 31 Mar 2005 (UTC)

(empty header)
鼠 says: Pssh.. Hacking is hacking. I don't understand where people get off defining hackers by white hat and black hat. White hats should just be called Digital Defenders and black hats hackers. Hacking is hacking whichever way you look at it. Hacking does not equal protecting. It means breaking into a security system within an illegal manner. I don't hack into things, I just find flaws in systems and use them to my advantage. It's not hacking, it's just using what they forgot to cover up. By the way, you spelled text,organizing, and many other things wrong.

I think I have to strongly agree with you there. Hacking is hacking, there is no point implying they should categorised them into some kind of a 'how bad is a hacker' barometer. The real issue how can others protect their security from hackers, that's the real issue! Of course, being aware of the tactics used by hackers, how they operate and deploy their tricks would be an advantage to anyone. For that being certified as a ethical hacker is important. But wait. What would happen if ethical hackers suddenly confounded black hat hackers, where consequently some kind of a 'team ethical hackers world police' version? I suppose one other major key issue would be to enable users to be aware of flaws in their systems. Perhaps this is why some hackers argue they are not hacking they just acute enough to pick up flaws to their advantage. The issue of raising awareness in this subject matter has always been something strongly advocated by Firebrand Training, formerly known as the Training Camp. Thank you for your pointsTbarbosa (talk) 14:50, 19 November 2010 (UTC)

 * Orignal Creator says: 'Ahem. If you find this book interesting, please edit what you want to be better. Yet I (the first author, who created it) would find it very pleasing not to delete whole sections of tekst without noting so. At least help orginising the book, it'll be a compensation for the deleted stuff. Many thanks for helping (in advance).'

There is a qaulification called certified ethical hacker if it helps this is a link to a course that leads to it. Hope no one minds the commercial link. Dolive35 19:32, 22 April 2006 (UTC)Tbarbosa (talk) 14:50, 19 November 2010 (UTC)

Hacker...nothing to do with breaking a security system
For all those who're confused with the fact that a hacker merely enjoys exploiting the weakeness of any security system..you're absolutely wrong..a hacker is just a guru of some field. Well, in the case of computers, a hacker, knows the ins and outs of any computer system. its operating system, how it connects over the network, the method deployed in transfering files over various protocols, etc. etc. and so can in a way, play tricks on those who dont know the details of the former to their advantage. Obviously, with great powers, come great responsibility ;) - i know i know..spiderman..so when a person is gifted with such knowledge, the better way to exploit a loophole in a system, is to inform the party and tell them a fix. Sadly, not everyone is responsible, and some use it to gain money. Some use it to create havoc. We call em hackers..or script kiddies. In essence a hacker, is a respected member of a community. check out this link. http://catb.org/%7Eesr/faqs/hacker-howto.html This will give you an idea of what a hacker is ..and how to become one..if you are really competent to be one.. I now advice not to further argue over who or what or whether its moral to be a hacker, and provide technical information on computing, and..hacking in a general way.

I will add a couple of articles i've bin working on soon. In the meanwhile..those who are interested in reading good stuff...then try this http://www.insecure.org

 * Thanks for helping out anyway you can. Be constructive and I think, even if hacking is hacking by using a forgotten flaw, you should be considered a grey hat for doing that. Anyways, thanks for correcting my problems. Though, do not that I prefer en-UK over en-US. So, maybe that's the issue. Anyways, I'll be waiting up just about any constructive edit. May the souce be with you (Tux?).xy 19:07, 25 Nov 2004 (UTC)

The grammar is just terrible:

From: "A perspective view on hackers"

"Don't skip this part if you want to obtain an objective view on hacking. First of all, the definition of hackers is redefined, since a lot of commercial put it in a rather commercial perspective (so to say). Then, their history is covered. This 21 century hold many 'miracles', so hacking should be casted in the world of technology if people were to understand them. Yet the hacking-culture is covered in a seperate chapter. This is due the not-so simple way in which hackers tend to work. Finally, ethics, shared by most hackers are covered so that you know what hackers stand up for."

I mean, Jesus Christ! Not only is there the horrendous grammar, there's the advocacy of the item being described... it just needs to be thrown out.

Come ON...
--Genobeeno 20:14, 2 Jul 2005 (UTC)

The grammar is just terrible:

From: "A perspective view on hackers"

"Don't skip this part if you want to obtain an objective view on hacking. First of all, the definition of hackers is redefined, since a lot of commercial put it in a rather commercial perspective (so to say). Then, their history is covered. This 21 century hold many 'miracles', so hacking should be casted in the world of technology if people were to understand them. Yet the hacking-culture is covered in a seperate chapter. This is due the not-so simple way in which hackers tend to work. Finally, ethics, shared by most hackers are covered so that you know what hackers stand up for."

I mean, Jesus Christ! Not only is there the horrendous grammar, there's the advocacy of the item being described... it just needs to be thrown out.

Reverse Engineering merge (redirect)
I think we should probably move this page into a book with a little bit more form and function. Also, the way this "book" stands now, it is more likely to be deleted then it is to be expanded. If we merge this page into a more respectable book, we won't need to worry about this thing being deleted. We can discuss the issue here. -- 19:56, 9 December 2005 (UTC)

I agree, I vote that this page be merged. - brmwk 2/10/06

I also agree, this would work better with some heavier editing and a merge into the larger Reverse Engineering work. Lorax 01:13, 29 March 2006 (UTC)

I strongly disagree, the reverse engineering book is focused on a specific area knowledge, this book should be retained as a more general overview. There are many topics that would be overlooked by a merger with reverse engineering, and reverse engineering would suffer from too many segways. Links would be more appropriate.
 * I understand the disagreement, but I just want everybody to keep in mind that this kin of book, especially if it focuses on illegal activites, could very easily be deleted as per wikibooks policy. Wikibooks administrators (myself included) have already deleted other books that were flagrantly illegal. I just want to present some options for this book to legitimize itself, so that it doesnt fall on the chopping block later. --Whiteknight (talk) (current) 16:18, 20 April 2006 (UTC)

Disagree (or at least I disagree with this redirect) - I just clicked on 'Computer Hacking' and it took me to 'Reverse Engineering'. That doesn't make any sense. You can't just redirect two unrelated topics, just because the development of the book was not going very well. If some content from the Computer Hacking book was rescued to the Reverse Engineering book, then we should make a page saying so, and saying that the rest of the book has been deleted because it was rubbish. -- (just visitor to wikibooks) 10:12, 2 August 2006 (UTC)

Unite
I am pretty new to wikipedia (just joined today 29/1/06!). And I think this is a wonderful site with a great mission. Imagine: 'free' access to 'any' type of knowledge within 5 years or so. But we must unite and stop condemning the grammar or any other idea! If you know something about hacking I think you can always edit or contribute in someway. It's easy to comment than to take responsibility. Together we can make this book a great resource. So, let's Unite!

Collaborate
Grammer is essential to coherent communication. This is why computer languages have structures that must be followed for the parser and compiler to be able to do anything other than spew errors.Lorax 01:48, 29 March 2006 (UTC)

title: Talk:Computer Hacking


text:
Talk:Human Anatomy/Osteology/Introduction

test

Seems very jumbled and hard to read
Since this book has not seemed to be touched in some time I am being somewhat agressive with it. I find this very hard to read in these huge paragraphs, with referances to graphics that are not even there. Seems this was pasted right out of another document. My intention is to seperate this into an introduction and a "Structure of Bone" section. I think it will read much more smoothly.

DONT PANIC
Foound much of this page to hard to follow so I cut a good deal of the Figure explainations out of the page. I am certain that some of it will be reintroduced but a good portion of it was in referance to figures that were not even present in the book. If this information is indeed from Grey's of 1918 it is certainly out of date.


text:
User:Bjork24

bjork24 is the psuedonym for Dan C., which is a shortened version of the author's real name.

title: User:Bjork24


text:
User:Elielg5299

currently a college student somewhere in the philippines.

areas of interest are: music, engineering, computer programming, christianity, philosophy, literature.

would be making contributions particularly in those areas.

title: User:Elielg5299


text:
User:SimonJWright

My Wiki Contributions
Wiki Documents I have contributed to:

 * Wikibook "Programming:Ada"

title: User:SimonJWright


text:
Cookbook:Japanese Red Bean Buns

| Cuisines | Cuisine of Japan

During the winter season, you can see various kinds of steamed buns at every convenience store in Japan. This is known as a kind of dim sum in America and Europe. Japanese-style buns are bigger. It is good for snacks.

Sweet red bean paste

 * 3 ⅔ oz (110 g) Japanese red beans (azuki)
 * 5 ⅓ oz (150 g) granulated sugar
 * 1 tablespoons starch syrup, for shining
 * 1 dash salt

Dough

 * 1¼ oz package active dry yeast (2¼ teaspoons)
 * 1 teaspoon granulated sugar
 * 1 cup lukewarm water (40-45°C)
 * 3 cups all-purpose flour (reserve 1 tablespoon if mixing by hand)

Sweet red bean paste

 * 1) Wash the beans well.
 * 2) Place beans in a large saucepan, and add 14 oz (400 ml) water or enough to cover the beans. Bring to a boil over high heat, then drain the water. Do this step two more times to get rid of harsh flavors in the beans.
 * 3) Cover beans with water again, and simmer over low heat for 30–40 minutes, removing any scum. Add more water if it falls below the level of the beans. If the bean can be crushed easily by fingers, it is done; if not, cook more.
 * 4) Cover, remove from the heat, and steam for 10 minutes.
 * 5) Drain the beans and liquid, reserving both the liquid and beans. Set the beans aside.
 * 6) Return the bean liquid to saucepan, and add sugar and salt. Heat until the sugar and salt have dissolved, then remove from the heat.
 * 7) Transfer the beans to the pan of syrup. Let soak for 30 minutes or until sweet taste infiltrates to the beans.
 * 8) Over low heat, boil the bean mixture until it becomes thick enough to form into a ball by hand. Be careful not to burn it.
 * 9) Let it cool before using.

Dough

 * 1) In a small bowl, sprinkle yeast and sugar evenly over the lukewarm water; stir until yeast dissolves. Let stand 10 minutes or until foamy.
 * 2) In large bowl or in food processor, combine flour and yeast mixture and mix well, or process 1 minute. If mixing by hand, sprinkle work surface with the reserved 1 tablespoon flour; turn dough out onto work surface and knead until dough is smooth and elastic, about 10 minutes.
 * 3) Spray large bowl with non-stick cooking spray; place dough in bowl. Cover loosely with plastic wrap or a damp towel, and let rise until dough triples in volume, about 3 hours. Punch down and wrap in plastic until ready to use. Will keep 3 days in the refrigerator and up to 2 months in the freezer.

title: Cookbook:Japanese Red Bean Buns


text:
JLPT Guide

Before 2010, there were only 4 levels of the JLPT, and the test agency released official vocabulary and grammar lists. One level was split in two, forming the current N2 and N3 levels. Since then, the test agency has not released vocabulary or grammar lists for either of these levels. As such, the N2 and N3 lists here are formed using things test takers remember and general estimates as to the difficulty of the material, and should not be considered entirely comprehensive. The N5, N4, and N1 material should be rather representative.

title: JLPT Guide


text:
Tok Pisin/Verbs/traim

Tok Pisin > Verbs > traim

Traim as a verb
Traim (alternate spellings: traiim, traeim) is a Tok pisin verb basically meaning to try.

Here are some examples of its use:

Sampela man i kisim ol prut na traim planim klostu long haus bilong ol. Some men took the fruits and tried to plant them next to their houses. (Masalai bilong Ailan Lep).

Planti man bilong Baluan i laik traim long painim dispela Ailan Lep. Many men from Baluan wanted to try to find this island called Lep. (Masalai bilong Ailan Lep).

Please note that here, the same author is using traim once without long, once with long.

Other examples:

Ol i bin traim long givim halivim... They tried to bring help... (Taim bilong toktok, Redio Ostrelia).

'''Ol wok ol i traim bilong mekim ol gavman i abrusim ... pasin bilong bagarapim rait bilong pipol.''' ''They tried to make the officials renounce... to their disrespect of people's rights.'' (Taim bilong toktok, Redio Ostrelia).

Here, the same speaker is using traim once with long, once with bilong.

Traim as a noun
Traim can be nominalized. It then becomes a noun meaning: a try, a challenge, an ordeal, and in the Scriptures, temptation.

Examples:

Mipela i save yupela i painim kainkain traim long laip bilong yupela We know that you meet all kinds of ordeal in your life. (Catholic Bishop's Conference of PNG & SI, 2001).

Sambai long mipela long taim bilong traim, na rausim olgeta samting nogut long mipela. Protect us when we are in a time of temptation and take all bad things away from us. (The Lord's Prayer in Pidgin, litteral translation from Tok Pisin).

title: Tok Pisin/Verbs/traim


text:
Tok Pisin/Verbs

Tok Pisin > Verbs

Verbs in Tok Pisin
There are basically two types of verbs in Tok Pisin: transitive and intransitive.
 * In general, transitive verbs end in -im. Example: kisim (sampela samting), take, receive smth. They are exceptions.
 * In general, intransitive verbs do not end in -im. Example: slip (long nait), sleep (at night)

Transitive verbs
more about transitive verbs

Intransitive verbs
more about intransitive verbs

Some very common verbs of difficult use
Most verbs are easy to use for English speakers, but some of them may be puzzling because of their unexpected meaning or use.

Here are some of them:
 * /ken/
 * /kolim/
 * /save/
 * /stap/
 * traim, traiim

Nominalized verbs
Verbs can be nominalized. Examples:
 * /traim/ > 1. to try (smth); 2. a try, an ordeal
 * /askim/ > 1. to ask (smth); 2. a question.

title: Tok Pisin/Verbs


text:
Japanese/Vocabulary/Business

Japonais/Vocabulaire/Commerce

title: Japanese/Vocabulary/Business


text:
Japanese/Vocabulary/Law

Intellectual property (知的財産 ちてきざいさん)
fr:Japonais:Vocabulaire Justice

title: Japanese/Vocabulary/Law


text: Japanese/Vocabulary/Computing

title: Japanese/Vocabulary/Computing


text:
Introduction to Philosophy/Logic/Tautologies and Contradictions

Introduction to Philosophy > Logic > Tautologies and Contradictions

Tautologies
A truth table column which consists entirely of T's indicates a situation where the proposition is true no matter whether the individual propositions of which it is composed are true or false. The most simple example would be (p ∨ ¬p).

 p  ¬p    (p ∨ ¬p) T    F       T F     T       T

A proposition which is true independently of the truth or falsity of the atomic propositions from which it is composed is known as a tautology.

Contradictions
Similarly, a proposition which is false independently of the truth or falsity of the atomic propositions from which it is composed is known as a contradiction. The simplest example of this would be (p ∧ ¬p).

 p  ¬p    (p ∧ ¬p) T    F       F F     T       F


text:
Perl Programming/Array variables

Perl syntax includes both lists and arrays.

Lists
A list in perl is an ordered set of scalar values. It is represented in your code as a comma-separated sequence of values, which may or may not be contained in scalar variables. Lists can be used to make multiple assignments at once, and can be passed as arguments to several built-in and user-defined functions:

Alternate List Construction
When creating a list of several strings that do not include spaces, Perl provides a shortcut to get around typing multiple quotes and commas. Instead of you can use the qw// operator. This operator uses any non-alpha-numeric character as a delimiter (typically the / character), and encloses a space-separated sequence of barewords. A delimiter separates the command with the arguments. The above line is identical to the following:

and both are equal to this:

The last example uses the open and close parenthesis as a different delimiter. If there is an open and close version of the delimiter you choose, you need to use them both. Otherwise just repeat the same symbol twice. For example, you cannot type qw you have to type qw.

You can also abuse the glob syntax, when the strings do not include shell metacharacters:

List assignments
As shown above, lists can be used to make several assignments at once. If the number of variables on the left is the same as the number of values on the right, all variables are assigned to their corresponding values, as expected.

If there are fewer variables on the left than values on the right, the 'extra' values are simply ignored:

If there are more variables on the left than values on the right, the 'extra' variables are assigned the default undef value:

The existence of list assignment creates the ability to 'swap' two variables' values without the need of an intermediary temporary variable:

Arrays
An array in Perl is a variable that contains a list. An array can be modified, have elements added and removed, emptied, or reassigned to an entirely different list. Just as all scalar variables start with the $ character, all array variables start with the @ character.

Array Assignment
Arrays are assigned lists of values. The list of values can be arbitrarily large or small (it can even contain 0 elements).

That last example exemplifies a feature of Perl known as 'array flattening'. When an array is used in a list, it is the array's elements that populate the list, not the array itself. As stated above, a list is a set of scalar values only. Therefore, the @all</tt> array contains 1000 elements, not 2.

Arrays in scalar context
When an array is used in scalar context - either by assigning a scalar variable to the array's value, or using it in an operation or function that expects a scalar - the array returns its size. That is, it returns the number of elements it currently contains

Printing an Array
There are two general ways of printing the values of an array. You can either print the list of items in the array directly, or you can interpolate the array in a double-quoted string.

In the first example, the <tt>print</tt> function is being given a list of 6 arguments: the string 'My names are: ', each of the four values in <tt>@names</tt>, and the string ".\n". Each argument is printed separated by the value of the <tt>$,</tt> variable (that defaults to the empty string), resulting in the values from the array being 'squished' together: My names are: PaulMichaelJessicaMegan.

In the second example, the <tt>print</tt> function is being given exactly one argument: a string that contains an interpolated array. When Perl interpolates an array, the result is a string consisting of all values in the array separated by the value of the <tt>$"</tt> variable (that defaults to a single space): My names are: Paul Michael Jessica Megan.

Accessing Elements of an Array
The elements of an array are accessed using a numerical reference within square brackets. Because each item within an array is a scalar value, you need to use <tt>$</tt> when referencing a value. The first element of an array is number 0 and all the others count up from there.

A negative number will count down from the right side of the array. This means that -1 references the last element of the array and -3 references the third to last element. Let's see some examples:

What if you need to know the last index? <tt>$#array</tt> will return it for you:

A common mistake is to do this:

In fact <tt>@array[0]</tt> is a slice (that is, a sub-array of an array) that contains one element, whereas <tt>$array[0]</tt> is a scalar that contains the value 1.

Command line arguments
As you may wonder, Perl scripts support command line arguments. The entire list of parameters is stored in the array <tt>@ARGV</tt>, with the first entry containing the first command line argument. If no command line parameters were passed, <tt>@ARGV</tt> is an empty array.

The array functions and operators listed above can easily be used to detect the passed command line arguments and to detect the number of arguments provided.

Related articles

 * Data Structures/Arrays
 * List Functions
 * Array Functions
 * Perl Arrays

Perl/Tablice

title: Perl Programming/Array variables


text:
User:MrItty

I am a Perl afficianado. After learning Perl in 1998, I started teaching Perl for two years at Rensselaer Polytechnic Institute. I am a frequent poster to comp.lang.perl.misc. During 2003 I was contracted by Atomic Dog Publishing to create the supplemental material for a proposed online edition of "Learning Perl", by Randal Schwartz (which was eventually scrapped due to miscommunication by Atomic Dog and O'Reilly).

My only goal at Wikibooks is to expand and impove the Perl book.

Reach me via email at [mailto:mritty@gmail.com mritty@gmail.com]

title: User:MrItty


text:
User talk:Joelnackman

Can you please explain why you completely eliminated all the information I added regarding Perl I/O, without so much as copying the data to a new section, despite your comment of "filehandles later"? -- MrItty 13:45, 17 Nov 2004 (UTC)

title: User talk:Joelnackman


text:
Ada Programming/Libraries/Standard

The Standard package is implicit. This means two things:

 * 1) You do not need to  or  the package, in fact you cannot (see below) . It's always available (except where hidden by a homograph, RM ).
 * 2) Standard may contain constructs which are not quite legal Ada (like the definitions of Character and Wide_Character).

A clause mentioning Standard references a user-defined package Standard that hides the predefined one. So do not do this. However any library unit hidden by a homograph can be made visible again by qualifying its name with Standard, like e.g. Standard.My_Unit.

Implementation
Since the package Standard is very important for portability, here are some examples for various compilers:

 * The package Standard from ISO 8652.
 * The package Standard from GNAT.
 * The package Standard from Rational Apex.
 * The package Standard from ObjectAda
 * The Standard definitions for AppletMagic

Portability
The only mandatory types in Standard are Boolean, Integer and its subtypes, Float, Character, Wide_Character, Wide_Wide_Character, String, Wide_String, Wide_Wide_String, Duration. There is an implementation permission in RM (51) that there may be more integer and floating point types and an implementation advice RM (52) about the names to be chosen. There even is no requirement that those additional types must have different sizes. So it is e.g. legal for an implementation to provide two types Long_Integer and Long_Long_Integer which both have the same range and size.

Note that the ranges and sizes of the numeric types can be different in every platform. There is an implementation requirement that the size of type Integer is at least 16 bits, and that of Long_Integer at least 32 bits (if present) RM (21..22). There is also an implementation permission RM (25) that further types whose names indicate smaller ranges like Short_Integer (if present) do not in fact have ranges greater than those indicating larger ranges. There is, however, an implementation advice RM (28) that there should be no other integer types in Standard than Integer and Long_Integer; instead, those hardware adapted types should be defined in package Interfaces RM. So if you want full portability of your types, do not use types from Standard (except where you must, see below), rather define you own types. A compiler will reject any type declaration whose range it cannot satisfy.

This means e.g. if you need a 64-bit type and find that with your current implementation Standard.Long_Long_Integer is such a type, when porting your program to another implementation, this type may be shorter, but the compiler will not tell you - and your program will most probably crash. However, when you define your own type like

My_Integer_64  -(2**63) .. +(2**63 - 1);

then, when porting to an implementation that cannot satisfy this range, the compiler will reject your program.

The type Integer is mandatory when you use [[wide] wide] strings or exponentiation x**i. This is why some projects even define their own strings, but this means throwing out the child with the bath tub. Using Integer with strings and exponentiation will normally not lead to portability issues.

Wikibook

 * Ada Programming
 * Ada Programming/Libraries

Ada Quality and Style Guide

 * – Avoid using the package ASCII
 * – Avoid the predefined numeric types

|Standard

Programación en Ada/Unidades predefinidas/Standard

title: Ada Programming/Libraries/Standard


text:
Ada Programming/Libraries/Standard/GNAT

|Standard:GNAT

title: Ada Programming/Libraries/Standard/GNAT


text:
Geometry/Chapter 1

Chapter 1: An Introduction to Geometry

Introduction
Geometry comes from two words: geo which means Earth and metry meaning measure. Therefore, geometry means "measuring the Earth". This branch of mathematics deals with the understanding of point and lines and their combinations. In other words, geometry is a type of maths used to measure things that are impossible to measure with devices. For example, no one has been able take a tape measure around the Earth, yet we are pretty confident that the circumference of the planet at the equator is 40075.036 km. How do we know that? The first known case of calculating the distance around the Earth was done by around 240 BCE. What tools do you think current scientists might use to measure the size of planets? The answer is geometry.

However, geometry is more than measuring the size of objects. If you were to ask someone who had taken geometry in high school what it is that s/he remembers, the answer would most likely be proofs. If you were to ask him/her what it is that s/he liked the least, the answer would probably be proofs. A study of Geometry does not have to include proofs. Proofs are not unique to Geometry. Proofs could have been done in algebra or delayed until calculus. The reason that High School Geometry almost always spends a lot of time with proofs is that the first great Geometry textbook, "The Elements," was written exclusively with proofs.

This textbook is based on Euclidean geometry. Euclidean refers to a book written over two thousand years ago called by a man named Euclid. In this book Euclid provides methods using just a compass, ruler and a protractor to prove geometrical statements. His method influences the way geometry is taught today. Euclid's book was part of the math curriculum until the beginning of the twentieth century.

Sections

 * 1) Points, Lines, Line Segments and Rays
 * 2) Angles

title: Geometry/Chapter 1


text:
User:Lichtkind

Hello good people,

this account is only for me to be able to trace my work. my Userhompage is on the german Wikipedia.

cs:Wikipedista:Lichtkind de:Benutzer:Lichtkind it:Utente:Lichtkind

title: User:Lichtkind


text: User talk:217.24.159.243

title: User talk:217.24.159.243


text:
Ada Programming/Libraries/Standard/RM

Standard (Standard); Boolean (False, True); Integer  implementation-defined; Natural  Integer  0 .. Integer'; Positive Integer  1 .. Integer'; Float  implementation-defined; "*" (Left : root_integer; Right : root_real) root_real; "*" (Left : root_real;   Right : root_integer) root_real; "/" (Left : root_real;   Right : root_integer) root_real; "*" (Left : universal_fixed; Right : universal_fixed) universal_fixed; "/" (Left : universal_fixed; Right : universal_fixed) universal_fixed; "=" (Left, Right: universal_access)  Boolean; "/=" (Left, Right: universal_access) Boolean; Character (nul,    soh,   stx,    etx,      eot,   enq,    ack,   bel,         bs,      ht,    lf,     vt,       ff,    cr,     so,    si,          dle,     dc1,   dc2,    dc3,      dc4,   nak,    syn,   etb,         can,     em,    sub,    esc,      fs,    gs,     rs,    us,          ' ',     '!',   '"',    '#',      '$',   '%',    '&',   ''',         '(',     ')',   '*',    '+',      ',',   '-',    '.',   '/',         '0',     '1',   '2',    '3',      '4',   '5',    '6',   '7',         '8',     '9',   ':',    ';',      '<',   '=',    '>',   '?',         '@',     'A',   'B',    'C',      'D',   'E',    'F',   'G',         'H',     'I',   'J',    'K',      'L',   'M',    'N',   'O',         'P',     'Q',   'R',    'S',      'T',   'U',    'V',   'W',         'X',     'Y',   'Z',    '[',      '\',   ']',    '^',   '_', '`',    'a',   'b',    'c',      'd',   'e',    'f',   'g', 'h',    'i',   'j',    'k',      'l',   'm',    'n',   'o', 'p',    'q',   'r',    's',      't',   'u',    'v',   'w', 'x',    'y',   'z',    '{',      '|',   '}',    '~',   del, reserved_128,  reserved_129,     bph,   nbh, reserved_132,  nel,    ssa,      esa, hts,    htj,   vts,    pld,      plu,   ri,     ss2,   ss3, dcs,    pu1,   pu2,    sts,      cch,   mw,     spa,   epa, sos,    reserved_153,  sci,      csi, st,     osc,   pm,     apc, ' ',    '¡',   '¢',    '£',      '¤',   '¥',    '¦',   '§',         '¨',     '©',   'ª',    '«', '¬',    soft_hyphen,    '®',   '¯', '°',    '±',   '²',    '³',      '´',   'µ',    '¶',   '·', '¸',    '¹',   'º',    '»',      '¼',   '½',    '¾',   '¿', 'À',    'Á',   'Â',    'Ã',      'Ä',   'Å',    'Æ',   'Ç', 'È',    'É',   'Ê',    'Ë',      'Ì',   'Í',    'Î',   'Ï', 'Ð',    'Ñ',   'Ò',    'Ó',      'Ô',   'Õ',    'Ö',   '×', 'Ø',    'Ù',   'Ú',    'Û',      'Ü',   'Ý',    'Þ',   'ß', 'à',    'á',   'â',    'ã',      'ä',   'å',    'æ',   'ç', 'è',    'é',   'ê',    'ë',      'ì',   'í',    'î',   'ï', 'ð',    'ñ',   'ò',    'ó',      'ô',   'õ',    'ö',   '÷', 'ø',    'ù',   'ú',    'û',      'ü',   'ý',    'þ',   'ÿ', Wide_Character (nul, soh ... Hex_0000FFFE, Hex_0000FFFF); Wide_Wide_Character (nul, soh ... Hex_7FFFFFFE, Hex_7FFFFFFF); Wide_Wide_Character'Size 32; ASCII ... ASCII; String  (Positive  <>)  Character Pack; Wide_String  (Positive  <>)  Wide_Character Pack; Wide_Wide_String  (Positive  <>) Wide_Character Pack; Duration  implementation-defined  implementation-defined; Constraint_Error: ; Program_Error  : ; Storage_Error  : ; Tasking_Error  : ; Standard; |Standard:RM

title: Ada Programming/Libraries/Standard/RM


text:
User:Yann/Talk orphaned

 * Talk:Cookbook/Planning
 * Talk:Cookbook/Temp3
 * Talk:Leitseite/Archiv
 * Talk:Philosophy_of_Religion...
 * Talk:Wikibooks/Archive_1
 * Talk:World_History_Project_-_Contents/Archive_1

title: User:Yann/Talk orphaned


text:
Japanese/Kana/Lessons/Hiragana/Lesson 1

Welcome to the first installment of the hiragana lessons. In this lesson you are going to learn how to read and write the Japanese vowels, "あ", "い", "う", "え" and "お".

The Long Vowel Sound
One can extend the vowel sound of a kana by affixing either a あ、い、or う depending on the vowel. The vowel would be extended for one more mora, or beat. In most cases: あ follows あ; い follows い or え; う follows う or お.

There are rare exceptions where an え vowel is extended by adding え or an お vowel is extended by お. Some examples of this include おねえさん (oneesan or onēsan), おおい, and おおきい (ōkii).

One giveaway to an English-speaking accent in Japanese speech is the use of a diphthong for the elongated "e" sound (Such as the sound in "Eight"). In actuality, "えい" is pronounced correctly by speaking the え sound twice as long as normal.

It is important to make sure you hold the vowel sound long enough because you can be saying "middle-aged lady" （おばさん）(obasan) instead of "grandmother" （おばあさん）(obaasan or obāsan) if you do not stretch it out correctly.

Japanisch/ Hiragana Japonais/Hiragana/Leçon 1 日语/假名/平假名/第一課

title: Japanese/Kana/Lessons/Hiragana/Lesson 1


text:
Japanese/Kana/Lessons/Hiragana/Lesson 2

In this lesson you are going to learn how to read and write か, き, く, け, こ. Adding two small lines called dakuten, but commonly known simply as  tenten, meaning "two marks", causes clear sounds to change to their voiced sound. Thus, adding the tenten marks will cause か, き, く, け, and こ to produce が, ぎ, ぐ, げ, ご.

Clear Sounds
日语/假名/平假名/第二課

title: Japanese/Kana/Lessons/Hiragana/Lesson 2


text:
Optics/Fibre optics

< Optics

An optical fibre is a transparent, thin (~120 micrometres) fibre of glass or plastic used for transmitting light.

How it is made
A fibre optic cable has a core and cladding. The core is the part that the light travels through. It is made out of plastic or glass. Glass is always used for long-distance applications due to its low optical absorption. It is surrounded by material that has a low refractive index. This is called cladding. Fibre optic cables will work without cladding, but this offers less protection; Ergo, cladding is always used in real-world situations. Cladding also ensures that outside light does not get into the cable and interfer with the light transmitted. In addition, the cladding keeps the value of the critical angle constant throughout the whole length of the fibre, regardless of what it travels through. This is important, since the cables often have to travel underground.

If the cables travel underground without cladding, then light would escape, since the optical density of the outside environment would be higher than that of the core, and total internal reflection only occurs when the optical density of the first medium is higher than that of the second.

Total internal reflection
Fibre optics takes advantage of total internal reflection by having the optical density of the core higher than that of the cladding:

$$n_1 = n_\text{plastic} = 1.6$$

$$n_2 = n_\text{air} = 1.0$$

$$\theta_1 = 60^\circ$$

$$\theta_2 = \text{angle of refraction}$$

$$\sin\theta_2 = \sin\theta_1 {n_1 \over n_2}$$

solve for $$\theta_2$$:

$$\sin\theta_2 = (\sin 60^\circ)(1.6) = (0.866)(1.6) = 1.39$$

$$\theta_2 = \arcsin 1.39 = \text{undefined}$$

(There are no angles whose sine is greater than one).

Therefore, there is no angle of refraction. This tells us that total internal reflection has occurred, since there is no refracted ray.

The fact that there is total internal reflection means that light doesn’t escape, since it does not refract outside, but rather keeps on reflecting inside the fibre. Total Internal Reflection (TIR) means 100% reflection. This is very useful in this case, since all light will remain inside the fibre.

The light which enters the fibre is a beam. It consists of many rays behaving in a similar way. They will keep on crossing each other - thereby filling up the core with light. A pulse of light traveling through a fibre optic cable is just a bunch of these rays.

There is a limit to how fast pulses of light can be sent through fibre optics. This is due to pulse spreading. Since light is dispersed over long distances, the pulses of light will change as they travel along the fibre. When pulses are sent, it is in a square wave shape. However, the pulses gradually get wider.

Pulse spreading
There are two types of dispersion which cause pulse spreading:

Chromatic dispersion
When different wavelengths of light are sent through the fibre, they will travel at different speeds. For example, since white light contains all the different wavelengths of light, if white light is shone through a fibre optic cable, chromatic dispersion will occur. This is due to the fact that the different colours in white light will travel at different speeds.

Modal dispersion
If rays are oblique they will take a longer route than others. The rays traveling parallel to the centre of the fibre reach the end the fastest, and the more oblique rays reach the end last.

Therefore, we can conclude that:

Total dispersion=Chromatic dispersion + Modal dispersion

Problems caused by pulse spreading
Pulse spreading causes a few major problems:
 * 1) Bandwidth limit: Pulse spreading limits the rate at which bursts of light can be sent, thereby limiting the bandwidth.
 * 2) Distance limit: Since light is dispersed more as the fibre optic cable becomes longer, the bandwidth is reduced as the distance is increased. After a certain distance, the bandwidth becomes unacceptably low.

Fibre optics in our world
Modern fibre optics can have up to a thousand fibres in one cable.

Fibre optics have advantages and disadvantages when compared to regular copper wires.
 * 1) lower loss
 * 2) large data-carrying capacity (thousands of times greater)
 * 3) immune to electromagnetic interference
 * 4) High electrical resistance (safe to use near high voltage equipment)
 * 5) Light weight
 * 6) Signals contain very little power
 * 7) Faster (speed of light)
 * 8) Very hard to tap fibre optic cables without being detected
 * 9) Existing wires must be replaced with fibre optics
 * 10) Much more difficult to splice. Requires special training and special tools

Fibre optics today are so advanced that no amplification is required for distances of up to hundreds of kilometers. However, longer-range systems still must use optical amplifiers.

Authors

 * Faraaz Damji (Frazzydee)

title: Optics/Fibre optics


text:
Talk:Programming:C plus plus/proposals

 * 1) Highlighting common gotchas for C programmers, common gotchas for Java programmers, general common programming errors, interesting pieces of history, info. about older C++ compilers, and so on, could each be put in a differently-coloured box. The markup for the box can be put in a template for uniformity. This is somewhat similar to taxoboxes used in Wikipedia. -- Paddu 22:11, 17 Nov 2004 (UTC)
 * 2) Use one particular brace/indent style in all examples for uniformity, but have one chapter mentioning the different styles that are commonly used and showing examples for each. -- Paddu 22:11, 17 Nov 2004 (UTC)
 * 3) Highlighting syntax as mentioned in Programming:C plus plus Hello world. -- Paddu 22:11, 17 Nov 2004 (UTC)

title: Talk:Programming:C plus plus/proposals


text:
PHP Programming/Smarty templating system

What is Smarty?
is a templating engine for PHP. It allows you to separate logic and presentation by separating the PHP code from the HTML (or anything else for that matter) presentation.

Old/custom templating engine example
It is just like below: (The code below is a demo of a custom template engine - not Smarty)

There are two files here "mail.html" (we can say this is a template file) and "mail_engine.php" (ya, you are right...it is an engine.)

This example allows small functionality. You might have big problems if your company value contains #CITY#, for example. There are much more advantages of using smarty. But anyway, raw PHP templating is most effective and fastest.

How does it work?
Smarty is a template engine which actually compiles the template file to the php file that can be later executed. This simply saves time on parsing and variable outputs, beating other Template Engines with much smaller memory use and regex.

Installation
Installation is very basic and easy to use

There is no requirement to copy other files as they are simple examples.
 * 1) Download Smarty Source from smarty.net
 * 2) Open it using your archive extractor (must be compatible with .tar.gz files)
 * 3) Go to the directory called Smarty-x.x.x
 * 4) Copy the libs folder to your website's root ( where you want the website to exist, for example /My_Site/ )
 * 5) You are done!

Basic Syntax #2
Comments: {* Comment *} Writing a variable, assigned from the PHP script: {$variable} Writing a variable, assigned from the config file: Using a variable in a function: $variable Other Examples (Smarty Documentation): Many other combinations are allowed: Calling Functions: {function}
 * 1) variable#

Integrating into a website
To make use of the Smarty Template engine you will need to change your php script, which is used for controlling the Smarty engine and compile the template file. Simple example:

Arrays
Please refer to

Looping
Looping in smarty is just like PHP, except that there are different ways of approaching the variables. For example, in PHP you would write this:

As Smarty compiles similar piece of code by this:

Also, you can use a section function which is very similar to foreach

In the case the designer wanted to add bullet points, or indexes of the array items, there would be no need to do anything for the programmer as you can use other variables that would change themselves after each loop.

Conditions
{if} statements in Smarty have much the same flexibility as PHP if statements, with a few added features for the template engine. Every {if} must be paired with an {/if}. {else} and {elseif} are also permitted. All PHP conditionals are recognized, such as ||, or, &&, and, etc.

The following is a list of recognized qualifiers, which must be separated from surrounding elements by spaces. Note that items listed in [brackets] are optional. PHP equivalents are shown where applicable.


text:
User:Paleorthid

Paleorthid

title: User:Paleorthid