프로그래밍 QnA + 설치 및 활용 QnA + 강좌 + 뉴스, 새소식 + 토론, 토의 + 자유 게시판

dymaxion의 이미지

Hodong님 관련 다툼을 보면서 느낀 점

듣보잡인 제가 중간에 끼어들어 이러쿵 저러쿵 할 일은 아닌 것 같지만, 지켜보다 보니 좀 딱하다는 생각이 들어서 나름의 느낀 점을 써 봅니다.

절대 나쁜 의도는 없으며, 원만하게 화해가 되었으면 하는 의도이오니 좋은 뜻으로 받아들여 주셨으면 합니다.

일단 저는 Hodong님과, 또 Hodong님과 다툼을 하시는 것으로 보이는 emptynote님, 세벌님 모두와 아무런 인연이 없으며 단지 FOSS를 즐겨 사용하는 사용자의 한 사람일 뿐이라는 점을 밝혀 둡니다.

1. Hodong님의 입장에 대한 이해

libhwp 코드는, 사용자 편의성 측면에서는 아직 부족함이 있겠지만, 사례가 굉장히 희귀한 시도라는 점에서 큰 의미가 있는 활동이라고 평소 느껴왔습니다. 과거에 누군가 이 코드를 악용해서 좋지 못한 사건이 있었다는 점도 잘 알려져 있는데요, 제가 당사자였더라도 상당한 환멸을 느낄만한 일었다고 생각합니다.

익명 사용자의 이미지

멀티 쓰레드와 멀티 코어에 대해 궁금한게 있습니다.

프로그래밍을 할때 성능에 대해 생각할 때 병렬 처리 역시 하나의 최적화 방법중 하나인데.

이를 위해 결국 멀티 프로세싱을 할지, 멀티 쓰레드를 할지 결정하는거잖아요?

결국 context switching 등에서 조금 더 이점이 있는 쓰레드를 사용하게 되는데요.

근데 하나 궁금한건 제가 배울때는 CPU에서 말하는 core가 하나의 프로세스가 동작하는 아키텍쳐로 알고 있습니다.

그럼 코어가 6개더라도 그냥 for로 무한 루프를 돌리는 프로그램을 만든다면 당연 1개의 코어만 해당 프로세스를 동작 시키겠죠? 멋대로 코어를 여러개 사용해서 병렬 처리 할 것같지는 않습니다.

그럼 1개의 프로세스가 100개의 쓰레드를 가지고 있고 1개의 코어가 16개의 쓰레드를 지원한다고 가정해보겠습니다.

그럼 1개의 코어가 16개의 쓰레드가 동시에 돌아가는건 당연하겠지만 나머지 84개의 쓰레드를 다른 코어가 지원해 줄까요? 만일 안됀다면 1개의 코어만 동작하고 나머지 5개 코어는 놀게 됀다는 결론이 나오는데...

익명 사용자의 이미지

리눅스 awk 프로그램 코드가 이해가 안갑니다.

BEGIN {
    FS="[^a-zA-Z]+"
}
{
    for (i=1; i<=NF; i++)
        words[tolower($i)]++
}
END {
    for (i in words)
        print i, words[i]
}

필드 구분자를 알파벳을 제외한다는 거 같은데 +가 붙은 이유와
첫 번째 for문에서 words[tolower($i)]++ 이 부분이 잘 이해가 가지 않습니다. tolower함수?가 전달받은 인수를 소문자로 하는 것은 알겠는데 words라는 배열이 선언 없이 쓰이는 것도 이상하고 []안에 스트링을 적고 1을 증가시킨다는 것이...이해가 안갑니다.
emptynote의 이미지

RPC 프레임워크 맨땅에서 헤딩하기 3탄

부재 : 큐와 쓰레드 그리고 메시지 순서 보장

나의 첫번째 서버는 cpu 100% 치고 올라가는것도 문제지만

또 다른 문제를 갖고 있습니다.

나의 첫번째 서버는 쓰레드간 큐를 공유하는 방식으로

1개이상 입력 메시지 처리기 -- 1개 큐 -- 1개이상 비지니스 로직 처리기 -- 1개 큐 -- 1개이상 출력 메시지 처리기

