2013년 5월 8일 수요일

IE10업댓이후 64비트로만 실행될때 해결방법

[출처 : http://www.clien.net/ ]

우선 저는 win7+IE10릴리즈 프리뷰버전에서 이번에 정식으로 업댓하여 RTM버전으로 확인됩니다.

제가 겪은 문제로는
C:\Program Files (x86)\Internet Explorer\IEXPLORER.EXE 의 32비트 경로를 실행해도 64비트로 실행되더군요
그래서 이리저리 구글링 해보다가 해결하여서 제가 해본 방법을 소개해볼까 합니다

1. 인터넷 옵션 고급탭에서 '향상된 보호 모드 사용' 체크해제 하기

1)체크가 되어있으면 x86,x64 구분하지 않고 x64으로 실행되고
2)체크 해제하면 경로에 따른 x86,x64로 실행 된다고 합니다

그런데 여기서 발생한 문제점이 해제 되어있는데
64비트로 고정되어 각종 금융, 쇼핑 사이트에서 에러를 뿜었습니다

2. 윈도우+r regedit.exe 하여서

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main 경로에서
TabProcGrowth 값이 0이면 1로 수정 혹은 삭제

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main 경로에서
1)TabProcGrowth 값이 0이면 1로 수정 혹은 삭제 (없을수도 있음. 제경우엔 없더군요)
2)추가로
값이름 x86AppPath 
종류 REG_SZ
값데이터 C:\Program Files (x86)\Internet Explorer\IEXPLORER.EXE

있는지 확인. 없으면 추가


전 2번 TabProcGrowth 값 수정후(0->1로 수정)
IE 재실행 하니 32비트로 인식되고, 금융, 쇼핑 잘 되는거 확인했습니다

win8은 테스트 해보지 못하였지만, 비슷할것으로 보여집니다
그래도 해결되지 않는다면.. 능력자분이 나타나실거라 믿습니다

2013년 4월 17일 수요일

Linux Fail Over Cluster System 구축하기

