20090430

Choosing a VPN-Type Program for Mathnet

Choosing a VPN-Type Program for Mathnet

Choosing a VPN-Type Program for Mathnet


James F. Carter,
UCLA-Mathnet, 2003-09-26



Requirements





  • Users can connect from arbitrary off-campus locations to a VPN terminus
    (machine) in our DMZ. Presently, Harlech is the designated bastion host.
    We do not want to give users shell acounts on Harlech.
    (Direct connection to internal machines will be by ssh only.)

  • VPN connection should be allowed only for "authorized" people, which
    basically means anyone who has a valid Mathnet loginID.

  • Internal machines should provide services to VPN users beyond what they
    provide to the global internet (they're totally blocked), but maybe less than
    they provide to an actual internal machine. This is mainly a function of
    internal firewall rules.

  • VPN users should be able to route to off-campus sites and get NAT (network
    address translation) at the VPN terminus, so the connection appears to
    originate from a UCLA-Mathnet machine. This is for web access to licensed
    content protected by host-based authentication. (Example: AMS online
    journals.) Again, this is a function of firewall rules and routing.

  • The VPN connection should be encrypted.

  • Administratively, we aren't going to configure a tunnel individually for
    each user; it has to work on a generic basis.

  • There have to be clients for Linux, Windows, and preferably Mac. They have
    to work through NAT boxes.

  • Pre-assigned IP addresses are not feasible; the software must ensure
    that each tunnel has a unique remote IP address. Machines behind NAT boxes
    are typically assigned 192.168.1.1 or 192.168.1.100, depending on the brand
    of NAT box, and so the public IP of the client is likely to be
    non-unique; thus the tunnel's IP has to come from the VPN software, not be
    chosen by the client.

  • Most VPN products are intended for static routes between disjoint subnets,
    e.g. company sites in various cities. For our use the remote IPs are not
    predictable and the tunnels come and go randomly -- the "road warrior"
    scenario.



Candidate VPN Programs






Issue
FreeS/WAN
vtun
cipe
OpenVPN
PoPToP

Protocol
IPSec (ESP, AH)
Its own
Its own
TLS + its own
PPTP (GRE)

Encryption
Excellent
Weak (3)
Weak (3)
Excellent
See (7)

Authorization
X.509 (4)
SSH kludge
Static keys
X.509
Windows
  (Pre-arranged keys also work for most programs)

Ad-hoc users
Yes
Kludge (1)
No
Yes (8)
Yes

Resists IP collisions
No
Kludge (1)
No
Yes (8)
Yes

Clients for:
L,W,M (2)
L,S
L,W
L,S,W,M-x
L,S,W (6)
  (L=Linux, S=Solaris, W=Windows, M=Mac)

Works through NAT
Patch (4)
Yes
Yes
Yes
Yes

We used how long?
1 year
0.5 year
None
0.1 year
None

Blocked by BOL
Works
Works (ssh)
Prob. blocked
Asked for unblock
Probably works

Included with SuSE
Yes
Yes
Yes
Yes (8)
No

Links
Regular,

Super
vtun
cipe
openvpn
poptop

Good features
Has been reliable
Reliable (with 1 user)
Net buzz
Rock solid, easy setup
Microsoft uses it

Bad features
Hard to set up. Diarrhea of the log files.
Requires kludge script. TCP meltdown (5). Shell accounts on bastion host.
No ad-hoc mode
None (8)
Microsoft uses it




  1. For vtun, each user must be preassigned an IP address for the
    tunnel. A script has been written to dynamically assign these addresses
    when the connnection begins. But it's a kludge.
  2. Any IPSec implementation should be able to talk to FreeS/WAN,
    and successful interoperation testing is extensive.
    It is said that Windows XP can do this natively. A kernel module is
    required, and I don't know if one is available for Solaris or Mac OS-X,
    nor whether it works with non-UNIX MAC OS's. There is a commercial
    IPSec client for Mac OS-X:
    VPN Tracker
    by Equinux
    .
  3. Vtun uses a crypto algorithm (Blowfish) from the SSL library,
    but does not use the full-blown SSL to encrypt its channel. There has
    recently been discussion on the vtun mailing list about a weakness in
    how the initialization vector is chosen. (A similar problem led to the
    exploit against 802.11b WEP.) The same criticism is said
    to apply to cipe.
  4. FreeS/WAN development is divided into two branches: "pure"
    FreeS/WAN (for which political goals are significant that require code
    that may be subject to USA export restrictions to be avoided), and
    "super" FreeS/WAN, which has patches for (among other things) X.509
    key exchange and authentication, and NAT traversal. The NAT patch is
    present in SuSE Linux 8.2 but unfortunately there is a technical
    disagreement in the kernel community so that SuSE judges it imprudent to
    put the needed ESP-in-UDP patch in the stock kernel. You have to recompile
    the kernel yourself if you want it.
  5. When tunnelling TCP in TCP, as with tunnelling vtun (or anything
    else) over a ssh forwarded port, when the load is high enough to make
    packets die in collisions, both TCP layers will retry, and the result will
    be a runaway overload, referred to as TCP meltdown. Special care is
    needed to resist this, which ssh is not designed for. Presumably
    kernel-level IP-in-IP tunnels can do better. See href="http://sites.inka.de/sites/bigred/devel/tcp-tcp.html">this link
    for more.
  6. While PoPToP is for UNIX, Windows (95 and later) includes a native
    PPTP client, with which PoPToP interoperates. The HOWTO mentions a
    Mac client but you have to purchase it.
  7. See this link
    for criticisms of security in Microsoft's implementation of PPTP. The
    issue is not weak encryption but weak authentication. Microsoft has
    put out a new, improved authentication protocol, which PoPToP interoperates
    with.
  8. OpenVPN version 2.0beta$N has recently been released; we've
    installed N=5. In this version the server has a pool of IP addresses
    which it pushes to the clients. The client's local IP address is not
    used. The protocol is immune to NAT. The 1.x version requires each
    tunnel to be prearranged using the client's IP address. SuSE 9.1 includes
    OpenVPN-1.6, so we're distributing our own RPM of 2.0.


Additional Discussion





FreeS/WAN
IPSec is divided into the kernel support for AH and ESP
protocols (with associated tunneling code), and the key (ISAKMP) daemon. The
FreeS/WAN distribution provides the kernel modules and hacks. SuSE 8.2 (kernel
2.4.20) includes these (except see above about ESP-in-UDP). IPSec is now
mainstream in the kernel as of 2.5. The ISAKMP daemon for FreeS/WAN is called
"Pluto". People say that a competitor "Racoon" (sic) is just as good and is
easier to set up. The FreeS/WAN developers would disagree.

vtun
While vtun has a number of users and partisans on its
mailing list, its developer is in finished mode, and response to the
security criticism mentioned above has not been swift. For us, the biggest
problem with vtun is the likelihood of remote IP collisions, which it cannot
handle natively. It was intended for use with prearranged connections.

cipe
It is often mentioned as being similar to vtun but
better or more suited to real sysadmins. It is generally
described in the context of prearranged connections.

OpenVPN
It is often mentioned in the context of you really
ought to take a look at OpenVPN
. They're right, we should, and will. It
uses OpenSSL for TLS crypto on the control channel, a block-encrypted main
channel via UDP, and TUN/TAP for tunnelling (mainstream in the
kernel, originally written for vtun). No other kernel support is required.
Performance quote: Pentium-2 266 MHz, TLS/Blowfish/SHA1, large precompressed
files, data rate was 1.455 Mby/sec. It can do chroot, and/or not run as root,
and can lock key info in memory. Version 1.x is intended for static
point-to-point tunnels, and hence is designed so it has to be
individually configured for each user. Version 2.0 includes the road
warrior
multi-user configuration that we need.

PoPToP
PPTP was developed by Microsoft and is present
natively in Windows since Win98 (patches available for Win95). It apparently
is in use by a lot of people. If more than one PPTP session have to traverse
the same NAT box (not a common scenario), it needs special handling; Linux
iptables includes a PPTP helper module. Microsoft provides their employees
with a PPTP client which does more than the native one; it can use a smart card
for authentication, and refuses to connect unless the machine is up to date on
patches.



Conclusions





FreeS/WAN (Super)
Super FreeS/WAN has a number of very positive
features: Crypto is believable; a single configuration stanza can be used
on the server for all user tunnels; the security association is automatically
re-established if a laptop is suspended and reawakened; endpoint authentication
is both effective and flexible. Recently Harlech's kernel was recompiled with
the NAT traversal patch. And, supposedly it
interoperates with Win2K and WinXP natively. A web interface to produce the
X.509 certificates is (still...) in beta test. The only remaining flies in the
ointment are, in the default configuration the remote host uses its public IP
address (192.168.1.100) on the remote connection. The research was done to
learn how to configure WinXP for IPSec, and it actually worked, but the
procedure is so horrendous that it's not credible to expect a user to do it.
For over a year Mathnet used FreeS/WAN exclusively as our VPN solution.
But for the present, see the discussion of OpenVPN below.

vtun
Native vtun requires individual configuration
of each client's tunnel. A script has been created to kludge up dynamic
address assignment. While my experience with vtun is good, I'm afraid that
it isn't robust enough for us to deploy in production.

cipe
Since it requires individual configuration
of each client's tunnel, cipe has to be rejected.

OpenVPN
We were discouraged by version 1.x because
each tunnel had to be configured individually, but we have found
that v2.0beta5 is easy to set up for both generic clients and our server,
and is totally reliable. The Windows client in particular is excellent.
Mathnet has settled on OpenVPN as the VPN client that we will support with
our users.

PoPToP
PoPToP appears to give solid cryptography and
it used to be the only solution that can natively avoid IP address collision of the
remote clients. (OpenVPN's new version also can do this.)
However, authentication is done via PPP, specifically
authenticating to a Windows domain controller (which Mathnet does have).
Extensive auxiliary scripts are needed at the server end to make the connection
work, e.g. filling in the ARP table manually. Thus, PoPToP unfortunately has
to be rejected.


--
map{ map{tr|10|# |;print} split//,sprintf"%.8b\n",$_}
unpack'C*',unpack'u*',"5`#8<3'X`'#8^-@`<-CPP`#8V/C8`"

20090428

<table width="400"><tbody><tr><td>fighting</td><td>Con</td><td>Dex</td><td>Int</td><td>Str</td><td>Wis</td></tr><tr><td>&nbsp;&nbsp;&nbsp; melee</td><td>1</td><td>2</td><td>0</td><td>2</td><td>0</td></tr><tr><td>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; dagger</td><td>0</td><td>4</td><td>0</td><td>1</td><td>0</td></tr><tr><td>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sword</td><td>0</td><td>3</td><td>0</td><td>2</td><td>0</td></tr><tr><td>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; heavy-sword</td><td>1</td><td>1</td><td>0</td><td>3</td><td>0</td></tr><tr><td>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; axe</td><td>1</td><td>1</td><td>0</td><td>3</td><td>0</td></tr><tr><td>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; mace</td><td>2</td><td>1</td><td>0</td><td>2</td><td>0</td></tr><tr><td>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; flail</td><td>1</td><td>2</td><td>0</td><td>2</td><td>0</td></tr><tr><td>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; polearm</td><td>2</td><td>0</td><td>0</td><td>3</td><td>0</td></tr><tr><td>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; misc</td><td>1</td><td>2</td><td>0</td><td>2</td><td>0</td></tr></tbody></table>

aliases

&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$ifarg:wyvesque$endif$
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$ifarg:wyvesque$else$pinkfish$endif$
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$ifarg2:wyvesque$else$pinkfish$endif$
&nbsp;&nbsp;
&nbsp;&nbsp; &nbsp; These three are rather complex. &nbsp;The first function will do the
&nbsp;&nbsp; &nbsp; following: &nbsp;if any arguments are given to the alias command, it will
&nbsp;&nbsp; &nbsp; be replaced with &nbsp;'wyvesque', but if no arguments are given, it will
&nbsp;&nbsp; &nbsp; not be replaced with &nbsp;anything. &nbsp;The second also checks if there is
&nbsp;&nbsp; &nbsp; an argument, but unlike the &nbsp;first example, if there are no arguments
&nbsp;&nbsp; &nbsp; it will be replaced with 'pinkfish'. &nbsp;The third example is the same
&nbsp;&nbsp; &nbsp; as the second but it concentrates on argument 2 &nbsp;instead of the
&nbsp;&nbsp; &nbsp; entire argument chain. Meaning that if there is a second &nbsp;argument to
&nbsp;&nbsp; &nbsp; your alias, replace it with 'wyvesque', else if there is only one
&nbsp;&nbsp; &nbsp; argument, replace it with 'pinkfish'.
&nbsp;&nbsp;
&nbsp;&nbsp; &nbsp; Note that you can put other functions inside such $ifarg$ aliases.
&nbsp;&nbsp; &nbsp; For example:
&nbsp;&nbsp;
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$ifarg3:t $1$ There are three arguments in this alias. Those
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;arguments are "$1$", "$2$", and "$3$". $else$ifarg2:t $1$ There are
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;two arguments in this alias! The first is "$1$" and the second is
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"$2$". $else$ifarg1:t $1$ Only one argument in this alias. It is
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"$1$".$endif$

http://www.pantz.org/software/mysql/mysqlcommands.html

MySQL Commands
Posted on 07-25-2007 00:13:00 UTC | Updated on 01-23-2009 16:29:23 UTC
Section: /software/mysql/ | Permanent Link

This is a list of handy MySQL commands that I use time and time again. At the bottom are statements, clauses, and functions you can use in MySQL. Below that are PHP and Perl API functions you can use to interface with MySQL. To use those you will need to build PHP with MySQL functionality. To use MySQL with Perl you will need to use the Perl modules DBI and DBD::mysql.

Below when you see # it means from the unix shell. When you see mysql> it means from a MySQL prompt after logging into MySQL.
To login (from unix shell) use -h only if needed.

# [mysql dir]/bin/mysql -h hostname -u root -p
Create a database on the sql server.

mysql> create database [databasename];
List all databases on the sql server.

mysql> show databases;
Switch to a database.

mysql> use [db name];
To see all the tables in the db.

mysql> show tables;
To see database's field formats.

mysql> describe [table name];
To delete a db.

mysql> drop database [database name];
To delete a table.

mysql> drop table [table name];
Show all data in a table.

mysql> SELECT * FROM [table name];
Returns the columns and column information pertaining to the designated table.

mysql> show columns from [table name];
Show certain selected rows with the value "whatever".

mysql> SELECT * FROM [table name] WHERE [field name] = "whatever";
Show all records containing the name "Bob" AND the phone number '3444444'.

mysql> SELECT * FROM [table name] WHERE name = "Bob" AND phone_number = '3444444';
Show all records not containing the name "Bob" AND the phone number '3444444' order by the phone_number field.

mysql> SELECT * FROM [table name] WHERE name != "Bob" AND phone_number = '3444444' order by phone_number;
Show all records starting with the letters 'bob' AND the phone number '3444444'.

mysql> SELECT * FROM [table name] WHERE name like "Bob%" AND phone_number = '3444444';
Show all records starting with the letters 'bob' AND the phone number '3444444' limit to records 1 through 5.

mysql> SELECT * FROM [table name] WHERE name like "Bob%" AND phone_number = '3444444' limit 1,5;
Use a regular expression to find records. Use "REGEXP BINARY" to force case-sensitivity. This finds any record beginning with a.

mysql> SELECT * FROM [table name] WHERE rec RLIKE "^a";
Show unique records.

mysql> SELECT DISTINCT [column name] FROM [table name];
Show selected records sorted in an ascending (asc) or descending (desc).

mysql> SELECT [col1],[col2] FROM [table name] ORDER BY [col2] DESC;
Return number of rows.

mysql> SELECT COUNT(*) FROM [table name];
Sum column.

mysql> SELECT SUM(*) FROM [table name];
Join tables on common columns.

mysql> select lookup.illustrationid, lookup.personid,person.birthday from lookup left join person on lookup.personid=person.personid=statement to join birthday in person table with primary illustration id;
Creating a new user. Login as root. Switch to the MySQL db. Make the user. Update privs.

# mysql -u root -p
mysql> use mysql;
mysql> INSERT INTO user (Host,User,Password) VALUES('%','username',PASSWORD('password'));
mysql> flush privileges;
Change a users password from unix shell.

# [mysql dir]/bin/mysqladmin -u username -h hostname.blah.org -p password 'new-password'
Change a users password from MySQL prompt. Login as root. Set the password. Update privs.

# mysql -u root -p
mysql> SET PASSWORD FOR 'user'@'hostname' = PASSWORD('passwordhere');
mysql> flush privileges;
Recover a MySQL root password. Stop the MySQL server process. Start again with no grant tables. Login to MySQL as root. Set new password. Exit MySQL and restart MySQL server.

# /etc/init.d/mysql stop
# mysqld_safe --skip-grant-tables &
# mysql -u root
mysql> use mysql;
mysql> update user set password=PASSWORD("newrootpassword") where User='root';
mysql> flush privileges;
mysql> quit
# /etc/init.d/mysql stop
# /etc/init.d/mysql start
Set a root password if there is on root password.

# mysqladmin -u root password newpassword
Update a root password.

# mysqladmin -u root -p oldpassword newpassword
Allow the user "bob" to connect to the server from localhost using the password "passwd". Login as root. Switch to the MySQL db. Give privs. Update privs.

# mysql -u root -p
mysql> use mysql;
mysql> grant usage on *.* to bob@localhost identified by 'passwd';
mysql> flush privileges;
Give user privilages for a db. Login as root. Switch to the MySQL db. Grant privs. Update privs.

# mysql -u root -p
mysql> use mysql;
mysql> INSERT INTO user (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) VALUES ('%','databasename','username','Y','Y','Y','Y','Y','N');
mysql> flush privileges;

or

mysql> grant all privileges on databasename.* to username@localhost;
mysql> flush privileges;
To update info already in a table.

mysql> UPDATE [table name] SET Select_priv = 'Y',Insert_priv = 'Y',Update_priv = 'Y' where [field name] = 'user';
Delete a row(s) from a table.

mysql> DELETE from [table name] where [field name] = 'whatever';
Update database permissions/privilages.

mysql> flush privileges;
Delete a column.

mysql> alter table [table name] drop column [column name];
Add a new column to db.

mysql> alter table [table name] add column [new column name] varchar (20);
Change column name.

mysql> alter table [table name] change [old column name] [new column name] varchar (50);
Make a unique column so you get no dupes.

mysql> alter table [table name] add unique ([column name]);
Make a column bigger.

mysql> alter table [table name] modify [column name] VARCHAR(3);
Delete unique from table.

mysql> alter table [table name] drop index [colmn name];
Load a CSV file into a table.

mysql> LOAD DATA INFILE '/tmp/filename.csv' replace INTO TABLE [table name] FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (field1,field2,field3);
Dump all databases for backup. Backup file is sql commands to recreate all db's.

# [mysql dir]/bin/mysqldump -u root -ppassword --opt >/tmp/alldatabases.sql
Dump one database for backup.

# [mysql dir]/bin/mysqldump -u username -ppassword --databases databasename >/tmp/databasename.sql
Dump a table from a database.

# [mysql dir]/bin/mysqldump -c -u username -ppassword databasename tablename > /tmp/databasename.tablename.sql
Restore database (or database table) from backup.

# [mysql dir]/bin/mysql -u username -ppassword databasename < /tmp/databasename.sql
Create Table Example 1.

mysql> CREATE TABLE [table name] (firstname VARCHAR(20), middleinitial VARCHAR(3), lastname VARCHAR(35),suffix VARCHAR(3),officeid VARCHAR(10),userid VARCHAR(15),username VARCHAR(8),email VARCHAR(35),phone VARCHAR(25), groups VARCHAR(15),datestamp DATE,timestamp time,pgpemail VARCHAR(255));
Create Table Example 2.

mysql> create table [table name] (personid int(50) not null auto_increment primary key,firstname varchar(35),middlename varchar(50),lastnamevarchar(50) default 'bato');

MYSQL Statements and clauses

ALTER DATABASE

ALTER TABLE

ALTER VIEW

ANALYZE TABLE

BACKUP TABLE

CACHE INDEX

CHANGE MASTER TO

CHECK TABLE

CHECKSUM TABLE

COMMIT

CREATE DATABASE

CREATE INDEX

CREATE TABLE

CREATE VIEW

DELETE

DESCRIBE

DO

DROP DATABASE

DROP INDEX

DROP TABLE

DROP USER

DROP VIEW

EXPLAIN

FLUSH

GRANT

HANDLER

INSERT

JOIN

KILL

LOAD DATA FROM MASTER

LOAD DATA INFILE

LOAD INDEX INTO CACHE

LOAD TABLE...FROM MASTER

LOCK TABLES

OPTIMIZE TABLE

PURGE MASTER LOGS

RENAME TABLE

REPAIR TABLE

REPLACE

RESET

RESET MASTER

RESET SLAVE

RESTORE TABLE

REVOKE

ROLLBACK

ROLLBACK TO SAVEPOINT

SAVEPOINT

SELECT

SET

SET PASSWORD

SET SQL_LOG_BIN

SET TRANSACTION

SHOW BINLOG EVENTS

SHOW CHARACTER SET

SHOW COLLATION

SHOW COLUMNS

SHOW CREATE DATABASE

SHOW CREATE TABLE

SHOW CREATE VIEW

SHOW DATABASES

SHOW ENGINES

SHOW ERRORS

SHOW GRANTS

SHOW INDEX

SHOW INNODB STATUS

SHOW LOGS

SHOW MASTER LOGS

SHOW MASTER STATUS

SHOW PRIVILEGES

SHOW PROCESSLIST

SHOW SLAVE HOSTS

SHOW SLAVE STATUS

SHOW STATUS

SHOW TABLE STATUS

SHOW TABLES

SHOW VARIABLES

SHOW WARNINGS

START SLAVE

START TRANSACTION

STOP SLAVE

TRUNCATE TABLE

UNION

UNLOCK TABLES

USE


String Functions

AES_DECRYPT

AES_ENCRYPT

ASCII

BIN

BINARY

BIT_LENGTH

CHAR

CHAR_LENGTH

CHARACTER_LENGTH

COMPRESS

CONCAT

CONCAT_WS

CONV

DECODE

DES_DECRYPT

DES_ENCRYPT

ELT

ENCODE

ENCRYPT

EXPORT_SET

FIELD

FIND_IN_SET

HEX

INET_ATON

INET_NTOA

INSERT

INSTR

LCASE

LEFT

LENGTH

LOAD_FILE

LOCATE

LOWER

LPAD

LTRIM

MAKE_SET

MATCH AGAINST

MD5

MID

OCT

OCTET_LENGTH

OLD_PASSWORD

ORD

PASSWORD

POSITION

QUOTE

REPEAT

REPLACE

REVERSE

RIGHT

RPAD

RTRIM

SHA

SHA1

SOUNDEX

SPACE

STRCMP

SUBSTRING

SUBSTRING_INDEX

TRIM

UCASE

UNCOMPRESS

UNCOMPRESSED_LENGTH

UNHEX

UPPER


Date and Time Functions

ADDDATE

ADDTIME

CONVERT_TZ

CURDATE

CURRENT_DATE

CURRENT_TIME

CURRENT_TIMESTAMP

CURTIME

DATE

DATE_ADD

DATE_FORMAT

DATE_SUB

DATEDIFF

DAY

DAYNAME

DAYOFMONTH

DAYOFWEEK

DAYOFYEAR

EXTRACT

FROM_DAYS

FROM_UNIXTIME

GET_FORMAT

HOUR

LAST_DAY

LOCALTIME

LOCALTIMESTAMP

MAKEDATE

MAKETIME

MICROSECOND

MINUTE

MONTH

MONTHNAME

NOW

PERIOD_ADD

PERIOD_DIFF

QUARTER

SEC_TO_TIME

SECOND

STR_TO_DATE

SUBDATE

SUBTIME

SYSDATE

TIME

TIMEDIFF

TIMESTAMP

TIMESTAMPDIFF

TIMESTAMPADD

TIME_FORMAT

TIME_TO_SEC

TO_DAYS

UNIX_TIMESTAMP

UTC_DATE

UTC_TIME

UTC_TIMESTAMP

WEEK

WEEKDAY

WEEKOFYEAR

YEAR

YEARWEEK


Mathematical and Aggregate Functions

ABS

ACOS

ASIN

ATAN

ATAN2

AVG

BIT_AND

BIT_OR

BIT_XOR

CEIL

CEILING

COS

COT

COUNT

CRC32

DEGREES

EXP

FLOOR

FORMAT

GREATEST

GROUP_CONCAT

LEAST

LN

LOG

LOG2

LOG10

MAX

MIN

MOD

PI

POW

POWER

RADIANS

RAND

ROUND

SIGN

SIN

SQRT

STD

STDDEV

SUM

TAN

TRUNCATE

VARIANCE


Flow Control Functions

CASE

IF

IFNULL

NULLIF


Command-Line Utilities

comp_err

isamchk

make_binary_distribution

msql2mysql

my_print_defaults

myisamchk

myisamlog

myisampack

mysqlaccess

mysqladmin

mysqlbinlog

mysqlbug

mysqlcheck

mysqldump

mysqldumpslow

mysqlhotcopy

mysqlimport

mysqlshow

perror


Perl API - using functions and methods built into the Perl DBI with MySQL

available_drivers

begin_work

bind_col

bind_columns

bind_param

bind_param_array

bind_param_inout

can

clone

column_info

commit

connect

connect_cached

data_sources

disconnect

do

dump_results

err

errstr

execute

execute_array

execute_for_fetch

fetch

fetchall_arrayref

fetchall_hashref

fetchrow_array

fetchrow_arrayref

fetchrow_hashref

finish

foreign_key_info

func

get_info

installed_versions


last_insert_id

looks_like_number

neat

neat_list

parse_dsn

parse_trace_flag

parse_trace_flags

ping

prepare

prepare_cached

primary_key

primary_key_info

quote

quote_identifier

rollback

rows

selectall_arrayref

selectall_hashref

selectcol_arrayref

selectrow_array

selectrow_arrayref

selectrow_hashref

set_err

state

table_info

table_info_all

tables

trace

trace_msg

type_info

type_info_all

Attributes for Handles


PHP API - using functions built into PHP with MySQL

mysql_affected_rows

mysql_change_user

mysql_client_encoding

mysql_close

mysql_connect

mysql_create_db

mysql_data_seek

mysql_db_name

mysql_db_query

mysql_drop_db

mysql_errno

mysql_error

mysql_escape_string

mysql_fetch_array

mysql_fetch_assoc

mysql_fetch_field

mysql_fetch_lengths

mysql_fetch_object

mysql_fetch_row

mysql_field_flags

mysql_field_len

mysql_field_name

mysql_field_seek

mysql_field_table

mysql_field_type

mysql_free_result

mysql_get_client_info

mysql_get_host_info

mysql_get_proto_info

mysql_get_server_info

mysql_info

mysql_insert_id

mysql_list_dbs

mysql_list_fields

mysql_list_processes

mysql_list_tables

mysql_num_fields

mysql_num_rows

mysql_pconnect

mysql_ping

mysql_query

mysql_real_escape_string

mysql_result

mysql_select_db

mysql_stat

mysql_tablename

mysql_thread_id

mysql_unbuffered_query


--
map{ map{tr|10|# |;print} split//,sprintf"%.8b\n",$_}
unpack'C*',unpack'u*',"5`#8<3'X`'#8^-@`<-CPP`#8V/C8`"

20090427

20090420

ഹോന്ഗ് കൊണ്ഗ് സ്ക്യ്ലിനെ


--
map{ map{tr|10|# |;print} split//,sprintf"%.8b\n",$_}
unpack'C*',unpack'u*',"5`#8<3'X`'#8^-@`<-CPP`#8V/C8`"

20090416

custombemerkung

Schweizer Bürger benötigen für die Einreise einen Reisepass der mindestens 6 Monate über das Rückreisedatum hinaus gültig sein muss. Das kostenlose Touristenvisum ist 30 Tage gültig und wird bei Ankunft erteilt. Zurzeit bestehen keine Impfvorschriften für die Einreise auf die Malediven. BUCHUNG VON: Expetour Mäder-Reisen, Bahnhofstrasse 3, 3860 Meiringen/BE
--
map{ map{tr|10|# |;print} split//,sprintf"%.8b\n",$_}
unpack'C*',unpack'u*',"5`#8<3'X`'#8^-@`<-CPP`#8V/C8`"

20090414

sfc /scannow reset sourcepath location to take account of \i386

<strong><span class="style17" style="font-size: medium; color: rgb(0, 128, 0); ">Other Problems with scannow sfc...</span></strong>
<br><strong>#1&nbsp;</strong><br><br>Has the CD Drive's drive letter changed (perhaps by the addition of another hard drive, partition, or removable drive) since Windows XP was first installed? If so, simply edit the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\<br>CurrentVersion\Setup\SourcePath to reflect the changed drive letter.&nbsp;<br><br>After you restart the computer, WFP and sfc /scannow uses the new source path instead of prompting for the Windows XP installation CD-ROM<br><br><strong>#2</strong>&nbsp;<br><br>Has the registry key: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\<br>CurrentVersion\Setup\SourcePath got an incorrect entry? The SourcePath entry does NOT include the path location till the I386 folder. It completes one folder ahead to reach the I386 folder.&nbsp;<br><br>Example:<br><br>If the I386 directory is at C:\I386, the SourcePath value would be C:\<br><br><strong>#3</strong><br><br>If the problem persists and you have the correct path for your I386 folder then the I386 folder is corrupted. To solve this problem copy I386 folder from the CD-ROM to your system restart the system and then<br>perform sfc /scannow again.<br>

20090412


http://i44.tinypic.com/wmmd4x.jpg
--
map{ map{tr|10|# |;print} split//,sprintf"%.8b\n",$_}
unpack'C*',unpack'u*',"5`#8<3'X`'#8^-@`<-CPP`#8V/C8`"

http://i44.tinypic.com/wmmd4x.jpg
--
map{ map{tr|10|# |;print} split//,sprintf"%.8b\n",$_}
unpack'C*',unpack'u*',"5`#8<3'X`'#8^-@`<-CPP`#8V/C8`"

20090409

Hypertext Transfer Protocol -- HTTP/1.൧ RFC 2616 Fielding, et al. ര്‍ത്ഫം ര്ട്ര്ഫ്ക് വുല്ലത് 10 Status Code ടെഫിനിറേന്‍സ്(abridged ;)

RFC 2616 Hypertext Transfer Protocol HTTP/1.1
10 Status Code Definitions

10.1 Informational 1xx
10.1.1 100 Continue
10.1.2 101 Switching Protocols
10.2 Successful 2xx
10.2.1 200 OK
10.2.2 201 Created
10.2.3 202 Accepted
10.2.4 203 Non-Authoritative Information
10.2.5 204 No Content
10.2.6 205 Reset Content
10.2.7 206 Partial Content
10.3 Redirection 3xx
10.3.1 300 Multiple Choices
10.3.2 301 Moved Permanently
10.3.3 302 Found
10.3.4 303 See Other
10.3.5 304 Not Modified
10.3.6 305 Use Proxy
10.3.7 306 (Unused)
10.3.8 307 Temporary Redirect
10.4 Client Error 4xx
10.4.1 400 Bad Request
10.4.2 401 Unauthorized
10.4.3 402 Payment Required ( This code is reserved for future use. )
10.4.4 403 Forbidden
10.4.5 404 Not Found
10.4.6 405 Method Not Allowed
10.4.7 406 Not Acceptable
10.4.8 407 Proxy Authentication Required
10.4.9 408 Request Timeout
10.4.10 409 Conflict
10.4.11 410 Gone
10.4.12 411 Length Required
10.4.13 412 Precondition Failed
10.4.14 413 Request Entity Too Large
10.4.15 414 Request-URI Too Long
10.4.16 415 Unsupported Media Type
10.4.17 416 Requested Range Not Satisfiable
10.4.18 417 Expectation Failed
10.5 Server Error 5xx
10.5.1 500 Internal Server Error
10.5.2 501 Not Implemented
10.5.3 502 Bad Gateway
10.5.4 503 Service Unavailable
10.5.5 504 Gateway Timeout
10.5.6 505 HTTP Version Not Supported



3.1 HTTP Version
HTTP-Version = "HTTP" "/" 1*DIGIT "." 1*DIGIT
Note that the major and minor numbers MUST be treated as separate integers and that each MAY be incremented higher than a single digit. Thus, HTTP/2.4 < HTTP/2.13 < HTTP/12.3. Leading zeros MUST be ignored by recipients and MUST NOT be sent.
Applications SHOULD use an HTTP-Version of "HTTP/1.1" in their messages, and MUST do so for any message that is not compatible with HTTP/1.0. (when to send HTTP-Version: see RFC 2145 [36].)

3.2 Uniform Resource Identifiers
WWW addresses, Universal Document Identifiers, Universal Resource Identifiers, Uniform Resource Locators (URL) and Names (URN).

3.2.1 General Syntax
URIs in HTTP can be represented in absolute form or relative to some known base URI. Absolute URIs always begin with a scheme name followed by a colon. (see RFC 2396 "(URI): Generic Syntax and Semantics." This specification adopts the definitions of "URI-reference", "absoluteURI", "relativeURI", "port", "host","abs_path", "rel_path", and "authority" from that specification.

Servers MUST be able to handle the URI of any resource they serve, and SHOULD be able to handle URIs of unbounded length if they provide GET-based forms that could generate such URIs. A server SHOULD return 414 (Request-URI Too Long) status if a URI is longer than the server can handle (see section 10.4.15).
Note: Servers ought to be cautious about depending on URI lengths
above 255 bytes, because some older client or proxy
implementations might not properly support these lengths.

3.2.2 http URL
The "http" scheme is used to locate network resources via the HTTP protocol. This section defines the scheme-specific syntax and semantics for http URLs.

http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]

If the port is empty or not given, port 80 is assumed. The use of IP addresses in URLs SHOULD be avoided whenever possible (see RFC 1900). If a proxy receives a host name which is not a fully qualified domain name, it MAY add its domain to the host name it received. If a proxy receives a fully qualified domain name, the proxy MUST NOT change the host name.

3.2.3 URI Comparison
When comparing two URIs to decide if they match or not, a client SHOULD use a case-sensitive octet-by-octet comparison of the entire URIs, with these exceptions:
- A port that is empty or not given is equivalent to the default
port for that URI-reference;
- Comparisons of host names MUST be case-insensitive;
- Comparisons of scheme names MUST be case-insensitive;
- An empty abs_path is equivalent to an abs_path of "/".
Characters other than those in the "reserved" and "unsafe" sets (see RFC 2396) are equivalent to their ""%" HEX HEX" encoding.
http://abc.com:80/~smith/home.html == http://ABC.com/%7Esmith/home.html == http://ABC.com:/%7esmith/home.html

3.3 Date/Time Formats
Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123
All HTTP date/time stamps MUST be represented in Greenwich Mean Time (GMT), without exception.

3.3.2 Delta Seconds
Some HTTP header fields allow a time value to be specified as an integer number of seconds, represented in decimal, after the time that the message was received.
delta-seconds = 1*DIGIT

3.4 Character Sets
HTTP uses the same definition of the term "character set" as that described for MIME:

















10.3.3 302 Found
The requested resource resides temporarily under a different URI. Since the redirection might be altered on occasion, the client SHOULD continue to use the Request-URI for future requests. This response is only cacheable if indicated by a Cache-Control or Expires header field.

The temporary URI SHOULD be given by the Location field in the response. Unless the request method was HEAD, the entity of the response SHOULD contain a short hypertext note with a hyperlink to the new URI(s).

If the 302 status code is received in response to a request other than GET or HEAD, the user agent MUST NOT automatically redirect the request unless it can be confirmed by the user, since this might change the conditions under which the request was issued.

Note: RFC 1945 and RFC 2068 specify that the client is not allowed
to change the method on the redirected request. However, most
existing user agent implementations treat 302 as if it were a 303
response, performing a GET on the Location field-value regardless
of the original request method. The status codes 303 and 307 have
been added for servers that wish to make unambiguously clear which
kind of reaction is expected of the client.


















--
map{ map{tr|10|# |;print} split//,sprintf"%.8b\n",$_}
unpack'C*',unpack'u*',"5`#8<3'X`'#8^-@`<-CPP`#8V/C8`"

20090408

ലെക്കെര്‍ വിജ്ഫ് അന്ടെര്സ് ;)klekker wijf anders ;)

rbawaskar at gmail dot com
08-Mar-2009 06:17
Found this script after much despair, should be useful to lot of people.
To submit a form using POST method through PHP, just add the data to be posted as header. This essentially saves one extra html page sent to the browser when user has to be redirected. Mostly found this technique useful for redirecting to payment gateways.

$host = "www.example.com";
$path = "/path/to/script.php";
$data = "data1=value1&data2=value2";
$data = urlencode($data);

header("POST $path HTTP/1.1\r\n" );
header("Host: $host\r\n" );
header("Content-type: application/x-www-form-urlencoded\r\n" );
header("Content-length: " . strlen($data) . "\r\n" );
header("Connection: close\r\n\r\n" );
header($data);
?>

--
map{ map{tr|10|# |;print} split//,sprintf"%.8b\n",$_}
unpack'C*',unpack'u*',"5`#8<3'X`'#8^-@`<-CPP`#8V/C8`"

#!/bin/sh
#remove the line below the config (marked remove) after editing to make it work ;)

#set -o xtrace
CURDIR="$(pwd)"
FROMDIR="/Users/drkrimson/Work/inhouse/tantekaat"
TODIR="/Users/drkrimson/Sites/kaat.tys/"
SVNLOC="file:///Users/drkrimson/Documents/SVNRoot/trunk/inhouse/tantekaat/WebRoot"
TONEWDIR="public_html"
COMMITMSG="exporting ${FROMDIR} to ${TODIR} on ${TODAY}"

# remove
exit

cd "$FROMDIR"
svn add *{,/*{,/*{,/*{,/*}}}} 2>/dev/null
CMTEST="$(svn commit -m "${COMMITMSG}" | grep -i revision 2>&1)"
if [[ -n "$CMTEST" ]]; then
echo "$CMTEST"
cd "$TODIR"
rm -rf "${TONEWDIR}_previous"
mv -f "$TONEWDIR" "${TONEWDIR}_previous"
SVNE=$(svn export --force "${SVNLOC}" "${TONEWDIR}" | grep -i revision 2>&1)
echo "$SVNE"
else
echo "Couldn't commit!"
echo "$CMTEST"
fi
if [[ -f ${CURDIR}${0}.after.sh ]]; then
${CURDIR}${0}.after.sh
fi
cd $CURDIR

--
map{ map{tr|10|# |;print} split//,sprintf"%.8b\n",$_}
unpack'C*',unpack'u*',"5`#8<3'X`'#8^-@`<-CPP`#8V/C8`"

20090407

mssql kinky inner join

USE AdventureWorks;
GO
SELECT DISTINCT p.ProductID, p.Name, p.ListPrice, sd.UnitPrice AS 'Selling Price'
FROM Sales.SalesOrderDetail AS sd
JOIN Production.Product AS p
ON sd.ProductID = p.ProductID AND sd.UnitPrice < p.ListPrice
WHERE p.ProductID = 718;
GO
--
map{ map{tr|10|# |;print} split//,sprintf"%.8b\n",$_}
unpack'C*',unpack'u*',"5`#8<3'X`'#8^-@`<-CPP`#8V/C8`"

toplinks

<a href="http://www2.odysseus.be/agent/ae/home" class="mainlevel" style="color: rgb(255, 255, 255); text-decoration: underline; font-family: tahoma, Arial, Helvetica, sans-serif; font-size: 11px; font-weight: normal; font-variant: small-caps; letter-spacing: 0px; padding-left: 5px; ">Home</a><span class="mainlevel">&nbsp;|&nbsp;</span><a href="http://www2.odysseus.be/agent/ae/odysseusvacations/" class="mainlevel" id="active_menu" style="color: rgb(177, 187, 199); text-decoration: none; font-family: tahoma, Arial, Helvetica, sans-serif; font-size: 11px; font-weight: normal; font-variant: small-caps; letter-spacing: 0px; padding-left: 5px; ">Odysseus Vacations</a><span class="mainlevel">&nbsp;|&nbsp;</span><a href="http://www.parfums-travel.be/index.asp?lang=en" target="_blank" class="mainlevel" style="color: rgb(177, 187, 199); text-decoration: none; font-family: tahoma, Arial, Helvetica, sans-serif; font-size: 11px; font-weight: normal; font-variant: small-caps; letter-spacing: 0px; padding-left: 5px; ">Parfums travel</a><span class="mainlevel">&nbsp;|&nbsp;</span><a href="http://www2.odysseus.be/agent/ae/downloads" class="mainlevel" style="color: rgb(177, 187, 199); text-decoration: none; font-family: tahoma, Arial, Helvetica, sans-serif; font-size: 11px; font-weight: normal; font-variant: small-caps; letter-spacing: 0px; padding-left: 5px; ">Downloads</a><span class="mainlevel">&nbsp;|&nbsp;</span><a href="http://www2.odysseus.be/agent/ae/aboutody" class="mainlevel" style="color: rgb(177, 187, 199); text-decoration: none; font-family: tahoma, Arial, Helvetica, sans-serif; font-size: 11px; font-weight: normal; font-variant: small-caps; letter-spacing: 0px; padding-left: 5px; ">About Odysseus</a><br class="khtml-block-placeholder">

പ്രോടോടിപേ ബഗ്

jrochkind
September 5th, 2008 @ 08:36 PM
Okay, I have a patch that seems to work. I don't entirely understand what I'm doing, so use with caution. And sorry I don't have a clean prototype to actually make a real patch (or know how to, for that matter).

But in Prototype 1.6.0.2, there is a wrapper for viewportOffset for IE, that has a bug in it.

Look for the line:

var offsetParent = element.getOffsetParent();

Change to:

var offsetParent = (element.parent) ? element.getOffsetParent() : 0;

Seems to do the trick for me.

Seems like it's actually a prototype bug, not a scriptaculous one? But not really sure.

--
map{ map{tr|10|# |;print} split//,sprintf"%.8b\n",$_}
unpack'C*',unpack'u*',"5`#8<3'X`'#8^-@`<-CPP`#8V/C8`"

20090401

സുര്രെന്‍സി symbols

#===========================================================================
# ISO 4217 and common world currency symbols
#===========================================================================
# code => 0 1 2 3 4 5 6 7 8
# name frac_len thou_sep dec_sep space_sep utf_sym htm_sym com_sym pre
%currency = (
AED => ["UAE Dirham",2,",","."," ",$EMPTY,$EMPTY,"Dhs.",1],
AFA => ["Afghani",0,$EMPTY,$EMPTY,"\x{060B}","<B;",,$EMPTY,$EMPTY],
ALL => ["Lek",2,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
AMD => ["Armenian Dram",2,",",".","",$EMPTY,$EMPTY,"AMD",0],
ANG => ["Antillian Guilder",2,".",","," ","\x{0192}","ƒ","NAf.",1],
AON => ["New Kwanza",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
ARS => ["Argentine Peso",2,".",",","","\x{20B1}","₱","\$",1],
ATS => ["Schilling",2,".",","," ",$EMPTY,$EMPTY,"öS",1],
AUD => ["Australian Dollar",2," ",".","","\x{0024}","$","\$",1],
AWG => ["Aruban Guilder",2,",","."," ","\x{0192}","ƒ","AWG",1],
AZN => ["Azerbaijanian Manat",2,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,"m",$EMPTY],
BAM => ["Convertible Marks",2,",",".","",$EMPTY,$EMPTY,"AZM",0],
BBD => ["Barbados Dollar",2,$EMPTY,$EMPTY,"","\x{0024}","$",$EMPTY,$EMPTY],
BDT => ["Taka",2,",","."," ",$EMPTY,$EMPTY,"Bt.",1],
BEF => ["Belgian Franc",0,".",""," ","\x{20A3}","₣","BEF",1],
BGL => ["Lev",2," ",","," ",$EMPTY,$EMPTY,"lv",0],
BHD => ["Bahraini Dinar",3,",","."," ",$EMPTY,$EMPTY,"BD",1],
BIF => ["Burundi Franc",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
BMD => ["Bermudian Dollar",2,",",".","","\x{0024}","$","\$",1],
BND => ["Brunei Dollar",2,",",".","","\x{0024}","$","\$",1],
BOB => ["Bolivian Boliviano",2,",",".","",$EMPTY,$EMPTY,"Bs",1],
BRL => ["Brazilian Real",2,".",","," ","\x{0052}\x{0024}","R\$","R\$",1],
BSD => ["Bahamian Dollar",2,",",".","","\x{0024}","$","\$",1],
BTN => ["Bhutan Ngultrum",2,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
BWP => ["Pula",2,",",".","",$EMPTY,$EMPTY,"P",1],
BYR => ["Belarussian Ruble",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
BZD => ["Belize Dollar",2,",",".","","\x{0024}","$","\$",1],
CAD => ["Canadian Dollar",2,",",".","","\x{0024}","$","\$",1],
CDF => ["Franc Congolais",2,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
CHF => ["Swiss Franc",2,"'","."," ",$EMPTY,$EMPTY,"SFr.",1],
CLP => ["Chilean Peso",0,".","","","\x{20B1}","₱","\$",1],
CNY => ["Yuan Renminbi",2,",",".","","\x{5713}","圓","Y",1],
COP => ["Colombian Peso",2,".",",","","\x{20B1}","₱","\$",1],
CRC => ["Costa Rican Colon",2,".",","," ","\x{20A1}","₡","\x{20A1}",1],
CUP => ["Cuban Peso",2,",","."," ","\x{20B1}","₱","\$",1],
CVE => ["Cape Verde Escudo",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
CYP => ["Cyprus Pound",2,".",",","","\x{00A3}","£","\x{00A3}",1],
CZK => ["Czech Koruna",2,".",","," ",$EMPTY,$EMPTY,"Kc",0],
DEM => ["Deutsche Mark",2,".",",","",$EMPTY,$EMPTY,"DM",0],
DJF => ["Djibouti Franc",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
DKK => ["Danish Krone",2,".",",","",$EMPTY,$EMPTY,"kr.",1],
DOP => ["Dominican Peso",2,",","."," ","\x{20B1}","₱","\$",1],
DZD => ["Algerian Dinar",2,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
ECS => ["Sucre",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
EEK => ["Kroon",2," ",","," ",$EMPTY,$EMPTY,"EEK",0],
EGP => ["Egyptian Pound",2,",","."," ","\x{00A3}","£","L.E.",1],
ERN => ["Nakfa",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
ESP => ["Spanish Peseta",0,".",""," ","\x{20A7}","₧","Ptas",0],
ETB => ["Ethiopian Birr",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
EUR => ["Euro",2,".",",","","\x{20AC}","€","EUR",1],
FIM => ["Markka",2," ",","," ",$EMPTY,$EMPTY,"mk",0],
FJD => ["Fiji Dollar",0,$EMPTY,$EMPTY,"","\x{0024}","$",$EMPTY,$EMPTY],
FKP => ["Pound",0,$EMPTY,$EMPTY,"","\x{00A3}","£",$EMPTY,$EMPTY],
FRF => ["French Franc",2," ",","," ","\x{20A3}","₣","FRF",0],
GBP => ["Pound Sterling",2,",",".","","\x{00A3}","£","£",1],
GEL => ["Lari",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
GHS => ["Cedi",2,",",".","","\x{20B5}","B5;","\x{20B5}",1],
GIP => ["Gibraltar Pound",2,",",".","","\x{00A3}","£","£",1],
GMD => ["Dalasi",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
GNF => ["Guinea Franc",$EMPTY,$EMPTY,$EMPTY,$EMPTY,$EMPTY,$EMPTY,$EMPTY,$EMPTY],
GRD => ["Drachma",2,".",","," ","\x{20AF}","₯","GRD",0],
GTQ => ["Quetzal",2,",",".","",$EMPTY,$EMPTY,"Q.",1],
GWP => ["Guinea-Bissau Peso",$EMPTY,$EMPTY,$EMPTY,$EMPTY,$EMPTY,$EMPTY,$EMPTY,$EMPTY],
GYD => ["Guyana Dollar",0,$EMPTY,$EMPTY,"","\x{0024}","$",$EMPTY,$EMPTY],
HKD => ["Hong Kong Dollar",2,",",".","","\x{0024}","$","HK\$",1],
HNL => ["Lempira",2,",","."," ",$EMPTY,$EMPTY,"L",1],
HRK => ["Kuna",2,".",","," ",$EMPTY,$EMPTY,"kn",0],
HTG => ["Gourde",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
HUF => ["Forint",0,".",""," ",$EMPTY,$EMPTY,"Ft",0],
IDR => ["Rupiah",0,".","","",$EMPTY,$EMPTY,"Rp.",1],
IEP => ["Irish Pound",2,",",".","","\x{00A3}","£","£",1],
ILS => ["New Israeli Sheqel",2,",","."," ","\x{20AA}","₪","NIS",0],
INR => ["Indian Rupee",2,",",".","","\x{20A8}","₨","Rs.",1],
IQD => ["Iraqi Dinar",3,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
IRR => ["Iranian Rial",2,",","."," ","\x{FDFC}","﷼","Rls",1],
ISK => ["Iceland Krona",2,".",","," ",$EMPTY,$EMPTY,"kr",0],
ITL => ["Italian Lira",0,".",""," ","\x{20A4}","₤","L.",1],
JMD => ["Jamaican Dollar",2,",",".","","\x{0024}","$","\$",1],
JOD => ["Jordanian Dinar",3,",","."," ",$EMPTY,$EMPTY,"JD",1],
JPY => ["Yen",0,",","","","\x{00A5}","¥","¥",1],
KES => ["Kenyan Shilling",2,",",".","",$EMPTY,$EMPTY,"Kshs.",1],
KGS => ["Som",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
KHR => ["Riel",2,$EMPTY,$EMPTY,"","\x{17DB}","៛",$EMPTY,$EMPTY],
KMF => ["Comoro Franc",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
KPW => ["North Korean Won",0,$EMPTY,$EMPTY,"","\x{20A9}","₩",$EMPTY,$EMPTY],
KRW => ["Won",0,",","","","\x{20A9}","₩","\\",1],
KWD => ["Kuwaiti Dinar",3,",","."," ",$EMPTY,$EMPTY,"KD",1],
KYD => ["Cayman Islands Dollar",2,",",".","","\x{0024}","$","\$",1],
KZT => ["Tenge",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
LAK => ["Kip",0,$EMPTY,$EMPTY,"","\x{20AD}","₭",$EMPTY,$EMPTY],
LBP => ["Lebanese Pound",0," ","","","\x{00A3}","£","L.L.",0],
LKR => ["Sri Lanka Rupee",0,$EMPTY,$EMPTY,"","\x{0BF9}","௹",$EMPTY,$EMPTY],
LRD => ["Liberian Dollar",0,$EMPTY,$EMPTY,"","\x{0024}","$",$EMPTY,$EMPTY],
LSL => ["Lesotho Maloti",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
LTL => ["Lithuanian Litas",2," ",","," ",$EMPTY,$EMPTY,"Lt",0],
LUF => ["Luxembourg Franc",0,"'",""," ","\x{20A3}","₣","F",0],
LVL => ["Latvian Lats",2,",","."," ",$EMPTY,$EMPTY,"Ls",1],
LYD => ["Libyan Dinar",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
MAD => ["Moroccan Dirham",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
MDL => ["Moldovan Leu",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
MGF => ["Malagasy Franc",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
MKD => ["Denar",2,",","."," ",$EMPTY,$EMPTY,"MKD",0],
MMK => ["Kyat",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
MNT => ["Tugrik",0,$EMPTY,$EMPTY,"","\x{20AE}","₮",$EMPTY,$EMPTY],
MOP => ["Pataca",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
MRO => ["Ouguiya",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
MTL => ["Maltese Lira",2,",",".","","\x{20A4}","₤","Lm",1],
MUR => ["Mauritius Rupee",0,",","","","\x{20A8}","₨","Rs",1],
MVR => ["Rufiyaa",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
MWK => ["Kwacha",2,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
MXN => ["Mexican Peso",2,",","."," ","\x{0024}","$","\$",1],
MYR => ["Malaysian Ringgit",2,",",".","",$EMPTY,$EMPTY,"RM",1],
MZN => ["Metical",2,".",","," ",$EMPTY,$EMPTY,"Mt",0],
NAD => ["Namibian Dollar",0,$EMPTY,$EMPTY,"","\x{0024}","$",$EMPTY,$EMPTY],
NGN => ["Naira",0,$EMPTY,$EMPTY,"","\x{20A6}","₦",$EMPTY,$EMPTY],
NIO => ["Cordoba Oro",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
NLG => ["Netherlands Guilder",2,".",","," ","\x{0192}","ƒ","f",1],
NOK => ["Norwegian Krone",2,".",","," ","kr","kr","kr",1],
NPR => ["Nepalese Rupee",2,",","."," ","\x{20A8}","₨","Rs.",1],
NZD => ["New Zealand Dollar",2,",",".","","\x{0024}","$","\$",1],
OMR => ["Rial Omani",3,",","."," ","\x{FDFC}","﷼","RO",1],
PAB => ["Balboa",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
PEN => ["Nuevo Sol",2,",","."," ","S/.","S/.","S/.",1],
PGK => ["Kina",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
PHP => ["Philippine Peso",2,",",".","","\x{20B1}","₱","PHP",1],
PKR => ["Pakistan Rupee",2,",",".","","\x{20A8}","₨","Rs.",1],
PLN => ["Zloty",2," ",","," ",$EMPTY,$EMPTY,"zl",0],
PTE => ["Portuguese Escudo",0,".",""," ",$EMPTY,$EMPTY,"Esc",0],
PYG => ["Guarani",0,$EMPTY,$EMPTY,"","\x{20B2}","B2;","Gs.",$EMPTY],
QAR => ["Qatari Rial",0,$EMPTY,$EMPTY,"","\x{FDFC}","﷼",$EMPTY,$EMPTY],
RON => ["Leu",2,".",","," ",$EMPTY,$EMPTY,"lei",0],
RSD => ["Serbian Dinar",2,$EMPTY,$EMPTY,$EMPTY,$EMPTY,$EMPTY,"din",0],
RUB => ["Russian Ruble",2,".",",",$EMPTY,"\x{0440}\x{0443}\x{0431}","ƸƻƯ","RUB",1],
RWF => ["Rwanda Franc",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
SAC => ["S. African Rand Commerc.",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
SAR => ["Saudi Riyal",2,",","."," ","\x{FDFC}","﷼","SR",1],
SBD => ["Solomon Islands Dollar",0,$EMPTY,$EMPTY,"","\x{0024}","$",$EMPTY,$EMPTY],
SCR => ["Seychelles Rupee",0,$EMPTY,$EMPTY,"","\x{20A8}","₨",$EMPTY,$EMPTY],
SDG => ["Sudanese Dinar",$EMPTY,$EMPTY,$EMPTY,$EMPTY,$EMPTY,$EMPTY,"LSd",$EMPTY],
SDP => ["Sudanese Pound",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
SEK => ["Swedish Krona",2," ",","," ",$EMPTY,$EMPTY,"kr",0],
SGD => ["Singapore Dollar",2,",",".","","\x{0024}","$","\$",1],
SHP => ["St Helena Pound",0,$EMPTY,$EMPTY,"","\x{00A3}","£",$EMPTY,$EMPTY],
SIT => ["Tolar",2,".",","," ",$EMPTY,$EMPTY,"SIT",0],
SKK => ["Slovak Koruna",2," ",","," ",$EMPTY,$EMPTY,"Sk",0],
SLL => ["Leone",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
SOS => ["Somali Shilling",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
SRG => ["Surinam Guilder",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
STD => ["Dobra",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
SVC => ["El Salvador Colon",2,",",".","","\x{20A1}","₡","\x{20A1}",1],
SYP => ["Syrian Pound",0,$EMPTY,$EMPTY,"","\x{00A3}","£",$EMPTY,$EMPTY],
SZL => ["Lilangeni",2,"",".","",$EMPTY,$EMPTY,"E",1],
THB => ["Baht",2,",","."," ","\x{0E3F}","฿","Bt",0],
TJR => ["Tajik Ruble",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
TJS => ["Somoni",$EMPTY,$EMPTY,$EMPTY,$EMPTY,$EMPTY,$EMPTY,$EMPTY,$EMPTY],
TMM => ["Manat",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
TND => ["Tunisian Dinar",3,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
TOP => ["Pa'anga",2,",","."," ",$EMPTY,$EMPTY,"\$",1],
TPE => ["Timor Escudo",$EMPTY,$EMPTY,$EMPTY,$EMPTY,$EMPTY,$EMPTY,$EMPTY,$EMPTY],
TRL => ["Turkish Lira",0,",","","","\x{20A4}","₤","TL",0],
TTD => ["Trinidad and Tobago Dollar",0,$EMPTY,$EMPTY,"","\x{0024}","$",$EMPTY,$EMPTY],
TWD => ["New Taiwan Dollar",0,$EMPTY,$EMPTY,"","\x{0024}","$",$EMPTY,$EMPTY],
TZS => ["Tanzanian Shilling",2,",","."," ",$EMPTY,$EMPTY,"TZs",0],
UAH => ["Hryvnia",2," ",",","","\x{20B4}","₴",$EMPTY,0],
UGX => ["Uganda Shilling",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
USD => ["US Dollar",2,",",".","","\x{0024}","$","\$",1],
UYU => ["Peso Uruguayo",2,".",",","","\x{20B1}","₱","\$",1],
UZS => ["Uzbekistan Sum",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
VEF => ["Bolivar",2,".",","," ",$EMPTY,$EMPTY,"Bs.F",1],
VND => ["Dong",2,".",","," ","\x{20AB}","₫","Dong",0],
VUV => ["Vatu",0,",","","",$EMPTY,$EMPTY,"VT",0],
WST => ["Tala",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
XAF => ["CFA Franc BEAC",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
XCD => ["East Caribbean Dollar",2,",",".","","\x{0024}","$","\$",1],
XOF => ["CFA Franc BCEAO",$EMPTY,$EMPTY,$EMPTY,$EMPTY,$EMPTY,$EMPTY,$EMPTY,$EMPTY],
XPF => ["CFP Franc",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
YER => ["Yemeni Rial",0,$EMPTY,$EMPTY,"","\x{FDFC}","﷼",$EMPTY,$EMPTY],
YUN => ["New Dinar",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
ZAR => ["Rand",2," ","."," ","\x{0052}","R","R",1],
ZMK => ["Kwacha",0,$EMPTY,$EMPTY,"",$EMPTY,$EMPTY,$EMPTY,$EMPTY],
ZRN => ["New Zaire",$EMPTY,$EMPTY,$EMPTY,$EMPTY,$EMPTY,$EMPTY,$EMPTY,$EMPTY],
ZWD => ["Zimbabwe Dollar ",2," ",".","","\x{0024}","$","Z\$",1],
);


1;

__END__
--
map{ map{tr|10|# |;print} split//,sprintf"%.8b\n",$_}
unpack'C*',unpack'u*',"5`#8<3'X`'#8^-@`<-CPP`#8V/C8`"

20090330

medisch paspoort

Maar als je gaat reizen en je moet dingen mee hebben op docters voorschrift, dan kun je gebruik maken van een Medish Paspoort. Bel je huisarts hiervoor op. Dit is geldig in alle landen en daar staat alle relevante informatie op, ook voor eventuele herhalings recepten voor in het buitenland.&nbsp;<br class="khtml-block-placeholder">

op doktersadvies

Wanneer u op reis gaat en u medicijnen gebruikt die onder de Opiumwet vallen, zoals sterke pijnstillers, dan bent u verplicht om een door uw arts getekende verklaring met u mee te nemen die is gewaarmerkt door de Inspectie voor de Gezondheidszorg.<br><br>Als je binnen de zogenoemde Schengenlanden reist, heb je een 'Schengenverklaring' nodig om het bezit van medicinale cannabis (of andere medicijnen die onder de opiumwet vallen) legaal te maken.<br><br><b>Schengenverklaring</b><br>Gaat u naar een Europees land dat hoort bij de zogenaamde Schengenlanden (België, Denemarken, Duitsland, Finland, Frankrijk, Griekenland, Italië, IJsland, Luxemburg, Noorwegen, Oostenrijk, Portugal, Spanje en Zweden) dan neemt u een Schengenverklaring mee op reis. U dient deze desgevraagd te kunnen tonen bij controles door douane en politie.<br><br><b>Toestemming van ambassade</b><br>Gaat u naar een land dat niet tot de Schengenlanden behoort, neem dan contact op met uw arts en met de ambassade of het consulaat van het land waar u naar toe reist. Uw arts zal u een verklaring verstrekken. Daarna moet u toestemming vragen aan de ambassade of het consulaat om de medicijnen mee te nemen (u hebt de verklaring van de arts hierbij nodig).<br><br>Wilt u weten welke medicijnen onder de Opiumwet vallen? Uw apotheek kan uw vraag beantwoorden.&nbsp;<br>

സ്ക്യ്പേ ചട്ബോറ്റ് (സ്ടുപിദ്)


--
map{ map{tr|10|# |;print} split//,sprintf"%.8b\n",$_}
unpack'C*',unpack'u*',"5`#8<3'X`'#8^-@`<-CPP`#8V/C8`"

20090329

Steps:<br>[1]Trace your techdeck and then cut our a template of your fingerboard in index cards or make your own by gaging the size of your fingertips.<br>[2]Cut out that template, and trace 6 of the same templates on another piece of index card.Cut it out.<br>[3] USE ONLY A BRUSH, apply the glue and glue on 6 of the plies.<br>[4]Cut a sheet of paper big enough to wrap the half completed board. wrap it up.<br>[5]melt ice to get cold water<br>[6]Put the water in a spray can and turn on the iron to maximum heat. Spray the paper wet and not DAMP and iron it over for 10 minutes. Re spray after 5 irons.<br>[7]You will notice that by then your fingerboard is really hard and tough. apply tape and remove excess<br>[8]clamp the deck with 4 ice cream sticks and book binding clamps.To set for 2 hours or more.<br>[9]Cut another sheet of paper to wrap the deck and then repeat the process of spraying the water and then re ironing for about 5 minutes.<br>[10]Finally, shape your fingerboard by using the clamps and leaving it to set for the night.to make concave, fold the sides together and press it and clamp fr 2 mins and flatten to desired shape.<br>[11]Use a fat needle, poke the holes made for the decks and enlarge with kingpin or techdeck tool. otherwise drill with a 1/16 drill bit.<br><br>The DIY fingerboard pack will be on available soon and will contain 3 pieces of index cards, 1 piece of grip tape and 1 piece of foam tape. there will be 6 colours of foam tape to choose from, 1 type of griptape. some sandpaper will be provided free to use.&nbsp;<br><br>visit precisionfingersk8.tk to find out more<br class="khtml-block-placeholder">

20090326

64 bit

MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os &nbsp;-pipe -no-cpp-precomp" CCFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os &nbsp;-pipe" CXXFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os &nbsp;-pipe" LDFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -bind_at_load" ./configure --enable-shared<br class="khtml-block-placeholder">

osx config stubs

X-Bender:tmp drkrimson$ cd jpeg-6b/
X-Bender:jpeg-6b drkrimson$ cp /usr/share/libtool/config.
config.guess &nbsp;config.sub
X-Bender:jpeg-6b drkrimson$ cp /usr/share/libtool/config.* .X-Bender:jpeg-6b drkrimson$ ./configure --enable-shared

20090325

<pre style="background-color: rgb(250, 248, 240); color: rgb(17, 17, 34); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; overflow-x: auto; overflow-y: auto; margin-top: 4px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; font-family: Consolas, Monaco, 'Lucida Sans Typewriter', 'Courier New', mono-space; "><span class="comment" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 85); font-style: italic; "># man bash 2&gt;/dev/null | less -p 'BASH_SOURCE'</span>
<span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">[[</span> <span class="global" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(255, 139, 17); ">${</span><span class="constant" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 119, 255); ">BASH_VERSINFO</span><span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">[</span><span class="number" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(255, 153, 153); ">0</span><span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">]}</span> <span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">-</span><span class="ident" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 68); ">le</span> <span class="number" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(255, 153, 153); ">2</span> <span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">]]</span> <span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">&amp;&amp;</span> <span class="ident" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 68); ">echo</span> <span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">'</span><span class="string" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(153, 68, 68); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 238); background-position: initial initial; ">The BASH_SOURCE array variable is only available for Bash 3.0 and higher!</span><span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">'</span> <span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">&amp;&amp;</span> <span class="ident" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 68); ">exit</span> <span class="number" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(255, 153, 153); ">1</span>

<span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">[[</span> <span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">"</span><span class="string" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(153, 68, 68); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 238); background-position: initial initial; ">${BASH_SOURCE[0]}</span><span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">"</span> <span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">!=</span> <span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">"</span><span class="string" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(153, 68, 68); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 238); background-position: initial initial; ">${0}</span><span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">"</span> <span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">]]</span> <span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">&amp;&amp;</span> <span class="ident" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 68); ">echo</span> <span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">"</span><span class="string" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(153, 68, 68); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 238); background-position: initial initial; ">script ${BASH_SOURCE[0]} is running sourced ...</span><span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">"</span>



<span class="comment" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 85); font-style: italic; "># cf. Bash get self directory trick,</span>
<span class="comment" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 85); font-style: italic; "># http://stevemorin.blogspot.com/2007/10/bash-get-self-directory-trick.html</span>

<span class="ident" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 68); ">script_path</span><span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">="</span><span class="string" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(153, 68, 68); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 238); background-position: initial initial; ">$(cd $(/usr/bin/dirname </span><span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">"</span><span class="global" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(255, 139, 17); ">${</span><span class="constant" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 119, 255); ">BASH_SOURCE</span><span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">[</span><span class="number" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(255, 153, 153); ">0</span><span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">]}"</span><span class="string" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(153, 68, 68); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 238); background-position: initial initial; ">); pwd -P)/$(/usr/bin/basename </span><span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">"</span><span class="global" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(255, 139, 17); ">${</span><span class="constant" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 119, 255); ">BASH_SOURCE</span><span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">[</span><span class="number" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(255, 153, 153); ">0</span><span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">]}"</span><span class="string" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(153, 68, 68); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 238); background-position: initial initial; ">)</span><span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">"</span>

<span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">[[</span> <span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">!</span> <span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">-</span><span class="ident" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 68); ">f</span> <span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">"</span><span class="string" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(153, 68, 68); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 238); background-position: initial initial; ">$script_path</span><span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">"</span> <span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">]]</span> <span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">&amp;&amp;</span> <span class="ident" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 68); ">script_path</span><span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">="</span><span class="string" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(153, 68, 68); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 238); background-position: initial initial; ">$(cd $(/usr/bin/dirname </span><span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">"</span><span class="global" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(255, 139, 17); ">$0</span><span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">"</span><span class="string" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(153, 68, 68); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 238); background-position: initial initial; ">); pwd -P)/$(/usr/bin/basename </span><span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">"</span><span class="global" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(255, 139, 17); ">$0</span><span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">"</span><span class="string" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(153, 68, 68); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 238); background-position: initial initial; ">)</span><span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">"</span>

<span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">[[</span> <span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">!</span> <span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">-</span><span class="ident" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 68); ">f</span> <span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">"</span><span class="string" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(153, 68, 68); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 238); background-position: initial initial; ">$script_path</span><span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">"</span> <span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">]]</span> <span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">&amp;&amp;</span> <span class="ident" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 68); ">script_path</span><span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">="</span><span class="string" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(153, 68, 68); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 238); background-position: initial initial; "></span><span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">"</span> <span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">&amp;&amp;</span> <span class="ident" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 68); ">echo</span> <span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">'</span><span class="string" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(153, 68, 68); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 238); background-position: initial initial; ">No full path to running script found!</span><span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">'</span> <span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">&amp;&amp;</span> <span class="ident" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 68); ">exit</span> <span class="number" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(255, 153, 153); ">1</span>



<span class="comment" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 85); font-style: italic; "># full path to executing script's directory</span>
<span class="ident" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 68); ">script_dir</span><span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">="</span><span class="string" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(153, 68, 68); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 238); background-position: initial initial; ">${script_path%/*}</span><span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">"</span>
<span class="ident" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 68); ">echo</span> <span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">"</span><span class="string" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(153, 68, 68); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 238); background-position: initial initial; ">script_dir: ${script_dir}</span><span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">"</span>


<span class="comment" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 85); font-style: italic; "># full path to executing script</span>
<span class="ident" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 68); ">echo</span> <span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">"</span><span class="string" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(153, 68, 68); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 238); background-position: initial initial; ">script_path: ${script_path}</span><span class="punct" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(68, 68, 119); font-weight: bold; ">"</span>


<span class="ident" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 68); ">exit</span> <span class="number" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(255, 153, 153); ">0</span></pre>

&nbsp;sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dnbvolunteer.plist


etc/mach_init.d

joining a Leopard Machine to an active directory domain.

http://lists.apple.com/archives/Augd/2007/Nov/msg00033.html

1. &nbsp;Rename the AD domain to something else instead of .local
(.internal, or .edu, or .net or .org). If
2. &nbsp;Stop the daemon Bonjour from running on OSX Leopard. You can do
this with an application called iServeBox, which is a free open source
utility to manage daemons in OSX. You can get the application from
here: http://www.hanynet.com/iservebox/index.html
I turned off the Bonjour daemon. Then i proceeded with the following
steps to add the imac to the domain:


1. Go to the Directory Utility ‐&gt; /Applications/Utilities/
2. Click the Advanced Settings Button ‐&gt; Buttons should appear on the top
3. Click Services
4. Make sure you're authenticated to makes changes ‐&gt; click the lock and login
5. Double‐click the Active Directory
6. type in your domain in "Active Directory Domain" ‐&gt; ex.
(mydomain.com) watch out if your domain ends with .local opposed to
.com or .net, you need to disable bonjour if it ends with .local.
7. click bind
8. enter in username and password ‐&gt; just the username NOT
email@hidden or MYDOMAIN\User
9. Click ok.

&nbsp;ESC[=#;7h or &nbsp; &nbsp; &nbsp;Put screen in indicated mode where # is
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; ESC[=h or &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0 for 40 x 25 black &amp; white
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; ESC[=0h or &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1 for 40 x 25 color
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; ESC[?7h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2 for 80 x 25 b&amp;w
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3 for 80 x 25 color
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;4 for 320 x 200 color graphics
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;5 for 320 x 200 b &amp; w graphics
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;6 for 640 x 200 b &amp; w graphics
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;7 to wrap at end of line

&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; ESC[=#;7l or ESC[=l or &nbsp; Resets mode # set with above command
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; ESC[=0l or ESC[?7l

ansi escape hotkeys

Keyboard Reassignments:

&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; ESC[#;#;...p &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Keyboard reassignment. The first ASCII
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; or ESC["string"p &nbsp; &nbsp; &nbsp; code defines which code is to be
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; or ESC[#;"string";#; &nbsp; changed. The remaining codes define
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#;"string";#p &nbsp; &nbsp; &nbsp; what it is to be changed to.

&nbsp;&nbsp; E.g. Reassign the Q and q keys to the A and a keys (and vice versa).

&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; ESC [65;81p &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;A becomes Q
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; ESC [97;113p &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; a becomes q
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; ESC [81;65p &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Q becomes A
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; ESC [113;97p &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; q becomes a

&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; E.g. Reassign the F10 key to a DIR command.

&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; ESC [0;68;"dir";13p &nbsp; &nbsp; &nbsp; The 0;68 is the extended ASCII code
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for the F10 key and 13 is the ASCII
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; code for a carriage return.

&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; Other function key codes &nbsp; &nbsp; &nbsp; F1=59,F2=60,F3=61,F4=62,F5=63
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;F6=64,F7=65,F8=66,F9=67,F10=68

is there a environment variable that indicates if a session has been started via an ordinary login or via "su"? 

http://groups.google.de/group/comp.unix.shell/browse_frm/thread/1aabaddbf9215d81/0398881066c2d757<br class="khtml-block-placeholder">
if [ "$DISPLAY" != "" ]; then
&nbsp;&nbsp; echo Login via X
else
&nbsp;&nbsp; if [ "$SSH_CONNECTION" = "" ]; then
&nbsp;&nbsp; &nbsp; echo Login via su
&nbsp;&nbsp; else
&nbsp;&nbsp; &nbsp; echo Login via ssh
&nbsp;&nbsp; fi
fi&nbsp;
$ echo $0
-bash
$ su -
Password:
# echo $0
-su&nbsp;
ps $$|grep -q -- ' -su'&amp;&amp;echo SU&nbsp;<br>
[ "$0" = "-sh" ] &amp;&amp; echo SU&nbsp;<br>
Compare "who am i" with "id".<br>

Hosts file or LMHosts file, what’s the difference? 

from:&nbsp;http://www.tek-tips.com/faqs.cfm?fid=807
An LMHOSTS file specifies the NetBIOS computer name and IP address mappings; a HOSTS file specifies the DNS name and IP address. On a local computer, the HOSTS file (used by Windows Sockets applications to find TCP/IP host names) and LMHOSTS file (used by NetBIOS over TCP/IP to find NetBIOS computer names) can be used to list known IP addresses mapped with corresponding computer names. LMHOSTS is used for name resolution in Windows 95 for internetworks where WINS is not available.
· &nbsp; &nbsp;The HOSTS file is used as a local DNS equivalent to resolve host names to IP addresses.
· &nbsp; &nbsp;The LMHOSTS file is used as a local WINS equivalent to resolve NetBIOS computer names to IP addresses.
To take advantage of HOSTS or LMHOSTS, DNS must be enabled on the computer.
Sample versions of LMHOSTS and HOSTS files are added to the Windows NT \systemroot\System32\drivers\Etc directory when you install Microsoft TCP/IP.
&nbsp;

20090322

http://mtc.sri.com/Conficker/

http://mtc.sri.com/Conficker/<br>

Conficker B uses a different set of sites to query its external-facing IP address www.getmyip.org, www.whatsmyipaddress.com, www.whatismyip.org, checkip.dyndns.org.&nbsp; It does not download the fraudware Antivirus XP software that version A attempts to download.&nbsp;&nbsp; Conficker's propagation methods vary among A and B and are described in Section <a href="http://mtc.sri.com/Conficker/#Propagation"><span style="text-decoration: underline ; color: #0014db">Conficker Propagation</span></a>.&nbsp; Furthermore, a recent analysis by Symantec has uncovered that the GeoIP file is directly embedded in the Conficker B binary as a compressed RAR (Roshal archive) file encrypted using RC4 [<a href="http://mtc.sri.com/Conficker/ref-11"><span style="text-decoration: underline ; color: #0014db">11</span></a>].&nbsp;&nbsp;