Vista �ł̓R�}���h�v�����v�g�Ƀh���b�O���h���b�v�ł��Ȃ�

Windows Vista �ł� XP �܂ł̂悤�� �t�@�C�����R�}���h�v�����v�g�Ƀh���b�O���h���b�v���� �t�@�C���̃p�X��\�邱�Ƃ��ł��܂���B

���@���������ƌ������Ă݂�Ǝ��̂悤�ȋL��������܂����B

�y�Q�l�T�C�g�z
�������ς����Windows Vista 100�A���I �\ ��49�� �g�p�X�Ƃ��ăR�s�[�h�ŃR�}���h�v�����v�g�Ƀp�X����n��

����ɂ��� Vista �ł� [Shift] �L�[�������Ȃ���E�N���b�N����� ���̂悤�Ɂu�p�X�Ƃ��ăR�s�[�v���郁�j���[���o�Ă���̂� ����Ńt�@�C���̃p�X���R�s�[���Ă��� �R�}���h�v�����v�g�ɓ\��t���邻���ł��B

WRITE_0275_01

�h���b�O���h���b�v���֗��������̂Ŏc�O�ł��B

PostgreSQL �� ANALYZE �̓������m�F����

�O�� VACUUM �̊m�F�ɂ‚��ď����܂����� ����� ANALYZE �̊m�F�ɂ‚��ď��������Ǝv���܂��B

�܂��̓e�[�u�� analyze_test ���쐬���܂��B

db=# CREATE TABLE analyze_test (f1 VARCHAR(10), f2 INTEGER);
CREATE TABLE

ANALYZE ������ pg_stat_all_tables ����擾�ł��܂��B

db=# SELECT * FROM pg_stat_all_tables
db-# WHERE relname = 'analyze_test';

-[ RECORD 1 ]----+------------------------------
relid            | 16469
schemaname       | public
relname          | analyze_test
seq_scan         | 2
seq_tup_read     | 9
idx_scan         |
idx_tup_fetch    |
n_tup_ins        | 5
n_tup_upd        | 1
n_tup_del        | 1
n_tup_hot_upd    | 1
n_live_tup       | 4
n_dead_tup       | 0
last_vacuum      |
last_autovacuum  |
last_analyze     |
last_autoanalyze |

ANALYZE ����O�͂��̂悤�ȏ�Ԃł��B

�܂��Apg_stat_all_tables �̑��� �񂲂Ƃ̓��v��� pg_stats �r���[����擾�ł��܂��B

db=# SELECT * FROM pg_stats WHERE tablename = 'analyze_test';
(No rows)

ANALYZE ����O�� ���R�[�h���擾�ł��܂���B

����ł� ANALYZE �����s���܂��B

db=# ANALYZE analyze_test;
ANALYZE

��Ԃ��m�F���܂��B

db=# SELECT * FROM pg_stat_all_tables
db-# WHERE relname = 'analyze_test';

-[ RECORD 1 ]----+------------------------------
relid            | 16469
schemaname       | public
relname          | analyze_test
seq_scan         | 2
seq_tup_read     | 9
idx_scan         |
idx_tup_fetch    |
n_tup_ins        | 5
n_tup_upd        | 1
n_tup_del        | 1
n_tup_hot_upd    | 1
n_live_tup       | 4
n_dead_tup       | 0
last_vacuum      |
last_autovacuum  |
last_analyze     | 2010-04-24 15:49:12.383112+09
last_autoanalyze |

last_analyze �� ANALYZE �����������i�[����܂����B

�񂲂Ƃ̓��v�����m�F���܂��B

db=# SELECT * from pg_stats WHERE tablename = 'analyze_test';

-[ RECORD 1 ]-----+--------------------------
schemaname        | public
tablename         | analyze_test
attname           | f1
null_frac         | 0
avg_width         | 6
n_distinct        | -1
most_common_vals  |
most_common_freqs |
histogram_bounds  | {00001,00003,00004,00005}
correlation       | -0.2
-[ RECORD 2 ]-----+--------------------------
schemaname        | public
tablename         | analyze_test
attname           | f2
null_frac         | 0
avg_width         | 4
n_distinct        | -1
most_common_vals  |
most_common_freqs |
histogram_bounds  | {15,30,40,50}
correlation       | -0.2

ANALYZE �����e�[�u���̗�̃��R�[�h���lj�����Ă��܂��B

histogram_bounds �ɗ�̒l�̃T���v���������Ă��܂��B
�i�s�����Ȃ��̂őS�Ă̒l�������Ă��܂��j

PostgreSQL �� VACUUM �̓������m�F����

PostgreSQL �� �f�[�^���X�V�����Ƃ��� �폜�����Ƃ��� ���R�[�h�Ɂu�s�v�v�}�[�N��t����Ƃ����������s�Ȃ��܂��B

�u�s�v�v�}�[�N�̕t�������R�[�h�i�ȉ��A�s�v�ȃ��R�[�h�j�� ���̂܂܂ł͍ė��p�ł��Ȃ��̂Ńf�[�^��}�����Ȃ��Ă� �X�V���J��Ԃ������� �e�[�u���̎g�p����X�y�[�X�͍L�����Ă����܂��B

VACUUM �́A�s�v�ɂȂ������R�[�h�̃X�y�[�X�� �ė��p�”\�ɂ��܂��B ����́A���̓������m�F���Ă݂����Ǝv���܂��B

�܂��͐V�����e�[�u�� vacuum_test ���쐬���܂��B

db=# CREATE TABLE vacuum_test (f1 VARCHAR(10), f2 INTEGER);
CREATE TABLE

���� pg_stat_all_tables �J�^���O����擾���܂��B

db=# SELECT n_live_tup,n_dead_tup,last_vacuum,last_autovacuum
db-# FROM pg_stat_all_tables
db-# WHERE relname = 'vacuum_test';

-[ RECORD 1 ]----+------------
n_live_tup       | 0
n_dead_tup       | 0
last_vacuum      |
last_autovacuum  |

�e�[�u�����쐬�������_�ł͏�̂悤�ɂȂ��Ă��܂��B

VACUUM �Ɋ֘A�����ȗ�̂ݎ擾���Ă��܂��B
���ꂼ��̗�̈Ӗ��͎��̂悤�ɂȂ�܂��B

�� ����
n_live_tup �L���ȃ��R�[�h��
n_dead_tup �s�v�ɂȂ������R�[�h��
last_vacuum ��� VACUUM �����s��������
last_autovacuum �Ō�� ���� VACUUM �����s���ꂽ����

���R�[�h��}�����܂��B

INSERT INTO vacuum_test VALUES ('00001', 10);
INSERT INTO vacuum_test VALUES ('00002', 20);
INSERT INTO vacuum_test VALUES ('00003', 30);
INSERT INTO vacuum_test VALUES ('00004', 40);
INSERT INTO vacuum_test VALUES ('00005', 50);

��Ԃ��m�F���܂��B

db=# SELECT n_live_tup,n_dead_tup,last_vacuum,last_autovacuum
db-# FROM pg_stat_all_tables
db-# WHERE relname = 'vacuum_test';

-[ RECORD 1 ]----+------------
n_live_tup       | 5
n_dead_tup       | 0
last_vacuum      |
last_autovacuum  |

5 ���R�[�h�}�������̂ŁA�L���ȃ��R�[�h���� 5 �ɂȂ�܂����B

���� 1 ���R�[�h�폜���܂��B

db=# DELETE FROM vacuum_test WHERE f1 = '00002';
DELETE 1

��Ԃ��m�F���܂��B

db=# SELECT n_live_tup,n_dead_tup,last_vacuum,last_autovacuum
db-# FROM pg_stat_all_tables
db-# WHERE relname = 'vacuum_test';

-[ RECORD 1 ]----+------------
n_live_tup       | 4
n_dead_tup       | 1
last_vacuum      |
last_autovacuum  |

�L���ȃ��R�[�h���� 4 �ɂȂ� �s�v�ȃ��R�[�h���� 1 �ɂȂ�܂����B

�‚��łɍX�V�����܂��B

db=# UPDATE vacuum_test SET f2 = 15 WHERE f1 = '00001';
UPDATE 1

���‚�����Ԃ��m�F���܂��B

db=# SELECT n_live_tup,n_dead_tup,last_vacuum,last_autovacuum
db-# FROM pg_stat_all_tables
db-# WHERE relname = 'vacuum_test';

-[ RECORD 1 ]----+------------
n_live_tup       | 4
n_dead_tup       | 2
last_vacuum      |
last_autovacuum  |

�s�v�ȃ��R�[�h���� 1 �����܂����B

�����܂ł͏����ł��B �悤�₭ VACUUM �����s���܂��B

db=# VACUUM vacuum_test;
VACUUM

��Ԃ��m�F���܂��B

db=# SELECT n_live_tup,n_dead_tup,last_vacuum,last_autovacuum
db-# FROM pg_stat_all_tables
db-# WHERE relname = 'vacuum_test';

-[ RECORD 1 ]----+------------------------------
n_live_tup       | 4
n_dead_tup       | 0
last_vacuum      | 2010-04-20 22:20:20.560647+09
last_autovacuum  | 

�s�v�ȃ��R�[�h���� 0 �ɂȂ�܂����B
last_vacuum �� VACUUM �����s���������������Ă��܂��B

���̂悤�� VACUUM �ŁA�s�v�ɂȂ������R�[�h�� �X�y�[�X���ė��p�”\�ɂ��邱�Ƃ��ł��܂��B

�p�X���[�h���ꊇ�ŕύX����

Linux �ɂ� �p�X���[�h���ꊇ�ŕύX�ł��� chpasswd �Ƃ����R�}���h������܂��B �g�����͊ȒP�ŕW�����͂��烆�[�U���ƃp�X���[�h�̃Z�b�g��n�������ł��B

�Ⴆ�� testuser1 �̃p�X���[�h�� hogehoge �ɂ���ꍇ ���̂悤�� ���[�U���ƃp�X���[�h���R�����ŋ�؂��ăp�C�v���܂��B

# echo "testuser1:hogehoge" | chpasswd

�������[�U�̃p�X���[�h���ꊇ�ŕύX����ꍇ ���̂悤�� �t�@�C���Ƀ��[�U���ƃp�X���[�h�̃Z�b�g���L�q���܂��B

# vi passwd.txt
testuser1:hogehoge1
testuser2:hogehoge2
testuser3:hogehoge3

������p�C�v�œn���܂��B

# cat passwd.txt | chpasswd

�S���[�U�̃p�X���[�h���ꊇ�ŏ���������ꍇ�ȂǕ֗��ł��B

Bash �� �z����g���Ă݂� ���� 2

�O��i Bash �� �z����g���Ă݂� ���� 1 �j�͒l�̊i�[�ł����� ����͔z��炵�� for ���[�v���g���Ēl���o�͂��܂��B

�܂��� ���ʂ́H for ���ł��B �z��̒l��S�ďo�͂���ɂ͎��̂悤�� �Y������ "@" �� "*" ���g���܂��B

$ ARRAY=(one two three four)

$ echo ${ARRAY[@]}
one two three four

$ echo ${ARRAY[*]}
one two three four

����� for ���Ŏg�p���܂��B

$ ARRAY=(one two three four)

$ for item in ${ARRAY[@]}
> do
>     echo $item
> done
one
two
three
four

�������A����� 1 �–�肪����܂��B

Bash �� for �� ���� 2 �ŏ����܂����� for ���� IFS (�f�t�H���g�̓X�y�[�X�Ȃ�) �ŋ�؂�ꂽ������Ń��[�v�����邱�Ƃ��ł���̂� �z��̗v�f�� IFS ���܂ޕ�����̏ꍇ�A���̂悤�Ƀ��[�v�������Ă��܂��܂��B

$ ARRAY=("one1 one2 one3" two three four)

$ echo ${ARRAY[0]}
one1 one2 one3

$ for item in ${ARRAY[@]}
> do
>     echo $item
> done
one1
one2
one3
two
three
four

�����h�����߂Ƀv���O��������̂悤�� for �����g�p���܂��B

�z��̓Y�����̍ő���擾����ɂ͎��̂悤�ɂ��܂��B

$ ARRAY=("one1 one2 one3" two three four)

$ echo ${#ARRAY[@]}
4

$ echo ${#ARRAY[*]}
4

����� for ���Ŏg�p���܂��B

$ ARRAY=("one1 one2 one3" two three four)

$ for (( i = 0; i < ${#ARRAY[@]}; i++ ))
> do
>     echo ${ARRAY[$i]}
> done
one1 one2 one3
two
three
four

1 �‚߂̔z����������o�͂���܂����B

Bash �� �z����g���Ă݂� ���� 1

�܂��͒l�̊i�[�ł��B ���� 1 �‚��Žw�肷����@�ł��B

$ A[0]=one
$ A[1]=two

������‚͈ꊇ�Ŏw�肷����@�ł��B

$ A=(one two three four)

�z��̒l���o�͂���ɂ� "{}" �i�u�����P�b�g�j�� �g�p����K�v������܂��B

$ echo ${A[0]}

�u�����P�b�g���w�肵�Ȃ��� �ϐ� "$A" �� "[0]" �Ƃ��������̏o�͂ɂȂ��Ă��܂��܂��B

���Ȃ݂� ���̂悤�ɓY���� 0 �̒l�� �Y�������w�肵�Ȃ��ϐ��̒l�Ɠ����ɂȂ�܂��B

$ echo ${A[0]}
one

$ echo $A
one

�ł��̂Ńu�����P�b�g���g�p���Ȃ��ꍇ�͎��̂悤�ɏo�͂���܂��B

$ echo $A[0]
one[0]

IFS (Internal Field Separator) �̒l��\������

Bash �� for �� ���� 2 �� IFS ���o������ł����A �f�t�H���g�� IFS �̒��g��\�����邱�Ƃ��ł��Ȃ����Ȃ� �l���Ă��܂����B

���ʂɏo�͂��Ă����̂悤�ɂȂ��Ă��܂��܂��B

$ echo "[$IFS]"

[
]

���̃T�C�g�ɗǂ����@���ڂ��Ă��܂����B

�y�Q�l�T�C�g�z
IFS - http://www.curri.miyakyo-u.ac.jp/pub/doc/sh/node31.html

$ echo -n "$IFS" | od -b

0000000 040 011 012
0000003

$ echo -n "$IFS" | od -c

0000000      \t  \n
0000003

040 011 012 �� 8�i���ł��B
�l�Ƃ��Ă� �X�y�[�X�i0x20�j�A�����^�u�i0x09�j�A���s�i0x0A�j�ɂȂ�܂��B

Bash �� for �� ���� 2

Bash �� for �� �̑����ł��B

��������̃��X�g

���̂悤�ɕ�����̋󔒂ŋ�؂�ꂽ���ڂ����X�g�Ƃ��� ���[�v�����邱�Ƃ��ł��܂��B

$ ITEMS="one two three four"

$ for item in $ITEMS
> do
>     echo $item;
> done;

one
two
three
four

�������͋󔒂ł͂Ȃ� IFS (Internal Field Separator) �Œ�`����Ă�����̂� ������𕪊����܂��B IFS ��ύX����Ƌ�؂��ς��邱�Ƃ��ł��܂��B

$ ITEMS="one/two/three four"
$ IFS="/"

$ for item in $ITEMS
> do
>     echo $item;
> done;

one
two
three four

�����̃��X�g

���Ɉ����̃��X�g�Ń��[�v������Ƃ����̂�����܂��B

$ function test () {
>     for item in $*
>     do
>         echo $item;
>     done;
> }

$ test one two three four

one
two
three
four

Bash �� for ��

Bash �Ŏg���� for ���ɂ͐F�X�Ȍ`������܂��B

���̃��X�g

$ for item in one two three four
> do
>     echo $item
> done

one
two
three
four

in �̌�ɕ��ׂ��l�����[�v�����܂��B

�f�B���N�g���E�t�@�C���̃��X�g

$ for item in /tmp/*
> do
>     echo $item
> done

/tmp/aaaa.txt
/tmp/bbbb.txt

�}�b�`���� �f�B���N�g����t�@�C���̃p�X�Ń��[�v�����܂��B

�R�}���h�̌��ʂ̃��X�g

$ for item in $(wc /tmp/a.txt)
> do
>     echo $item
> done

0
3
9

�R�}���h�u�����g���āA���s���ʂŃ��[�v�����܂��B

����𗘗p���� seq �R�}���h���g�����@������܂��B

$ for item in $(seq 1 3)
> do
>     echo $item
> done

1
2
3

Java �Ȃǂ̌���ɂ悭���� for ��

����ł悭�݂����� ����������J��Ԃ������� �Z�~�R�����ŋ�؂��Ă�`�����g���܂��B

$ for (( item = 0; item < 3; item++ ))
> do
>     echo $item
> done

0
1
2

��d�J�b�R (()) ���g���܂��B

Google �T�C�g������

Amazon�A�\�V�G�C�g