반응형

기본적으로 치즈는 임산부에게 매우 좋은 음식으로 알려져 있다. 치즈는 칼슘이 많이 들어 있고, 태아는 성장함에 따라 골격의 발달에 필요한 칼슘을 많이 필요로 하며, 임산부가 칼슘 섭취를 충분히 하지 못하면 나중에 중년기에 골다공증 같은 뼈 관련 질환에 시달리는 위험도 생긴다. 따라서 일단은 우유, 치즈 등을 기회가 있을 때마다 섭취하는 것은 좋다.


하지만 모든 치즈가 다 임산부에게 좋은 것은 아니다. 치즈 중에서도 살균 과정을 거치지 않는 소프트 치즈의 경우에는 "리스테리아균"이 많이 서식한다. 리스테리아균은 식중독 미생물로 분류되어 있고 [1] 감염시 발열, 근육통, 오심, 설사 등의 증상이 있다.

임산부에게는 감기와 비슷한 증상을 보이지만, 태아에게는 심각한 영향을 미친다고 하고, 유산, 사산의 원인 중 하나로도 분석되고 있다. 리스테리아 감염으로 인해 자궁 내 태아 사망에 대해 분석한 논문[2]을 보면 태아에게 아주 심각한 영향을 주는 것을 확인할 수 있다. 산모가 전체 리스테리아 감염의 1/3이나 된다고 하는 것을 보면, 일반인에 비해서 임산부가 훨씬 리스테리아 감염에 면역적인 측면에서 더 취약한 것 같다. 그만큼 태아에게 더욱 위험하다는 의미도 된다.


리스테리아균의 원인식품 중에 원유와 살균처리되지 않은 우유가 있고 치즈도 이런 우유를 상온에서 발효시켜서 만들게 된다. 소금을 치고 냉장보관을 하더라도 잘 적응하기 때문에 소프트치즈는 임산부가 반드시 피해야 할 음식이다. 소프트치즈의 종류는: 페타 치즈, 염소젖 치즈, 브리 치즈, 고르곤졸라 치즈, 까망베르 치즈 등이 있다.


하지만 어떤 치즈든 간에 고온살균, 저온살균 등을 거친 가공 치즈는 (e.g. 흔히 비닐로 낱개 포장된 체다치즈 같은 것들) 임산부가 먹어도 안전하다고 하니 체다치즈를 즐겨 먹는 것은 오히려 칼슘 섭취에 도움이 된다.


그리고 소프트 치즈라고 하더라도 피자의 경우에는 고온에서 굽는 동안 박테리아와 세균이 모두 살균되므로, 충분히 익힌 피자 또한 괜찮다고 한다 [3]. 하지만 피자가 식고 나서 상온에 오래 방치되면 외부로부터 세균과 박테리아가 다시 유입되고 번식할 수 있으므로 주의해야겠다.



<참고자료>

[1] 식중독 미생물의 특성: 리스테리아균 http://www.mfds.go.kr/fm/index.do?nMenuCode=24

[2] 신재준 외, "임신 중기의 리스테리아 감염으로 인한  자궁내태아사망 1예", Korean Journal of Obstetrics and Gynecology,

Vol. 53, No. 3, March 2010.

[3] 임신 중 섭취를 피해야 하는 치즈가 있나요? http://www.johnsonsbaby.co.kr/babycenter/article/article_view.asp?CateNo=6&TopicNo=4&ArticleNo=769


반응형
블로그 이미지

Bryan_

,
반응형

제목에 적힌 그대로, 저는 전산학과 박사과정(고년차이고, 학칙상 이미 말년차이지만, 졸업이 가시적이지는 않은..ㅋㅋ.. ㅠㅠ)입니다. 그리고 2012년에 결혼을 하고 아내와 함께 나름 즐거운 결혼생활(동의어: 소꿉놀이ㅋㅋ)을 하고 있습니다.


20대의 끝자락을 바라보는 요즘, 졸업시기를 확신할 수 없는 대학원생의 위치에서 가정을 이루는 구성원 중 하나인 "자녀"를 무기한 연기하는 것이 과연 바람직한지에 대해서 아내와 꽤 긴 시간 의견을 조율했던 것 같습니다. 그리고 마침내, 만약 우리에게 아기가 허락될 경우 그 새로운 가족 구성원을 기쁘게 맞이하기로 했고, 그렇게 마음을 먹은지 얼마 지나지 않아 예상한 대로 아내의 임신 소식을 들을 수 있었습니다. :)