와 같은 구조를 갖습니다.

이렇게 설계한 이유는 병렬성을 극대화 하기 위해서였습니다.

그런데 여기서 문제가 있습니다.

채팅을 한다고 합시다. A 가 첫번째 메시지를 보낸후 다시 두번째 메시지를 보내면

같은 채팅방에 있는 B 한테 A 의 첫번째 메시지와 두번째 메시지를 순서대로 받는것을 보장 할 수 있을까요?

답은 도착한 메시지 순서를 보장 할 수 없다 입니다.

왜냐하면 동일한 로직을 수생하는 쓰레드라도 큐에 의해 먼저 깨어난 쓰레드의 일부분만 실행되고 그 다음 로직은 언제 실행될지 모릅니다.

foruses의 이미지

쉘 스크립트를 사용하여 문자를 검색하고 추출한 후 파일로 저장하는 방법?

435 3190
435 3293
435 2982
132 1023
132 9023
132 3982
132 30223
999 53323
999 232982
....
....
....
첫번째 컬럼의 숫자가 같은것만 추출해서 자동으로 (자료의 양이 매우 많고 추출될 열의 개수도 다릅니다.) 독립된 파일로 저장하려면 어떻게 해야 하나요?
가령 아래처럼요. 감사합니다.

$cat a1.dat
435 3190
435 3293
435 2982

$cat a2.dat
132 1023
132 9023
132 3982
132 30223

$cat a3.dat
999 53323
999 232982

익명 사용자의 이미지

유닉스 crontab에 대해 질문이 있습니다.

crontab을 사용 하려고 간단하게 crontab -e를 이용하여 다음과 같이 적었습니다.

happybright의 이미지

윤성우 자료구조

윤성우의 c++과 자료구조를 병행하려 하는데요, c++는 예제랑 문제풀어보면서 하면 되는데 자료구조는 어떻게 공부를 해야할지 모르겠더라고요

일일이 타이핑하기에는 양이 꽤 많던데..활용도 아니고 자료구조의 구조에 대한 설명이 위주라 어떻게 해야할지 감이 안오더라고요. 그냥 읽고 이해를 하고 넘어갈까요? 아니면 일일이 타이핑을 하는게 맞을까요?

oversoul3의 이미지

멀티스레드 서버 클라이언트 구분 방법이 궁금합니다.

종류가 다른 2가지의 클라이언트가 있습니다. 클라이언트가 서버로 연결요청을 하면 스레드를 만들어 스레드와 클라이언트가 통신하도록 서버를 만들고 싶습니다. 연결요청이 들어올 때 클라이언트의 종류를 구분할 수 없는걸로 아는데 그럼 연결이 된 후엔 어떻게 클라이언트마다 동작을 달리할 수 있는지 알고 싶습니다.

익명 사용자의 이미지

소켓 수신 속도

안녕하세요
소켓 수신 속도에 대해 궁금한 것이 있어 질문 합니다

1. 발신하는쪽에서 100ms 마다 주기적으로 send (일방적으로 계속 쏴줌)
2. 수신은 1ms 마다 recv(받기만함)
3. 패킷 크기는 약3406 byte(고정)

즉, 100ms마다 보낸 정보를 손실없이 처리하고자 하는데
실제 recv 시간이 100ms(+-15ms 오차범위내) 마다 잘들어오다가
특정구간(포인트를 못찾겠습니다)에서 3sec정도 늦게 들어오는 현상이 있는데..
늦게 수신 된것인지, 발신을 늦게한건지(발신 쪽에는 보낼때의 시간정보를 보낼수 없는 상황)

특이한게 늦게들어온 패킷 이후의 패킷은 1ms씩 recv가 와르르~ 하고 되는데
1초정도 후에 다시 100ms마다 recv 합니다
어떤 느낌이냐면 억지로 뭘 자꾸 계속 집어 넣어서 배출하는 입구가 막혔 었는데
막힌곳이 갑자기 뚫려자 와다닥 하고 쏟아지는 느낌 입니다

페이지

프로그래밍 QnA + 설치 및 활용 QnA + 강좌 + 뉴스, 새소식 + 토론, 토의 + 자유 게시판 구독하기