프로그래밍 QnA

complexz의 이미지

STL map을 순환문 내에서 삭제시키는 것은 참 위험한 듯 하네요...

vector, list등도 마찬가지지만...
map을 예로 들면
순환시키면서 특정 원소를 삭제시킬 필요가 있을 경우 그 방법이 어려울 뿐 더러
잠재적인 버그의 가능성이 높더군요.
가령...map의 경우 아래와 같이 다소 복잡한 방법으로 원소의 삭제가 가능한데요...

ant01의 이미지

[완료]html 에서 align=center이 반영 안되는 이유

html 에서 align=center이 반영 안되는 이유를 알고 싶습니다.

특별히 잘못한 것도 없는 것 같은데요.

html과 php로된 간단한 소스 동봉합니다.
분명히 테이블을 중앙으로 정렬했는데 왼쪽으로 나옵니다.
해결 방법 알려 주시면 감사하겠습니다.

<?php
$aa="이름:홍길동/나이:37/생일:0613/전화:357-3456/핸드폰:010-1234-4567/주소:서울시 용산구";
$bb=explode('/',$aa);
$n=count($bb);
?>
<table border=1 width=600 align=center)
<?php for($i=0;$i<$n;$i++){?>
	<tr>
		<td align=center> <?php echo $bb[$i];?>
<?php }?>
</table>
hattush의 이미지

쉘 스크립트 배열값을 계속 더해나가고 싶습니다.

df 명령어를 했을때 나온 결과를 sed와 awk를 이용해서 파일시스템부분만 잘랐습니다.

그런데 이것을 배열에 저장하고 싶은데 쉘스크립트 초보라 그런지 잘 되질 않네요.

어떻게 해야할지 도움좀 부탁드릴게요~

#!/bin/sh

for i in $(df | sed '1d' | awk '{print $1}' | sed '$d');
do
array=($i) <-------- 이 부분에서 어떻게 처리를 해야할지요??
done

echo ${array[0]}
echo ${array[1]}

redpig의 이미지

IBM AIX CPU vs Intel CPU 속도차이

IBM AIX 머신은 1GHz CPU가 5개 달려있구요..
제 PC는 인텔 듀얼코어 2GHz CPU가 1개 달려있는데요..

단순히 CPU 연산만 하는 동일한 소스를 가지고 실행해보면..
PC에선 10분밖에 안걸리는데 AIX에선 50분 가까이 걸리는데요..
클럭수만 보고 속도차이가 2배정도 나겠거니 생각했는데 5배씩이나 차이가 나는 이유를 모르겠네요.

PC에선 비쥬얼 스튜디오 2008에서 -O2 옵션을 주고 컴파일하였고
AIX에선 gcc 3.2.2에서 -O3 옵션을 주고 컴파일하였는데요..
컴파일 옵션때문일까요?

아니면, CPU 특성상 이런 속도차이가 나는게 정상인건가요?

thisnome의 이미지

raw socket 프로그래밍에서 특정 packet 을 drop 하는 방법

tcpdump 처럼 서버에 들어오는 모든 패킷을 살펴보는 프로그램을 만들어보고 있습니다.

raw socket 을 열고 recv 를 호출하면, 해당 기능이 동작하게 되는데요..

이렇게 제가 간단히 만든 프로그램에서 raw socket 으로 recv 를 한 이후에도 해당 패킷들은 서버내의 다른 프로그램들에게 잘 전달됩니다. tcpdump 를 작동시켰다고 tcpdump 가 패킷을 중간에 drop 하지 않는것 처럼 말이죠..

궁금한 점은 아래입니다. (사실 위에서 특정 프로세스가 읽고나서도 다른 프로세스가 또 읽는다는게 TCP , UDP, SCTP 등을 사용하는 프로그래밍만 해본 저로서는 좀 이상하기도 합니다. L4 에서는 특정 포트에 대해 binding 을 한 프로세스만 할 수 있어서 그런건지..)

이때, 특정 패킷에 대해서는 iptables 에서 패킷을 drop 하는것 처럼 다른 프로세스들이 읽지 못하게 하려면 어떻게 해야 하는가 입니다.