저는 남자의 입장에서, 임신과 출산 준비를 돕는 남편으로써, 특별히 기억해야 할 것들을 중심으로 이곳에 기록하고자 합니다. 일차적으로는 앞으로 새롭게 맞이하기로 결심한 최대 4명의 아이들을 준비하는 제가 잊지 않기 위해서이고, 이차적으로는 어떻게 해야 할까 고민하며 검색하고 있을 초보 남편들께 작게나마 정보를 제공하기 위함입니다.

그러면 건강한 아기를 만나는 그 순간까지 cheers!



반응형
블로그 이미지

Bryan_

,
반응형

*테스트 환경: 리눅스 (Ubuntu 11.04 이상),  gcc version 4.5.2 이하


C 프로그래밍을 하면서 유난히 혼동하기 쉬운 데이터 타입이 있다면 character array (char [])와 character pointer (char*)일 것 같다. 특히 함수에서 call by reference를 쓰면서 초기화를 해야 하는지, 메모리 할당을 해야 하는지에 대한 확신 없이 어림짐작으로 구현하다 보면 잘못된 메모리 접근으로 인해 Segmentation Fault를 심심찮게 보기도 한다.


사실 교과서에서 배운 바에 의하면 char array는 이미 메모리에 일정 크기가 할당된 변수이고, 해당 char array의 첫번째 인덱스가 char pointer이다. 코드상에서 char var[100]; 이라고 쓰면 100 바이트의 문자열이 생성되는 반면, char* var; 라고만 쓰면 데이터를 기록할 메모리 영역은 없고 포인터만 존재하게 된다.


본 글에서는 call by reference로 넘기는 문자열이 메모리가 할당된 char array여야 하는 경우와, 메모리를 할당할 필요가 없는 char pointer여도 되는 경우의 차이를 기록하였다. 여기에 쓰인 형태 외에도 문자열을 call by reference로 처리하는 다양한 방법이 존재할 수 있으며, 단지 여기서는 경험을 기반으로 한 기록임을 명시해 둔다.


먼저 파라미터로 메모리를 할당할 필요 없이 그냥 char pointer를 써도 되는 경우는, 함수 내부에서 새로운 문자열을 생성하고 해당 문자열이 local variable(지역변수)이 아닌 경우이다. 예를 들어, 아래와 같이 strtok 함수가 쓰이는 경우에는 char pointer만 있으면 된다.

void funcA(char* input, char** output){

    *output = strtok(input, " ");

}


int main(){

    char* split;

    funcA("11111 22222", &split);

    printf("%s\n", split);


    return 0;

}

(출력)

11111


strtok의 경우에는 별도로 메모리를 할당할 필요가 없어서 위와 같이 포인터만 지정해 주면 call by reference로 값을 얻을 수 있다. 이외에도 더 있겠지만 따로 조사하지 않았기에 추후에 내용을 보완하고자 한다.


위와 반대로, 함수 외부에서 char array를 생성/초기화하고 나서 해당 변수의 포인터를 함수에 넘겨줘야 하는 경우는 아래와 같다. 여기서 sprintf 함수는 자체적으로 새로운 문자열을 생성하지 않기 때문에 미리 정의된 문자열(char array)을 써야 한다. 이외에 비슷한 예로 strcpy, strcat 등이 있다.

void funcB(char* output){

    char* a = "11111";

    char* b = "22222";

    sprintf(output, "%s, %s", a, b);

}


int main(){

    char merged[10];

    memset(merged, 0, 10); // 배열값 초기화


    funcB(merged);

    printf("%s\n", merged);


    return 0;

}

(출력)

11111, 22222



반응형
블로그 이미지

Bryan_

,
반응형

Javascript를 활용하여 매 초마다 시간을 변경해서 웹페이지에 반영할 때 유용하게 쓸 수 있는 함수로 setInterval이 있다.

아래와 같이 실행할 함수 이름과 밀리초(ms) 단위의 시간을 파라미터로 활용할 수 있다. Chrome(구글 크롬) 브라우저에서 테스트한 결과, 실행할 함수는 "(쌍따옴표) 또는 '(따옴표)로 둘러싸야 정상적으로 실행이 되었다.