[출처 : http://thinkit.or.kr/ ]
일반적으로 Linux Fail Over Cluster System 을 구축하기 위한 솔루션으로는 리눅스 라우팅 박스 아래에 서비스 서버들을 여러대 놓고, 리눅스 라우팅 박스의 Fail Over 를 구성하고, 서비스 서버들끼리 부하분산 Cluster 구성한다.
하지만, 이번 문서에서는 단지 두대의 리얼 서비스 리눅스 박스만으로 Fail Over Cluster 를 구성하기 위한 방법을 기술한다. 단 두대로 서비스 데몬까지 Fail Over Cluster 를 구성해주는 솔루션을 찾을 수 없어서 직접 작성한 스크립트를 추가하였다.

Linux Fail Over Cluster How To

1. 개요.
• 고가용성이란 하나의 노드에 문제가 생긴 경우 다른 노드에서 서비스나 기능을 대신 제공하는 것을 말한다. 공개소스로서 이러한 기능을 구현하고 있는 것이 High-Availability Linux Project 이다. Heartbeat 등의 프로그램을 이용하여, 서비스 서버에 장애가 발생하더라도 예비 서버를 이용하여 계속적인 서비스가 가능하도록 구성하는 것이다.

2. 환경
서버 2대 (Redhat Linux 9.0)
virtual ip  lvstest.com (210.xxx.xxx.225)
server 1  lvs1.lvstest.com (210.xxx.xxx.226)
server 2  lvs2.lvstest.com (210.xxx.xxx.227)

만약 랜카드가 두개씩 장착되어진 시스템이라면 크로스 케이블을 이용 eht1 번
카드로 클러스터링을 구성하도록 할 수 있다. 본 문서는 랜카드가 한 개씩 일 때를
기준으로 작성되었으나, 추가적으로 ▶ Private IP 라는 표시를 하여 두번째
랜카드를 클러스터링용도로 사용하는 방법에 대해서도 함께 기술한다. 만약
랜카드가 하나씩인 시스템에 설치시에는 ▶ Private IP 표시가 된 항목은
무시하도록 한다.

▶ Private IP
Server 1  lvs1.lvstest.com (PublicIP: 210.xxx.xxx.226 / PrivateIP: 192.168.0.226)
Server 2  lvs2.lvstest.com (PublicIP: 210.xxx.xxx.227 / PrivateIP: 192.168.0.227)

3. 설치 프로그램 (lvs1, lvs2 공통)
A. 설치되어 있어야 하는 프로그램들.
autoconf, automake, libtool, glib-devel, lynx
RHN, 혹은 Red carpet 을 통하여 RPM 설치를 한다.
Apache, MySQL, PHP 를 설치한다.

B. 설치할 프로그램들.
libnet, heartbeat
libnet 은 http://www.packetfactory.net/libnet 에서 구할 수 있다. 다운 받은 후 다음의 명령으로 기본 설치한다.

# gzip –cd libnet.tar.gz | tar xvf –
# cd Libnet-latest
# ./configure
# make && make install

heartbeat 은 http://www.linux-ha.org/download/ 에서 구할 수 있다.
다음의 명령으로 기본 설치한다.

# gzip –cd heartbeat-1.0.3.tar.gz | tar xvf –
# cd heartbeat-1.0.3
# ./ConfigureMe configure
# gmake && gmake install (gmake 를 권장한다.)

4. server, heartbeat 설정.
A. Server 설정
Lvs1, lvs2 공통으로 /etc/hosts 파일을 열어 다음 라인을 추가해 준다.

# vi /etc/hosts
210.xxx.xxx.226 lvs1.lvstest.com lvs1
210.xxx.xxx.227 lvs2.lvstest.com lvs2
:wq

▶ Private IP
# vi /etc/hosts
192.168.0.226 lvs1.lvstest.com lvs1
192.168.0.227 lvs2.lvstest.com lvs2

/etc/sysconfig/network 파일을 열어 다음과 같이 개별적으로 편집한다.

Lvs1  HOSTNAME=lvs1
Lvs2  HOSTNAME=lvs2

B. Heartbeat 설정
이하는 모두 공통 설정이다.
우선 각각의 서버에 /etc/rc.d/init.d/heartbeat 이라는 스크립트가 존재하는지를 확인한다. 또한 /etc/ha.d 디렉터리가 존재하는지도 확인한다.
다음으로 각각의 서버에 3개의 환경파일을 생성 및 편집한다. 파일은 다음과 같다.
/etc/ha.d/authkeys, /etc/ha.d/ha.cf, /etc/ha.d/haresources

# vi authkeys
auth1
1 crc
:wq

# vi ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
keepalive 2  두 노드간에 얼마나 자주 heartbeat를 주고받을 것인가. 2초
deadtime 5  호스트가 죽었다고 판단하는 시간. 5초가 지나면 failover를 시작한다.
udpport 694  UDP heartbeat 패킷을 보낼 포트.
udp eth0  heartbeat를 보낼 인터페이스 (eth1 등의 추가적인 장치가 있다면 서비스에 영향을 주지 않도록 eth1 등의 디바이스를 사용한다.)
▶ Private IP
udp eth1
node lvs1
node lvs2
:wq

vi haresources
lvs1 210.xxx.xxx.225  가상 아이피를 적어준다. (두 서버 모두 동일하게 세팅한다.)
:wq

마지막으로 authkeys 파일의 퍼미션을 변경해준다.

# chmod 600 authkeys

부팅시 자동으로 실행될 수 있도록 각각의 서버에서 부트 스크립트 링크를 걸어준다.

# ln –s /etc/rc.d/init.d/heartbeat /etc/rc.d/rc0.d/K05heartbeat
# ln –s /etc/rc.d/init.d/heartbeat /etc/rc.d/rc3.d/S99heartbeat
# ln –s /etc/rc.d/init.d/heartbeat /etc/rc.d/rc5.d/S99heartbeat
# ln –s /etc/rc.d/init.d/heartbeat /etc/rc.d/rc6.d/K05heartbeat

5. Heartbeat 설정 확인
각각의 서버에서 /etc/rc.d/init.d/heartbeat start(enter)
lvs1 에서 ifconfig 명령어로 확인해 보았을 때 eth0:0 가 생성되고 210.xxx.xxx.225 의 가상 아이피가 할당된다. (LVS1, LVS2 순서대로 실행 추천)
lvs1 의 전원을 끄거나 /etc/rc.d/rc3.d/S99heartbeat stop(enter)를 해본다. 잠시후에 lvs2 에서 ifconfig 명령어로 확인해 보았을 때 eth0:0 가 새로 생성되면서 210.xxx.xxx.225 의 가상 아이피가 할당된다.
lvs1 의 전원을 킨다. 혹은 /etc/rc.d/rc3.d/S99heartbeat start(enter)를 한다. 잠시후 lvs2 의 eth0:0 가 없어지고 lvs1 에 eth0:0 가 생성되면서 210.xxx.xxx.225 의 아이피가 할당된다.

6. 서비스 데몬 모니터링
A. 서비스 데몬 체크를 위한 시스템 설정 (LVS1 에만 해당된다)
MySQL root 패스워드를 설정한다. (혹은 데몬 체크를 위한 DB 유저 / 패스워드를 생성한다.)

# /usr/local/mysql/bin/mysql mysql
mysql> update user set password = password(‘$NEWPASSWD’) where user = ‘root’;
mysql> flush privileges;

데몬 체크 스크립트에서 확인 할 수 있도록 아파치 웹 디렉터리에 다음과 같은 파일을 생성한다.

# cd /usr/local/apache/htdocs
# vi apache_mysql_chk.html
$dbcheck=mysql_connect(“:/tmp/mysql.sock”,”root”,”$NEWPASSWD”);  MySQL 의 소켓 값(여기서는 /tmp/mysql.sock)은 netstat –an | grep LIST 하면 확인 할 수 있다. 아이디와 패스워드(여기서는 root) 위에서 설정한 아이디, 패스워드를 사용한다.
If($dbcheck) echo “GOOD”;
else echo “BAD”;
?>
:wq!

B. 서비스 데몬을 모니터링하기 위한 heartbeat 의 추가설정 및 스크립트 (LVS1 에만 해당된다)
/etc/ha.d/resource.d/daemon_chk 스크립트를 생성한다.

vi daemon_chk
#! /bin/sh
# scripted by brainjam at inet.co.kr

# 필요에 따라 SLEEP_TIME 과 LYNX_TIME_OUT 값을 변경해 줄 수 있다.

CHK_FILE=lvstest.com/apache_mysql_chk.html
SLEEP_TIME=2  서비스 데몬 체크 후 다음 체크까지의 초.
LYNX_TIME_OUT=5  서비스 데몬 체크시 응답 까지의 타임아웃 초.
ORIG_SYNTAX=” GOOD”
 터미널에서 다음 명령어를 실행해서 나오는 결과값을 입력. 앞쪽의 space 도 포함해서 입력해 준다. # lynx –dump lvstest.com/apache_mysql_chk.html 일반적으로 spacespacespaceGOOD (space 세개) 일 것 이다.

# 아래 스크립트는 변경하지 않도록 한다.

case $1 in

start)

