프로그래밍 QnA + 설치 및 활용 QnA

ifjesus의 이미지

우분투 커널 일부 파일만 수정한 후에 컴파일해서 설치하기

안녕하세요,

우분투 14.04 (커널 버전 3.19)에서 커널 컴파일하고 설치하는데 문제가 있어 도움을 얻었으면 합니다.

www.kernel.org 사이트에서 3.19.7 커널을 다운로드 하였습니다.
include/linux에는 커널 코드 수정에 필요한 .h 파일을 하나 추가하였구요, net/socket.c, fs/open.c 등 몇몇 파일에 코드를 추가하였습니다.

아래 명령어들은 커널 코드 수정 후에 제가 실행한 것들입니다.
$ sudo cp /boot/config-`uname -r` /usr/src/linux-3.x.x/.config

$ sudo make menuconfig

$ sudo make-kpkg clean
$ sudo make-kpkg --initrd kernel_image kernel_headers kernel_source modules_image

$ sudo dpkg -i *.deb
$ sudo reboot

mosad34의 이미지

메모리 할당관련 질문^^

안녕하세요~ 윈도우에서 처리할 질문이긴하나 고수님들에게 조언을 구하고자 이곳에 질문을 올립니다.

현재 서버에서 받은 데이터를 파일로 남기거 이외에

메모리에 쌓아 메모리 포인터로 반환하는 작업을 진행하려고 구상중에 있습니다.

근데 문제가 chunked방식으로 데이터를 내려받기 때문에 전체 내려받을 사이즈를 알수가 없는

상태입니다.

그리고 파일의 사이즈가 엄청작을수도, 또는 아주 기가단위의 큰용량으로 내려올 수 도 있습니다.

그래서 큰용량의 기준으로 virtualalloc 함수를 써서 일정 사이즈의 메모리를 할당해놓고

해당 메모리에 서버에서 내려받은 데이터를 기록하다가 작으면 다시 더 메모리를 늘려서

해당 메모리에 다시 기록 하는 방식으로 처리하려고 합니다.

근데 비슷한 질물을 올렸었는데 new나 malloc나 결과적으로 큰 메모리를 적재하게 되면 내부적으로

virtualalloc를 사용한다고 적어놓았네요..

trymp의 이미지

boost library 를 설치할 때 시스템에 적합한 boost 버젼은 무었인가요?


개발 환경은 linux fedora 64bit 를 사용중이고요

/lib/libc-2.16.so
/lib/libc.so.6 -> libc-2.16.so
 
/lib/libstdc++.so -> libstdc++.so.6.0.16
/lib/libstdc++.so.6 -> libstdc++.so.6.0.16
/lib/libstdc++.so.6.0.16

위와 같은 libc 버젼을 사용중에 있습니다.
boost version 이 다양하던데요. 어떤 버젼이 제 시스템의 libc 와 잘 호환되는지 궁금합니다.

그냥 최상위 버젼 깔아도 문제가 없는지 ?
호환성 문제가 생기지 않을지?

고수님들의 조언 부탁드립니다.

rkdckddn77의 이미지

heartbeat나 다른 방법을 통해서 3개의 장비를 이중화하고 싶어요.

안녕하세요~ 요즘 이중화때문에 골치가 아프네요.

2개의 장비를 이용해서는 heartbeat나 소켓을 통해서 Active/Active, Active/Standby는 구현할수 있습니다.

heartbeat나 다른 방법을 통해서 3개의 장비를 이중화를 구성하려고합니다. 구성은 Active/Active/Standby나 Active/Standby/Standby로 하고싶어요.

찾아봐도 이중화에 3개의 장비를 사용하여 구성하는 방법은 아예 없더라구요.

그래서 heartbeat로 시도를 해보았습니다.

저는 Virtualbox로 가상 장비 3개를 구성했습니다.

사양은
OS : Redhat 6.3 64bit
RAM : 2GB
HDD : 20GB
랜카드 : eth0,1,2,3

먼저 Heartbeat로 해봤는데(Active/Active/Standby)로 구성하려고 파일을 수정했습니다.
2개와 3개는 다른거같아요. 액티브가 2개가 될지는 모르겠는데 일단 해보았습니다.

ha.cf파일

wflore의 이미지

다중 클라이언트 접속 후, 값 반환 문제

안녕하세요
현재 소켓 통신에 대해 공부중인 학생입니다.

현재 서버에 3개의 클라이언트가 접속하여,

3개의 클라이언트가 주는 int 값들을 서버에서 합하고,

