프랑스 PIP사가 생산한 실리콘 가슴성형 보형물 파동이 많은 ‘성형미인’을 긴장시키고 있습니다. 프랑스 당국은 최근 ‘PIP사가 생산한 실리콘 가슴성형 보형물이 암을 유발하는 등 부작용이 심각함’을 인정하고 “이 제품을 전면 퇴출시킬 것”이라고 선언했죠. 확인된 피해자만 프랑스에 3만 명, 영국 5만 명 등인데, 합법적 통로를 거치지 않고 유통된 것까지 합치면 전 세계적으로 수십 만 명의 피해자가 발생할 것으로 보입니다(관련 기사 48쪽).
가슴성형 보형물은 여러 가지 종류가 있습니다. 이번에 밝혀진 PIP사의 보형물은 공업용 실리콘으로 만들어 잘 터지고 암 발생 가능성이 있는 물질을 함유해 문제가 됐죠. 실제 프랑스에서는 이 제품을 사용한 여성들이 암에 걸려 세상을 떠나거나 투병생활을 하고 있습니다.
현재까지 PIP사의 공업용 실리콘 보형물이 국내에 공식적으로 수입됐다는 증거는 없습니다. 식품의약품안전청(이하 식약청)도 “국내에는 이 제품을 판매 허가한 적이 없어 내국인은 안전하다”고 공식 해명했습니다. 하지만 공식 루트로는 “없었다”고 말할 수 있을지언정 과연 이 제품에 대해 내국인이 안전하다고 확언할 수 있을까요? 매년 비의료인에 의한 성형수술 사건이 터지는 우리 현실에서는 적잖은 걱정이 앞서는 게 사실입니다. 비록 PIP사 제품은 아니라 하더라도 다른 실리콘 보형물은 얼마나 안전한지도 의문이고요.
더욱 큰 걱정은 비록 이번에 문제가 된 제품은 아니지만 PIP사가 생산한 다른 종류의 보형물이 1998년부터 2002년까지 국내 많은 성형외과에서 사용됐다는 점입니다. 하이드로겔이라는 이 보형물은 잘 터지는 데다 주변 조직을 녹이는 부작용을 일으킨다는 학계 보고가 있었죠. 실제 2009년 3월 대한외과학회지는 ‘하이드로겔 유방보형물 파열 시의 임상적 소견’이라는 논문을 통해 그 부작용을 알렸습니다. 그래서 그런지 이 제품은 어느 날 갑자기 성형업계에서 슬그머니 자취를 감췄습니다.
더 이해하기 힘든 점은 이 제품이 미국 식품의약국(FDA) 허가를 받지 못했는데도 우리 식약청이 사용허가를 내줬다는 것입니다. 미국 FDA는 의약품, 의료기기, 재료용품의 허가에 대해 까다롭기로 유명하죠. 미국 FDA에 대한 우리 식약청의 신뢰는 대단합니다. 그런데 왜 그랬을까요? 이 제품이 시장에서 사라지기까지 피해를 입은 사람은 또 없을까요? 우리 식약청의 발 빠른 대처를 기다려봅니다.
컴맹 : 진화의 시작
노드를 더 우아하게 해주는 주변 프로그램인 npm 을 이해하도록 해보자. npm 은 Node.js Package Manager 로 단어 그대로 패키지 관리 를 돕는다. 언뜻보면 python 의 pip 와 그 형상이 비슷해보이기도 한다. 하지만 npm 은 pip 처럼 패키지를 설치하는 기능을 포함하는 것으로 이해하는게 맞다. 이 장황한 이야기를 풀어내기 위해 API 서버를 노드 프로그램으로 만들어가며 이야기 하도록 하자. 우선 노드 프로젝트를 시작할 때 server.js 부터 만드는게 아니라 npm 을 이용해서 프로젝트를 생성한다.
이렇게하면 몇가지 문답을 거친후 디렉터리에 package.json 파일이 생성된다. 대략 Npm 이야기 가볍게 훑어보고 적당한 값을 입력하자. 빈 값으로 엔터를 입력하게되면 default 값으로 채워진다. 후에 변경할 수 있으니 적당히 넘어가면 된다.
package.json 파일은 매우 특수하게 다뤄지는데 npm 을 이용해서 Npm 이야기 프로그램을 시작 할 수 있고 혹은 배포할 때도 사용된다. 파일의 내용은 아래에서 다시 다루도록 하고 일단 계속 진행하도록 하자. server.js 을 아래와 같이 코딩하도록 하자. 여기서 소스 내용을 이해할 필요는 없다. 지금 이 글은 npm 을 이해하기 위한 글이라는 것을 잊으면 안된다.
이 상태로 프로그램을 구동시킬텐데 실행 명령어를 지정하기 위해서는 아래와 같이 package.json 을 수정해야 한다. npm 을 사용하지 않았더라면 node server.js 로 끝났을 것이지만 npm 을 사용한다는 것은 이를 훨씬 더 우아하게 만들어준다.
sciprts 라는 부분에 start 를 넣어주고 node 로 실행시킬 파일명을 명시해줬다. 이제 npm 명령어를 통해 노드를 실행시킬 수 있게 된 것이다.
코드에는 오류가 없지만 놀랍게도(!) 친절한 에러 메시지를 만날 수 있을 것이다. 에러 메시지를 살펴보면 express 라는 모듈이 설치되지 않았다는 것을 확인할 수 있다. 이제 python 의 pip 처럼 npm 을 사용해서 express 설치해주면 되겠다.
install 뒤에는 설치할 모듈의 이름을 쓰게된다. 이렇게하면 node_module 디렉터리가 (없다면) 생성되고 그 밑에 Npm 이야기 express 관련된 파일들이 설치된 것을 확인할 수 있다. 하지만 노드 프로그램은 기본적으로 이 디렉터리를 포함시키지 않고 배포한다. 하물며 노드를 Git 으로 형상관리 할 때 node_module 디렉터리는 .gitignore 로 처리해버린다. 그렇다면 배포 후 처리는 어떻게 될까? 이때 필요한 옵션이 --save 이다.
이렇게하면 package.json 파일에 express 의 내용이 기록된다 ( node 9.x 버전 이상부터는 옵션을 넣지 않아도 default 로 package.json 에 저장된다 ) . 자, package.json 의 또 다른 기능이 나온다. 배포된 패키지에 아래 명령처럼 모듈을 생략한 상태로 npm 을 실행시키면 package.json 에 기록되어 있는 모든 모듈이 자동으로 설치 된다.
배포는 이런식으로 된다. 모듈 삭제는 install 과 마찬가지로 uninstall 로 모듈 이름을 지정해주면 된다. 프로젝트에 모듈을 테스트하느라 이것저것 많이 설치되서 node_module 디렉터리가 지저분해졌다면 배포나 형상관리에 올릴 때는 반드시 uninstall 해주도록 하자. ( package.json 에서도 함께 삭제 된다)
핍 이해하기
ansible playbook에 대해서만 튜토리얼 형식으로 간단하게 다시 정리합니다. 튜토리얼이나 블로그를 많이 봤는데 일단 한번 동작하는걸 확인하고 모르는게 있으면 구글링으로 확장해서 찾아나가는 저로써는 뭔가 이해하기가 쉽지가 않더군요.
ansible은 여러 시스템들의 환경 관리를 해주는 오픈 소스입니다. 특정 환경변수를 여러 서버에 배포하거나, 특정 동작을 여러 서버에서 실행시키도록 하거나 하는데 쓰이는 infra관리 오픈소스 툴입니다.
playbook은 https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html#playbook-syntax 의 playbook syntax에도 나와있듯이 yml을 작성하고 ansible-playbook ~~.yml로 실행시키면 됩니다.
현재 playbook관련된 yml을 infra라는 디렉터리 안에서 전부 관리합니다.
infra라는 디렉터리 안에 ansible.cfg파일과 inventory, roles 두 개의 디렉터리가 있습니다. 첫 예제로 만든 디렉터리의 구조를 캡쳐하면 아래와 같습니다.
ansible.cfg파일은 ansible의 기본적인 설정들을 세팅해주는 cfg파일인데 아래와 같이 설정되어 있습니다.
infra/ansible.cfg
infra/inventory/hosts
이런식으로 그룹별로 정리를 해놨습니다.
이제 테스트를 해봅시다. 간단하게 hello world가 들어있는 텍스트파일을 모든 서버로 배포한다고 가정해봅시다.
첫번째로 infra/roles/copy-test라는 디렉터리를 만들고 copy-test 디렉터리 안에 files디렉터리와 tasks디렉터리를 생성합니다.( infra/roles/copy-test/files, infra/roles/copy-test/tasks가 생성됨. )
files디렉터리 안에 hello.txt를 만들고 내용을 hello world!로 채워넣습니다. 밖으로 나와 tasks디렉터리로 들어가 main.yml을 만듭니다. 이런식의 구조를 만드는 이유는 바로 위에 참조한 공식 docs에도 나와있지만 ansible이 실행시 기본적으로 참조하는 위치나 파일 이름이 이것이기 때문입니다.
어쨌든 infra/roles/copy-test/tasks/main.yml을 열고 yml파일을 작성합니다. playbook yml syntax는 다음과 같습니다.
이것과 구글링을 해서 copy예제를 만들어봅니다.
infra/roles/copy-test/tasks/main.yml
-name은 이름이고, copy는 copy module을 사용하겠다는 뜻입니다.
src의 hello.txt는 위에서 infra/roles/copy-test/files/hello.txt 에 만든 hello.txt를 자동으로 참조하도록 하게 할겁니다.(아래에서 추가설명) dest는 우리가 보낼 서버의 /home/hello.txt위치에 우리가 만든 hello.txt가 생성된다는 의미입니다. owner와 group은 실제 계정정보를 넣어줍니다. mode는 눈치챘겠지만 file mode입니다.
이제 지금까지 만든 roles를 사용하기 위한 playbook yml을 만들어봅시다. 위의 role Npm 이야기 directure structure 캡쳐본에서 webserver.yml같은걸 만들겁니다. infra/copy-test.yml을 만듭니다.
infra/copy-test.yml
여기서 hosts의 myserver 는 맨 위에서 infra/ansible.cfg의 inventory에 path를 지정했던, infra/inventory/hosts내부의 myserver그룹의 서버에 적용한다는 의미입니다. (myserver그룹은 위에서 찾아보면 10.10.10.10, 10.10.10.11, 10.10.10.12임. )
roles에 있는 copy-test는 위에서 만들었던 infra/roles/copy-test를 사용한다는 의미입니다. 위에서 hello.txt를 참조한다했는데 roles을 copy-test로 설정해줬으므로 copy-test 내부의 files 폴더를 자동으로 참조하게 됩니다.
infra디렉터리 안에서 ansible-playbook copy-test.yml으로 playbook을 실행시키면 gathering fact이후에 제가 위에서 작업한 task를 실행시키는 로그가 나옵니다. 아래는 일부 결과를 캡쳐했습니다.
이런식으로 잘되었고 새로 적용이 되면 changed=1, 이미 있어서 특별한 변화가 없 으면 changed=0등으로 로그가 찍힙니다. 우리가 새로 하려고 했던 copy작업은 hello.txt 를 각 서버의 /home/hello.txt로 복사하는 작업이었습니다.
각각 서버로 들어가서 /home/hello.txt를 보면 우리가 만들었던 텍스트가 들어가있음을 확인할 수 있습니다.
그럼 이번엔 ansible로 pip3를 설치하고 Npm 이야기 pip, setuptools 를 업그레이드한다고 가정해봅시다. 현재 제가 설치해야 하는 서버들은 전부 우분투며 python3만 설치된 상태입니다.
새 파일 이름은 pip-install.yml로 하려고 합니다. 위에서 ansible.cfg같은 기본 설정 파일은 다 만들어줬으므로 추가해야 하는 파일은 infra/pip-install.yml, infra/roles/pip-install만 하면 됩니다.
infra/pip-install.yml
infra/pip-install/tasks/main.yml
이런식으로 만들어줍니다. main.yml에서 이번엔 apt, pip 모듈을 사용했습니다.
중간의 pip3, setuptools upgrade는 반복되므로, 아래처럼 loop를 쓸 수도 있습니다.
이후 다시 infra안에서 ansible-playbook pip-install.yml로 실행시키면 됩니다. 에러 나면 에러메시지를 보고 구글링해서 수정하면 끝. 전 이미 한번 한 상태라 ok만 뜨지만 처음 잘 되면 changed가 뜹니다.
핍 이해하기
다운로드, 열람은 기관인증 후에 가능합니다.
(구독기관 내 IP 이용 / 대학도서관 홈페이지 통해 접속)
개인로그인
개인회원 서비스 이용(알림서비스, 보관함 등)
네이버 아이디로 로그인
개인회원가입으로 더욱 편리하게 이용하세요. 개인 회원가입
아이디/비밀번호를 잊으셨나요? 아이디 찾기 비밀번호 찾기
논문 상세보기
디킨즈의 신사되기: 『위대한 유산』에 나타난 핍의 사회적 성장 분석
Dickens`` Gentlemanship: The Image of Pip`` Growth in Great Expectations
- 발행기관 : 조선대학교 인문학연구원
- 간행물 : 인문학연구 43권0호
- 간행물구분 : 연속간행물
- 발행년월 : 2012년 02월
- 페이지 : 33-51(19pages)
키워드 보기
초록 보기
UCI(KEPA)
간행물정보
- KISS주제분류 : 인문과학분야 > 기타(인문과학)
- 국내등재 : KCI등재
- 해외등재 :
- 간기 : 반년간
- ISSN(Print) : 1598-9259
- ISSN(Online) :
- 자료구분 : 학술지
- 간행물구분 : 연속간행물
- 수록범위 : 2000-2022
- 수록 논문수 : 563
저작권 안내
한국학술정보㈜의 모든 학술 자료는 각 학회 및 기관과 저작권 계약을 통해 제공하고 있습니다.
이에 본 자료를 상업적 이용, 무단 배포 등 불법적으로 이용할 시에는 저작권법 및 관계법령에 따른 책임을 질 수 있습니다.
자료제공: 네이버학술정보 |
---|
자료제공: 네이버학술정보 |
---|
KISS 콘텐츠를 사전허가 없이 무단으로 크롤링 및 복제, 배포할 경우 민형사상 책임을 Npm 이야기 물을 수 있습니다.
사업자등록번호 : 111-81-26181 통신판매업신고 : 파주-1250호 개인정보관리책임자 : 조동범
Copyright KISS. All rights reserved.
Data Report
국가지식⋅
공공저작물
마이페이지
내가 찾은 최근 검색어
최근 열람 자료
맞춤 논문
내 보관함
공유한 보관함
최근 검색어 저장
마이페이지 > 나의 검색 히스토리에 저장되었습니다.
최근 열람 자료 저장
Data Report
국가지식⋅
공공저작물
마이페이지
원문 보기 안내
원문파일이 존재하지 않거나 준비 중입니다.
본 자료는 원문파일이 존재하지 않거나 서비스를 위한 준비 중입니다.
빠른 시일 내에 서비스할 수 있도록 노력하겠습니다.
관련문의사항은 [email protected] 으로 연락주시기 바랍니다.
원문을 볼 권한이 없습니다.
KISS에서 서비스 중인 학술자료는 ㈜한국학술정보와 구독계약을 맺은 기관에
소속이신 분들만 이용이 가능하십니다.
구독기관 확인 및 문의
- 소속된 대학도서관에 Npm 이야기 확인 / 소속된 기관의 자료담당부서
- KISS 고객센터: [email protected]
구독기관의 교외접속방법
- 대학도서관홈페이지 로그인 후에 Npm 이야기 도서관 내 메뉴를 통해 접속
- 안내: KISS 고객센터 FAQ
구독기관에 속해 있지 않은 경우, 아래사이트에서 구매 가능합니다.
해당 자료는 원문이 제공되지 않습니다.
해당 자료는 발행기관과의 계약 만료, 혹은 저자 요청 등의 이유로 원문이 제공되지
않고 서지정보만 제공되고 있습니다.
관련 상세문의는 고객센터를 이용해 주시기 바랍니다.
0 개 댓글