LOOP_NUM=0
CHK_NUM=0
while [ $LOOP_NUM = 0 ]
do

CHK_NUM=$CHK_NUM
if [ $CHK_NUM = 5 ]
then
/etc/rc.d/init.d/heartbeat stop
exit 0
else
GET_SYNTAX=`lynx –dump –connect_timeout=$LYNX_TIME_OUT –nolog $CHK_FILE | grep GOOD 2>/dev/null`
if [ “$ORIG_SYNTAX” = “$GET_SYNTAX” ]
then
CHK_NUM=0
sleep $SLEEP_TIME
else
CHK_NUM=`expr $CHK_NUM + 1`
sleep $SLEEP_TIME
fi
fi

done
;;

stop)
DAEMON_CHK_PID=`ps aux | awk ‘/daemon_chk/ && !/awk/ {print $2}’ | head -1`
kill -9 $DAEMON_CHK_PID
;;

*)
echo “daemon_chk start or stop”
;;

esac
:wq!

# chmod +x daemon_chk  실행 퍼미션을 적용한다.

서비스에 필요한 스크립트를 /etc/ha.d/resource.d 에 소프트 링크를 건다.

# cd /etc/ha.d/resource.d
# ln –s /usr/local/apache/bin/apachectl ./apache
# ln –s /usr/local/mysql/share/mysql/mysql.server ./mysql