서버에서 다시 반환해주는 코딩을 짜고 있습니다.

예로,

client1 ->2
client2 ->4
client3 ->6

값을 보내면,
서버는 12를 각 client1,2,3한테 반환하는 프로그래밍입니다.

소스코드 내용은

main 함수에서

'int cli_sockfd[3];'

로, 3개의 소켓 fd 값을 받아놨고요.

'pthread_t thread_t[3];'

다중 클라이언트 접속을 위해, Thread id 받는 인자를 3개 만들어두었습니다.

서버에서 값을 반환할때는,

trymp의 이미지

정규표현식을 사용할 때 regex_t 가 thread safe 한가요?

Main thread
  regex_t	preg;
  regcomp(&preg, exp_str, REG_EXTENDED | REG_NEWLINE);
 
 
Sub threadA
  regexec(&preg, match_str1, 0, NULL, 0);
 
Sub threadB
  regexec(&preg, match_str2, 0, NULL, 0);

위와 같이 Main thread 에서 regex_t handler 를 미리 컴파일해 놓고

sub thread A와 B 가 같이 사용할 때,

side effect 가 생기거나 버그가 생길 확률은 없나요?

regex_t 를 공유해서 쓸 때 thread safe 상 문제가 없는지 궁금합니다.

고수님들의 조언 부탁드립니다.

ddk7788의 이미지

CentOS 6 버전 사용중인데 좀 심각한 오류가 발생해서 질문드립니다.

CentOS 6 버전 사용중 부팅이 안되서 부팅오류 수정후 들어가보니 좀 심각한 데이터 손상으로 보이는 상황이 발생했습니다. 아래는 상황 정리입니다.

1. 데이터 파일 용량은 존제하나 vi로 열었을때 파일이 아무것도 기록이 안되있음
2. 위와같은 사항이 일어나는파일이있고 일어나지 않는 파일이 있음.
3. 소프트웨어로 하드를 레이드시스템 적용해서 사용중인데 총 4개의 하드를 2개+2개 로 묶어서 사용중인데 한개의 레이드 시스템은 문제없으나 나머지 하나의 레이드 시스템에서 문제 발생한듯 보임.
4. e2fsck/fsck 를 이용해서 오류수정및 검사는 완료했는데도 오류가 발생.
5. ftp를 이용해서 자료를 받으려고 했으나 오류로 인해 전송 불가.

위와같은 사항이 발생되었습니다. 콘쉘이나 다른쉘도 실행시 오류가 발생했구요;; 한개의 레이드 시스템에서만발생한것 같습니다.
혹시 이럴때 어떤게 문제인지 궁금합니다. 아래는 추가적인 질문사항입니다.

ponicon3의 이미지

#define 사용 시 멤버 변수를 for문 인자로으로 받을 수 없나요?

다음과 같은 코드는 정상 동작 합니다.
#if 1
#define INT_i(n) int i##n = n;
#define SUM(res, n) (res) += i##n
#define PRINT(n) printf("i%d = %d\n", n , i##n)

int main()
{
int res=0;
int i;

for(i=0; i<2; i++)
{
INT_i(i);
PRINT(i);
SUM(res,i);
}

printf("결과 : %d\n", res);

return 0;
}
#endif

**실행결과**
i0 = 0
i1 = 1
결과 : 1

leeki07의 이미지

대용량 파일의 내용은 살리고 용량은 줄이는 법

계산기에 자동 저장되는 error.log가 1Gbyte이상이 되어 있음을 발견하였습니다.
완전히 지우기는 부담스럽고 내용만 줄이고 싶어서 vi로 열어 보았으나
수분을 기다려도 열리지가 않네요.
최근 log는 남기고 용량을 줄이고 싶은데 방법이 없을까요?

tail -n 500000 error.log > gomi
cat /dev/null > error.log
cat gomi >> error.log

요렇게 해도 될까요???

ivory0321의 이미지

중위표기식을 후위표기식으로 변환

#include
#include
#include
using namespace std;
stack s;
char print[99999];
int i=0;
int precedence(int op){
if (op == '(') return 3;
if (op == '+' || op == '-') return 1;
if (op == '*' || op == '/') return 2;
else return 0;
}
int cal(char a){
if(a=='('){
s.push('(');
}
else if(a==')'){
while(s.top()!='('){
print[i]=s.top();
i++;
s.pop();
}
s.pop();
}
else if(a=='+'||a=='-'||a=='*'||a=='/'){

페이지

프로그래밍 QnA + 설치 및 활용 QnA 구독하기