thisnome의 이미지

raw socket 프로그래밍에서 특정 packet 을 drop 하는 방법

tcpdump 처럼 서버에 들어오는 모든 패킷을 살펴보는 프로그램을 만들어보고 있습니다.

raw socket 을 열고 recv 를 호출하면, 해당 기능이 동작하게 되는데요..

이렇게 제가 간단히 만든 프로그램에서 raw socket 으로 recv 를 한 이후에도 해당 패킷들은 서버내의 다른 프로그램들에게 잘 전달됩니다. tcpdump 를 작동시켰다고 tcpdump 가 패킷을 중간에 drop 하지 않는것 처럼 말이죠..

궁금한 점은 아래입니다. (사실 위에서 특정 프로세스가 읽고나서도 다른 프로세스가 또 읽는다는게 TCP , UDP, SCTP 등을 사용하는 프로그래밍만 해본 저로서는 좀 이상하기도 합니다. L4 에서는 특정 포트에 대해 binding 을 한 프로세스만 할 수 있어서 그런건지..)

이때, 특정 패킷에 대해서는 iptables 에서 패킷을 drop 하는것 처럼 다른 프로세스들이 읽지 못하게 하려면 어떻게 해야 하는가 입니다.

declspec의 이미지

IDA 질문

IDA pro 에서 stripped 된 elf 바이너리를 분석하다보면
fd 라던가 sockaddr, port 뭐 이런식으로
변수명이 몇몇개 나타날때가 있는데
이건 IDA 가 상황을 분석해서 자기가 알아서 이름을 만드는건가요?

stripped 된 바이너리에서 얻을수있는 문자열 정보는
호출하는 라이브러리 함수의 이름 정도밖에 없지않나요?

그런데 IDA 는 몇몇 변수들의 쓰임새까지 파악해서
특히 file descriptor 는 자동으로 파악하고 stream, fd 등의
이름을 붙이는거같더라구요... IDA 의 기능인가요?

(그리고 혹시 IDA 플러그인중에 MIPS 디컴파일러는 안나올까요? x86, ARM 만 있는거같은데)

sunnyncom의 이미지

쉘스크립트 안에서 변수에 "(더블쿼트) 쒸우는 방법 문의 드립니다.

grep을 이용하는 bash 스크립트를 작성하고 있는데요...

파라미터로 "(" 나 ")"등의 문자가 포함되면 아래와 같은 에러가 납니다.

bash: syntax error near unexpected token `('

test_script 라는 스크립트가 아래와 같다고 했을 때,

#!/bin/bash
 
pattern=$1
grep --color=auto -n "$pattern" *

test_script TESTPATTERN(XYZ) 하면 위와 같은 에러가 나고요...
test_script "TESTPATTERN(XYZ)" 하면 정상적으로 결과가 나옵니다.

즉, 스크립트를 사용할 때 파라미터에 더블쿼트를 안쒸우고 입력해도 에러가 나지 않게 할려면
어떻게 해야 하는지요?

getfeus의 이미지

인터럽트와 인터럽트 핸들러 추가 관련

인터럽트와 인터럽트 핸들러를 추가 해 보려고 합니다.

버스를 통해 날아오는 데이터는 전혀 없으며, (가상 머신의 게스트머신 커널 입니다.) VMCS레지스터에 인터럽트 통지 벡터에 데이터를 직접 써 넣어 인터럽트를 동작 시킬 생각 입니다.

문제는 이 부분이 아니라, 인터럽트의 등록 자체가 되지 않는 문제 입니다.

인터럽트 추가 방법을 확인하기 위해 타이머 인터럽트를의 추가 방법을 추적/분석 해 보았습니다.

http://getfeus.iptime.org/lxr/source/arch/x86/kernel/time.c?v=3.3.1

이것이 타이머를 추가하는 정보가 들어 있는 파일 입니다.

이곳에 다음 함수들을 추가 하였습니다.

페이지

프로그래밍 QnA 구독하기