�ς�� 2010/01/30

PostgreSQL �� TRUNCATE ���g�����U�N�V�������ł��B

�^�C�g���̒ʂ�ł����APostgreSQL �ł́ATRUNCATE TABLE �� �g�����U�N�V�������Ȃ̂ŁA���[���o�b�N����� �f�[�^�͌��ɖ߂�܂��B

���̂悤�ɂȂ�܂��B

postgres=# select * from test1;
 f1 | f2
----+----
 1  |  1
 2  |  2
(2 rows)

postgres=# begin;
BEGIN

postgres=# truncate table test1;
TRUNCATE TABLE

postgres=# select * from test1;
 f1 | f2
----+----
(0 rows)

postgres=# rollback;
ROLLBACK

postgres=# select * from test1;
 f1 | f2
----+----
 1  |  1
 2  |  2
(2 rows)

�ʔ����̂́ACREATE TABLE �Ȃǂ��g�����U�N�V�������ł��B

postgres=# begin;
BEGIN

postgres=# create table test2 (f1 varchar(1), f2 int);
CREATE TABLE

postgres=# select * from test2;
 f1 | f2
----+----
(0 rows)

postgres=# rollback;
ROLLBACK

postgres=# select * from test2;
ERROR:  relation "test2" does not exist

���R�A���̃g�����U�N�V�������R�~�b�g����܂ł́A �ʂ̃g�����U�N�V��������� test2 �e�[�u���͌����܂���B

�ʂ̃g�����U�N�V����������ł���Ə�����₱�����Ȃ�܂��B

�g�����U�N�V���� A ���g�����U�N�V�������Ƀe�[�u�����쐬���Ă���Ƃ��� ���̃g�����U�N�V���� B �������e�[�u�����Ńe�[�u�����쐬���悤�Ƃ���� �g�����U�N�V���� B �� A �̌��ʑ҂��ɂȂ�܂��B

�g�����U�N�V���� A �����[���o�b�N���� �e�[�u���̍쐬���L�����Z�����ꂽ�ꍇ �g�����U�N�V���� B ���e�[�u�����쐬�ł���̂ŁA �g�����U�N�V���� B �̓g�����U�N�V�������p���ł��܂��B

�������A�g�����U�N�V���� A ���R�~�b�g���� �e�[�u�����쐬���m�肵�Ă��܂����ꍇ�́A �g�����U�N�V���� B �̓e�[�u���̍쐬���ł��Ȃ��̂��� B ���́A���̃G���[���������܂��B

ERROR: duplicate key value violates 
       unique constraint "pg_type_typname_nsp_index"

DROP TABLE �����l�̂��Ƃ��N����܂��B

���܂肱���������P�[�X�͂Ȃ��Ǝv���܂����A ���̕ӂ�̓����� Oracle �ƈقȂ�̂Œ��ӂ��K�v�ł��B

���� favicon.ico

IE �� Web �T�C�g�ɃA�N�Z�X����� ����� favicon.ico ��T���̂� favicon.ico ���Ȃ��� Web �T�[�o�̃G���[���O�� favicon.ico ��T�������O���c���Ă��܂��܂��B

�Ώ����@�Ƃ��� favicon.ico �ւ̃A�N�Z�X�����O�ɏ������܂Ȃ��悤�� �ݒ肷�邩�Afavicon.ico �����ۂɐݒu������@������܂��B

��҂̕��@�ŁA�_�~�[�p�̓����� favicon.ico �� �~���������̂ō���Ă݂܂����B

������ favicon.ico

�K�v������Ύg���Ă��������B

�������A�u�b�N�}�[�N�ɓo�^�����ꍇ�A���̃T�C�g�� Web �u���E�U�̃f�t�H���g�̃A�C�R�����A�ݒu����Ă��� favicon.ico �� �\������Ă��钆�ŁA�����̂Ƃ��낾���󗓂ɂȂ��ĕ\�������̂� ��a���́A���Ȃ肠��܂��B

sudo �� �p�X���[�h�𕷂���Ȃ��悤�ɂ���

sudo �R�}���h���g�p����Ƃ��� �p�X���[�h�𕷂���Ȃ��悤�ɂ���ݒ�̃����ł��B

sudo �̐ݒ�t�@�C���� /etc/sudoers �ł��� �ҏW����Ƃ��́A���ڊJ���̂ł͂Ȃ� visudo �Ƃ����R�}���h���g�p���܂��B

ALL     ALL=(ALL)       NOPASSWD: ALL

������A���[�U�A�z�X�g�A�����A�R�}���h�Ȃ̂ł����A �R�}���h�� NOPASSWD: �ƕt���邱�ƂŃp�X���[�h��������Ȃ��Ȃ�܂��B

����̃��[�U�ɑ΂��� ����̃R�}���h�݂̂����‚������ꍇ�� ���̂悤�ɋL�q���܂��B

user1   ALL=(ALL)       NOPASSWD: /etc/init.d/httpd

����� user1 �� httpd �̎��s���ł���悤�ɂȂ�܂��B

�����t�@�C���̈ꊇ�u��

Linux �����̃e�L�X�g�t�@�C���̕�������ꊇ�� �u�����邽�߂̃V�F���X�N���v�g������Ă݂܂����B

#!/bin/bash
# ==========================================================
#  �����t�@�C���ꊇ�u���R�}���h
#  -----------------------------------------------------
#  create : 2010/01/21 Studio ODIN
#  update :
# ==========================================================

# --- init ---------------------------------------------
COMMAND_NAME=bulk_replace
CUR_DIR=`pwd`

# -- args ----------------------------------------------
TARGET_WORD=$1
REPLACE_WORD=$2
TARGET_DIR=$3

# -- args check ----------------------------------------
if [ "$TARGET_WORD" = "" ]; then
    echo "target word is nothing." >&2
    echo "Usage: $0 targetword replaceword [targetpath]" >&2
    exit 1
fi
if [ "$REPLACE_WORD" = "" ]; then
    echo "replace word is nothing." >&2
    echo "Usage: $0 targetword replaceword [targetpath]" >&2
    exit 1
fi
if [ "$TARGET_DIR" = "" ]; then
    TARGET_DIR=.
fi

# -- execute -------------------------------------------
grep -R -l "${TARGET_WORD}" "${TARGET_DIR}" | while read file
do
    tfile=`mktemp -u`
    cp -f -p $file $tfile > /dev/null 2>&1
    if [ $? -eq 0 ]; then
        sed -e "s/${TARGET_WORD}/${REPLACE_WORD}/g" $file > $tfile
        if [ $? -ne 0 ]; then
            echo "Warning: failed write '$file'"
        fi
        mv -f $tfile $file > /dev/null 2>&1
        if [ $? -ne 0 ]; then
            echo "Warning: failed rewrite '$file'"
            rm -f $tfile > /dev/null 2>&1
        fi
    else
        echo "Warning: failed copy '$file'"
    fi
done

# -- normal end ----------------------------------------
cd $CUR_DIR
exit 0

# ==========================================================
#  shell end
#  location: /usr/local/bin/bulk_replace
# ==========================================================

���s����ꍇ�́A�p�X�̎w��ȂǑ厖�ȃt�@�C���� ��ςȂ��ƂɂȂ�Ȃ��悤�ɋC��t���Ă��������B �i���ȐӔC�ł��肢���܂��j

����ȃR�}���h�́A���łɂ���悤�ȋC�����܂��� �����ŏ������l���č���Ă݂�͖̂ʔ����Ǝv���܂��B

Ruby �� Array#inject �ɂ‚���

Ruby �̔F�莎�����󂯂��y���� Array#inject �� �킩��ɂ����Ƃ����b�𕷂����̂� �ȒP�ɂ܂Ƃ߂Ă݂����Ǝv���܂��B

Array#inject �͔z��̒l�����v�����肷��̂Ɏg����֗��ȃ��\�b�h�ł��B

$ irb
irb(main):001:0> [1,2,3,4].inject(0) { | sum, i | sum + i }
=> 10

�����I�ɂ͎��̂悤�ȏ����ɂȂ�܂��B

[1,2,3,4].inject(0) { | sum, i | sum + i }
                  `-------,
        loop: 1           0, 1     0 + 1
                                   ~~|~~
                          ,----------'
        loop: 2           1, 2     1 + 2
                                   ~~|~~
                          ,----------'
        loop: 3           3, 3     3 + 3
                                   ~~|~~
                          ,----------'
        loop: 4           6, 4     6 + 4
                                   ~~|~~
                                     `----> �o��

2�‚߂̃u���b�N�����ɂ͔z��̒l���͂���̂ł��� 1�‚߂̃u���b�N�����ɂ́A�O��̃��[�v�̍Ō�̏������ʂ�����܂��B

1���� (loop:1) ��1�‚߂̃u���b�N�����́A �O��̏������ʂ��Ȃ��̂ŁA�����l�Ƃ��� inject ���\�b�h�̈������ݒ肳��܂��B

�u���b�N�����킩��₷�������Ǝ��̂悤�ɂȂ�܂��B

irb(main):001:0> [1,2,3,4].inject(0) { | sum, i | sum += i }
=> 10

�����܂ł͊ȒP�Ȃ̂ł����A���� inject ���\�b�h�� �������ȗ����邱�Ƃ��ł��܂��B ���̏ꍇ�̓������v���ӂł��B

��Ɠ����z��Ŏ����Ă݂܂��B

irb(main):001:0> [1,2,3,4].inject { | sum, i | sum + i }
=> 10

���ʂ͓����ł����B

�����ŁA�u���b�N���̏�����ς��Ă݂܂��B

irb(main):001:0> [1,2,3,4].inject(0) { | sum, i | sum * i }
=> 0
irb(main):002:0> [1,2,3,4].inject { | sum, i | sum * i }
=> 24

�܂������قȂ錋�ʂɂȂ�܂����B

�܂��A����������ꍇ�̓������������Ă݂܂��B

[1,2,3,4].inject(0) { | sum, i | sum * i }
                  `-------,
        loop: 1           0, 1     0 * 1
                                   ~~|~~
                          ,----------'
        loop: 2           0, 2     0 * 2
                                   ~~|~~
                          ,----------'
        loop: 3           0, 3     0 * 3
                                   ~~|~~
                          ,----------'
        loop: 4           0, 4     0 * 4
                                   ~~|~~
                                     `----> �o��

���ɁA�������Ȃ��ꍇ�̓������������Ă݂܂��B

[1,2,3,4].inject { | sum, i | sum * i }
  `--------------------,
        loop: 1        1, 2     1 * 2
                                ~~|~~
                       ,----------'
        loop: 2        2, 3     2 * 3
                                ~~|~~
                       ,----------'
        loop: 3        6, 4     6 * 4
                                ~~|~~
                                  `----> �o��

���̂悤�� �����l�Ƃ��� �z��� 1�‚߂̒l�������Ă��܂��B �܂��A1���� (loop:1) �� �z��� 2�‚߂̒l�������Ă��܂��B ���[�v�̐��� 1���Ȃ��Ȃ�܂��B �������ȗ�����ƁA �z��� 1�‚߂̂�l�������l�Ƃ��ė��p����킯�ł��B

�‚܂�A���� 2�‚������ƂȂ�܂��B

irb(main):001:0> [1,2,3,4].inject(0) { | sum, i | sum * i }
=> 0
irb(main):002:0> [0,1,2,3,4].inject { | sum, i | sum * i }
=> 0

ORDER BY expressions must appear in select list

���̂悤�� PostgreSQL �� SQL �G���[������܂��B

SELECT DISTINCT, ORDER BY expressions must appear in select list

����� SELECT DISTINCT ���g�p���Ă���ꍇ�ɁA ORDER BY ��Ɋ܂܂�Ă��鍀�ڂ� SELECT ��ɂȂ��ꍇ�ɔ������܂��B

�Ⴆ�΁A���̂悤�� SQL �ł��B

SELECT DISTINCT
       field_1
     , field_2
FROM test_table
ORDER BY field_3

SELECT DISTINCT ����Ă���̂� field_1 �� field_2 �ł��� �\�[�g�� field_3 ���w�肵�Ă��܂��B

����ł͌��ʂ̕��я���ۏ؂��邱�Ƃ��ł��Ȃ����� �G���[����������킯�ł��B

���Ȃ݂� Oracle �̏ꍇ�́A���̂悤�ȃG���[�ɂȂ�܂��B

ORA-01791: SELECT���������ł�

�����AOracle �� ����Ɍ����悤�ŁA���̂悤�ȏꍇ�̓G���[�ɂȂ�܂���B �i PostgreSQL �̓G���[�ɂȂ�܂��j

SELECT DISTINCT
       field_1
     , field_2
FROM test_table
WHERE field_3 = '0'
ORDER BY field_3

���̏ꍇ�́Afield_3 �� 1�‚ɌŒ肳��邽�߁A "�\�[�g�w��Ȃ�" �Ɠ�����ԂɂȂ邽�߃G���[�ɂȂ�܂���B

����22�N�x�t������ �\����t�J�n

��񏈗����i�@�\�F��񏈗��Z�p�Ҏ����F�󌱐\����

�t�̏�񏈗������\���̎�t���J�n���܂����B

�󌱂���l�͖Y��Ȃ������ɐ\�����݂܂��傤�B
�i���͎󂯂Ȃ��\�肾�����肵�܂����E�E�E�j

Ruby �C���X�g�[���[ Rumix �������Ă݂�

Windows �‹��ɊȒP�� Ruby �̎��s�‹������t���[�\�t�g���Љ��Ă����̂� �����ɃC���X�g�[�����Ă݂܂����B

Windows�ŃX�N���v�g����gRuby�h�𓱓����邽�߂̘a���C���X�g�[���[�uRumix�v

�܂��A�ȉ��̃T�C�g���� Rumix ���_�E�����[�h���܂��B

Rumix - Ruby Starter Package with Installer

����������Ă��鎞�_�ł́u Rumix 1.00�i�ʏ�Łj�v�u Rumix 1.00�iruby 1.9.1�Łj �v�� ����܂����A�ǂ��炪�ǂ����킩��Ȃ��l�́u Rumix 1.00�i�ʏ�Łj�v�𗎂Ƃ��܂��傤�B

�_�E���[�h�����t�@�C�����𓀂��āA���̒��� rumix_install.exe �����s���܂��B

�u���ցv�{�^���������܂��B

WRITE_0197_01

�u���ցv�{�^���������܂��B

WRITE_0197_02

�u���ցv�{�^���������܂��B

WRITE_0197_04

�u���ցv�{�^���������܂��B

WRITE_0197_06

�u���ցv�{�^���������܂��B

WRITE_0197_07

�u���ցv�{�^���������܂��B

WRITE_0197_08

�u���ցv�{�^���������܂��B

WRITE_0197_09

�u�C���X�g�[���v�{�^���������܂��B

WRITE_0197_10

�I���̂�҂��܂��B

WRITE_0197_11

�҂��܂��B

WRITE_0197_12

�҂��܂��B

WRITE_0197_13

����ŃC���X�g�[���͏I���ł��B

���� ruby �X�N���v�g������Ď��s�����Ă݂܂��B

�f�X�N�g�b�v�� test.rb �Ƃ����t�@�C��������� �e�L�X�g�G�f�B�^�� �X�N���v�g�������܂��B

puts 'hello world!'

�X�^�[�g���j���[����
�u NYACUS (�R�}���h���C���V�F��) �v���N�����܂��B

WRITE_0197_14

[d:\]
$ 

NYACUS �� Linux �̃V�F���̑��삪�ł���֗��ȃc�[���ł��B

cd �� ls, pwd �Ȃǂ̃R�}���h���g���܂��B �E�B���h�E�Ƀh���b�O���h���b�v���ăp�X���w�肷�邱�Ƃ��ł��܂��B

[d:\]
$ cd d:\desktop
[d:\desktop]
$ pwd
d:\desktop

��قǏ������X�N���v�g�����s�����Ă݂܂��B

WRITE_0197_15

"ruby test.rb" �ł� ���ڎw��ł����s�����邱�Ƃ��ł��܂��B

�ȒP�� ruby �̃X�N���v�g�����s�ł���̂� Ruby �̎����׋��Ȃǂɂ� �ƂĂ����ɗ����܂��B

Excel ���� UTF-8 �ŏo�͂���

Excel �̃}�N���Ȃ� UTF-8 �ŏo�͂��� ���W���[�����Љ�܂��B

UTF-8�t�@�C���쐬 for VBA

PostgreSQL �� �e�[�u�����C�A�E�g�� Excel �ō쐬���� Excel �̃}�N���� CREATE ���𐶐����Ă���̂ł��� �R�����g���Ȃ� ���{��� UTF-8 �ŏo�͂���̂� ���p�����Ă��炢�܂����B

�g�������ȒP�ŁA�_�E�����[�h���� class �t�@�C���� Excel �ɃC���|�[�g���āAOpen ���\�b�h�̑���� ���̂悤�ɋL�q���܂��B

Dim f1 As New TextFile

f1.FileCreate "test1.txt", "UTF-8"
f1.TextWrite "���̃t�@�C���� UTF-8 �ŃG���R�[�h����Ă��܂��B"
f1.FileClose

���΃p�X�����΃p�X���擾����

Linux �� realpath �Ȃǂ������Ă��Ȃ��󋵂� ���΃p�X�����΃p�X���擾���邽�߂� �V�F���X�N���v�g�ł��B

#!/bin/bash
# ==========================================================
#  ��΃p�X�擾�R�}���h
#  -----------------------------------------------------
#  create : 2010/01/07 Studio ODIN
#  update :
# ==========================================================

# --- init ---------------------------------------------
COMMAND_NAME=fullpath
CUR_DIR=`pwd`

# -- args ----------------------------------------------
TARGET_OBJECT=$1

# -- args check ----------------------------------------
if [ "$TARGET_OBJECT" = "" ]; then
    pwd
    exit 0
fi
if [ ! -e "$TARGET_OBJECT" ]; then
    echo "Error: '$TARGET_OBJECT' is not exists." >&2
    exit 1
fi

# -- get full path (is directory) ----------------------
if [ -d $TARGET_OBJECT ]; then
    cd $TARGET_OBJECT
    pwd
    exit 0
fi

# -- get full path (is not directory) ------------------
cd `dirname $TARGET_OBJECT`
TARGET_PATH=`pwd`
TARGET_NAME=`basename $TARGET_OBJECT`
if [ "$TARGET_PATH" = "/" ]; then
    echo $TARGET_PATH$TARGET_NAME
else
    echo $TARGET_PATH/$TARGET_NAME
fi

# -- normal end ----------------------------------------
cd $CUR_DIR
exit 0

# ==========================================================
#  shell end
#  location: /usr/local/bin/fullpath
# ==========================================================

���̗�́Afullpath �Ƃ������O�� /usr/local/bin �ɍ쐬���Ď��s������t���Ă��܂��B �‹��ɍ��킹�ĕύX���Ă��������B

# cd /usr/local/bin
# vi fullpath
# chmod 755 fullpath

�������w�肵�Ȃ���΁A�J�����g�f�B���N�g���̃p�X�A �f�B���N�g����t�@�C�����w�肷��΁A���̐�΃p�X��Ԃ��܂��B

$ fullpath
/home/odin

$ fullpath ../
/home

$ fullpath /
/

$ fullpath ../../vmlinuz
/vmlinuz

�މ�V�N

�����܂��Ă��߂łƂ��������܂��B

���߂Ă̐l���A�����Ŗ����l���A ���N����낵�����肢���܂��B

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

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