만약 /etc/rc.d 아래에 S99apache, S99mysql 등의 스크립트가 설정되어 있다면 모두 삭제한다. Fail Over 를 위해서 apache, mysql 등의 시작 종료를 heartbeat 가 관장하게 된다.

/etc/ha.d/haresources 를 수정한다.

LVS1 의 haresources 파일
# vi haresources
lvs1 IPaddr::210.xxx.xxx.225 apache mysql daemon_chk

LVS2 의 haresources 파일
# vi haresources
lvs1 IPaddr::210.xxx.xxx.225 apache mysql

7. High Availability Fail Over Clustering 설정 확인
각각의 서버에서 /etc/rc.d/init.d/heartbeat start(enter) 를 실행한다. (LVS1, LVS2 순서대로 실행 추천) LVS1 에 apache 와 mysql 이 실행되었는지 확인한다. (heartbeat 이 올라간 후 실행되기 때문에 5초 정도의 딜레이가 있을 수 있다.) LVS2 에서는 heartbeat 가 실행되더라도 apache 와 mysql 이 실행되지 않는다. 이는 추후에 LVS1 이 서비스 불능시 LVS2 가 Virtual IP (여기서는 210.xxx.xxx.225)를 가져오면서 자동 실행된다.
테스트를 위해서 apache 혹은 mysql 데몬을 종료시킨다. 위의 설정대로 하였다면 10초 뒤 LVS1 의 heartbeat 이 종료되면서 LVS2 가 Virtual IP 를 가져간다. 동시에 LVS2 에서 apache 와 mysql 이 서비스 됨을 확인 할 수 있을 것이다. (LVS1 은 자동으로 apache 와 mysql 데몬을 종료되었을 것이다.)
다시 LVS1 에서 heartbeat 를 실행시키면 다시 Virtual IP 를 LVS1 으로 가져오면서 LVS1 에서 서비스 되는 것을 확인 할 수 있다.

2012년 11월 14일 수요일

SAP 텍스트에 특정키 넣기