var timerID;

timerID = setInterval( "function_to_run()", 5000 );


setInterval은 한번 실행하고 멈추는 것이 아니고 파라미터로 입력한 주기마다 반복 실행하며, clearInterval 함수로 중지시킬 수 있다. 실행할 함수에 파라미터를 적용할 수는 없기 때문에, 파라미터가 있는 함수를 setInterval로 쓰고 싶다면 아래와 같이 쓸 수 있다. 원인을 파악하지 못했지만, 파라미터가 있는 함수를 파라미터로 쓸 때는 "(쌍따옴표)나 '(겹따옴표)를 쓰면 안된다.

var timerID;

timerID = setInterval( function(){ function_with_params(foo, bar); }, 5000 );


setInterval과 clearInterval을 활용하여 시계 형식으로 제한된 시간을 감소시키는 타이머 코드의 예제는 다음과 같다.

<script language="JavaScript">

var timerID; // 타이머를 핸들링하기 위한 전역 변수

var time = 119; // 타이머 시작시의 시간


/* 타이머를 시작하는 함수 */

function start_timer() { 

timerID = setInterval("decrementTime()", 1000);

}


/* 남은 시간을 감소시키는 함수 */

function decrementTime() { 

var x1 = document.getElementById("time1");

var x2 = document.getElementById("time2");

x1.innerHTML = toMinSec(time);

x2.innerHTML = toMinSec(time);


if(time > 0) time--;

else { 

// 시간이 0이 되었으므로 타이머를 중지함

clearInterval(timerID);


// 시간이 만료되고 나서 할 작업을 여기에 작성

document.form.submit(); // 예: 강제로 form 실행

}

}


/* 정수형 숫자(초 단위)를 "시:분:초" 형태로 표현하는 함수 */

function toHourMinSec(t) { 

var hour;

var min;

var sec;


// 정수로부터 남은 시, 분, 초 단위 계산

hour = Math.floor(t / 3600);

min = Math.floor( (t-(hour*3600)) / 60 );

sec = t - (hour*3600) - (min*60);


// hh:mm:ss 형태를 유지하기 위해 한자리 수일 때 0 추가

if(hour < 10) hour = "0" + hour;

if(min < 10) min = "0" + min;

if(sec < 10) sec = "0" + sec;


return(hour + ":" + min + ":" + sec);

}

</script>


반응형
블로그 이미지

Bryan_

,
반응형

OS: Linux 11.04 (32bit)

확인해본 USB 무선랜카드: IPTIME (Ralink) RT2501/RT2573 Wireless Adapter, IPTIME N150UA (Ralink RT3070)


노트북에 USB 무선랜카드를 하나씩 추가해서, 멀티 라디오 라우팅을 테스트하다 보면 가끔 USB 무선랜카드로부터 아무 패킷도 받지 못하는 현상이 발생한다.

이 때 ifconfig를 통해서는 무선랜 인터페이스가 정상적으로 인식되며, 고정IP도 정상적으로 세팅되어 있다. 하지만 프로그램 상에서 테스트해 보면 아무 패킷도 받지 못할 뿐더러 아무 패킷도 보내지 못한다.


확실치는 않지만, 그 때마다 iwconfig를 통해서 보면 애드혹 네트워크에서 ESSID 영역이 "Not associated"로 되어 있었던 것 같다. 단순히 노트북을재부팅하는 것만으로는 여전히 위와 같이 먹통인 상태인 것을 확인했다.


현재로써는 두 가지 해결방법이 가장 무식하지만 가장 확실하다.

1) USB 무선랜카드를 분리하고 잠시 있다가 다시 연결 (USB plug out + plug in)

2) 노트북을 재부팅하지 말고, 아예 전원을 완전히 껐다가 다시 부팅 (shutdown + turn on)


전공이 전자과도 아니고 장비에 익숙하지 않아서 원인을 알 수 없지만,

굳이 추측하자면 컴퓨터에 연결된 채 오랫동안 많은 명령(사실 많은 트래픽도 아니다. 나는 단지 라우팅 프로토콜을 구현해서 plain text 형태의 라우팅 메세지, ping 메세지 정도만 반복적으로 주고받았으니까.)을 보내다 보면 여전히 낮은 확률이지만 먹통 현상이 발생한다.




반응형
블로그 이미지

Bryan_

,