[출처 : http://www.kerum.pl/ ]

It can be a bit difficult to use tabulator character (hex code 0x0009) in ABAP strings. On the other hand it is often used as separator in various interface files and you need tab character to split the lines into fields or insert it into the strings as delimiter.

If you need to fulfill the unicode check, you have to use special approach to combine hex code and string. Otherwise you will get the syntax error from compiler:
"TAB" must be a character-like data object (data type C, N, D, T, or STRING)
Here three examples, how the tab character can be used in combination with string in abap. You can use similar approach for other difficult characters, for example ENTER.
Example 1: can be used in non-unicode and unicode systems: (tabulator hex code is defined in class CL_ABAP_CHAR_UTILITIES as constants HORIZONTAL_TAB)
DATA:
  tab type c value cl_abap_char_utilities=>horizontal_tab,
  str TYPE string.

CONCATENATE 'aaa' 'bbb' INTO str SEPARATED BY tab.
Here other useful constants defined in class CL_ABAP_CHAR_UTILITIES:

Name Length Hex-Value Dec-Value
BACKSPACE 1 0x08 8
HORIZONTAL_TAB 1 0x09 9
VERTICAL_TAB 1 0x0B 11
FORM_FEED 1 0x0C 12
NEWLINE 1 0x0A 10
CR_LF 2 0x0D0A 13 10
Example 2: it also works in non-unicode and unicode systems:
DATA:
  tab TYPE x VALUE '09',
  chr TYPE c,
  str TYPE string.

FIELD-SYMBOLS:
  <fs> TYPE ANY.

ASSIGN chr TO <fs> CASTING TYPE x.
<fs> = tab.

CONCATENATE 'aaa' 'bbb' INTO str SEPARATED BY chr.
Exapmle 3: it will only work in non-unicode system:
DATA:
  tab TYPE x VALUE '09',
  str TYPE string.

CONCATENATE 'aaa' 'bbb' INTO str SEPARATED BY tab.

2012년 10월 25일 목요일

알아두면 유용한 사이트 목록~

[출처:파코즈]

1. 고화질 HDTV를 인터넷에서 무료로 보자!
집에 TV가 없는 분들에게 추천 하는 사이트 .
회원가입 필요 없이 무료로 볼수 있습니다.
KBS,SBS,MBC등 지상파는 물론 스포츠,EBS,게임,라디오 까지 볼 수 있습니다. 
뽐뿌분이 운영하고 있다고 들었습니다.  

2.  비소리 듣는 사이트
약간의 천둥소뢰와 함께 빗소리를 끊임 없이 재생해주는 사이트 .
추천음악도 들을 수 있는데 비소리와 함께 들으면 좋습니다.    

 3. 재능을 5000원에 사고 파는 ,<크몽>
부업랭킹1위, 5000원에 재능을 거래하는 사이트.
내가 가진 재능을 팔고 남이 가진 재능을 살 수 있는 곳.
캐리커쳐,일러스트,번역,연애상담등을 5000원에 할 수 있습니다.   

4. 그림 못그리는 사람도 화가로 만들어 주는 사이트
아무리 그림을 못그리는 사람이라도 있어! 보이는 그림으로 만들어 주는 사이트 입니다.
심심할때 아무거나 그려보기 좋아요.  

5. <툰툰툰>
다양한 웹툰들을 한자리에서 구독할 수 있는 사이트(링크 형식)
회원가입을 하면 원하는 웹툰만 볼 수 있습니다.     

6. 무료 음악 스트리밍 사이트
 로그인 하지 않아도 무제한으로 음악을 들을 수 있는 사이트입니다.
한국노래는 물론 해외의 많은 노래들도 무료로 들을 수 있습니다.
단 다운로드는 유료 입니다.  

7. 공연,전시 관람료 지원해주는 <사랑티켓>
공연의 경우 7000원, 전시의 경우 5000원의  관람료를 지원 받을 수 있는 사이트.
연간 총 10장의 사랑티켓이 부여  

8. yoUeFO (유에포)
독립영화를 모아 온라인에서 상영해주는 사이트
<똥파리>양익준 감독, <추격자,황해>,나홍진 감독들의 단편영화를 볼 수 있습니다.  

9. <올스타> 공모전
각종 분야의 공모전 소식들이 있는 곳입니다.
가장많은 공모전 정보가 있다해도 무방한곳.    

10. 고화질 배경화면사이트
해상도, 화면비율 별로 배경화면 선택 할 수 있는 사이트
예쁜사진이 많고 최신사진도 많은 사이트.

2012년 8월 20일 월요일

제로보드4에서 용량 큰 첨부 파일 설정

[참조 : http://duo830210.tistory.com ]

Centos 5.3
Php   5.1.6-3

용량이 큰 파일 업로드시 에러 발생


오류메세지  - zboard.php?id=게시판 이름

#vi /etc/php.ini
upload_max_filesize = 15M  <- 업로드 파일 최대 크기
post_max_size  = 15M   <-post 방식 업로드 파일 크기
max_execution_tile = 30 <-참조사이트에서는 0으로 설정:반응이 없으면 차단
memory_limit = 15M  <- 메모리 한계(참조사이트는 업로드 크기만큼)


2012년 7월 26일 목요일

Forms 에서 사용자 에러 처리 하기

declare
  condition_err     exception;  -- 에러 처리할 종류대로 변수를 선언한다.
begin

  -- 에러 처리할 조건을 확인하고 만족시 에러 발생
  if  item is null then
    raise condition_err;
  end if;

exception when condition_err then
  message ( '에러 발생');
  raise from_trigger_failure;
end;

2012년 5월 15일 화요일

[SAP] 함수들

- HRCM_AMOUNT_TO_STRING_CONVERT : ,와 .을 바꾸기



- BUX_DECIMAL_START : 문자 필드의 숫자에 콤마 찍기














● 자주 사용하는 String 조작 명령어
    ▶  문자열 길이(STRLEN)
       - LV_LEN에  문자열 LV_STRING 길이를 돌려준다.
          LV_LEN = STRLEN(LV_STRING). 






    ▶  문자열 갯수
          FIND ALL OCCURRENCES OF 'A' IN LV_STRING MATCH COUNT LV_CNT.

    ▶  문자열 내 특정 문자의 최초위치 값
          FIND 'A' IN LV_STRING MATCH OFFSET LV_OFF.
     ▶ 문자열 연결 (CONCATENATE)
       CONCATENATE F1 F2 F3 INTO G.
      
       어떤 구분자(Space, Comma ...)로 문자열을 연결하고 문자열 사이를 SPACE를 추가
       CONCATENATE F1 F2 F3 INTO G SEPARATED BY SPACE.


       문자열을 각 변수 고유성질 그대로 붙여준다.
       CONCATENATE F1 F2 F3 INTO RESULT RESPECTING BLANKS.

    ▶좌우 빈 공백 제거(CONDENSE)
       CONDENSE LV_STRING.
       
    ▶ 좌측 문자를 취한다.
        MOVE RESULT+0(10) TO LV_STRING.    <- LEFT
        MOVE RESULT+10(10) TO LV_STRING    <- MID

        LV_OFF =10.                                         <- RIGHT
        LV_CNT = STRLEN)RESULT).
        LV_INT = LV_CNT - LV_OFF.
        MOVE RESULT+LV_INT(LV_OFF) TO LV_STRING.

    ▶ 문자열 나눔 (SPLIT)       - AT 뒤의 문자열을 기준으로 String을 나눔.
       SPLIT G AT SPACE INTO F1 F2 F3.
       SPLIT f AT g INTO TABLE <Internal Table>.
    ▶ 문자열 치환 (REPLACE)      
       STRING = 'ABCDEFGHIJ'.
       STR1 = 'CDEF'.
       STR2 = 'KLMN'
       LEN  = 2

       전체 문자열 치환
       REPLACE <STR1> WITH <STR2> INTO STRING.
       STRING : ABCDEFGHIJ  --> ABKLMNGHIJ

       원하는 길이만큼 치환
       REPLACE <STR1> WITH <STR2> INTO STRING LENGTH LEN.
       STRING : ABCDEFGHIJ  --> ABKLMNEFGH

       
       문자열 내 특정 문자 전체 치환하고 치환횟수 알려줌

       REPLACE ALL COOURRENCES OF 'A' IN LV_STRING WITH 'B'
       REPLACEMENT COUNT LV_CNT.   


       문자열중 첫번째 문자만 치환
        REPLACE 'A' IN LV_STRING WITH 'B'.

    ▶ 대소문자 변환 (TRANSLATE)
       TRANSLATE <C> TO UPPER CASE. (대문자)
       TRANSLATE <C> TO LOWER CASE. (소문자)

    ▶ 문자열 이동 (SHIFT)
       SHIFT <C> LEFT DELETING LEADING <STR>. (왼쪽 <STR>을 지우고 이동)
       SHIFT <C> LEFT DELETING LEADING SAPCE. (왼쪽 Space를 지우고 이동)
       SHIFT <C> CIRCULAR / RIGHT / LEFT . 

       마이너스 부호를 앞자리로 이동하는 예제. ( NUM = '     1000-' )
       SHIFT <NUM> RIGHT CIRCULAR. ( NUM = '-     1000' )
       SHIFT <NUM>+1 LEFT DELETING LEADING SPACE. ( NUM = '-1000     ' )
       SHIFT <NUM> RIGHT DELETING TRAILING SPACE ( NUM = '     -1000' )